; ModuleID = '<stdin>' source_filename = "pair_scan_by_key.cui" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" %"struct.thrust::system::detail::sequential::tag" = type { i8 } %"struct.thrust::detail::functional::actor" = type { i8 } %"struct.thrust::detail::functional::actor.0" = type { i8 } %"struct.thrust::detail::functional::actor.3" = type { i8 } %"struct.thrust::detail::functional::actor.6" = type { i8 } %"struct.thrust::detail::functional::actor.9" = type { i8 } %"struct.thrust::detail::functional::actor.12" = type { i8 } %"struct.thrust::detail::functional::actor.15" = type { i8 } %"struct.thrust::detail::functional::actor.18" = type { i8 } %"struct.thrust::detail::functional::actor.21" = type { i8 } %"struct.thrust::detail::functional::actor.24" = type { i8 } %"class.std::ios_base::Init" = type { i8 } %"struct.thrust::system::cuda::detail::bulk_::detail::cursor" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27" } %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28" } %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.29" } %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.29" = type { i8 } %"struct.thrust::detail::seq_t" = type { i8 } %"struct.thrust::system::cpp::detail::par_t" = type { i8 } %"struct.thrust::system::cuda::detail::par_t" = type { i8 } %class.VariableUnitTest = type { %class.UnitTest } %class.UnitTest = type { i32 (...)**, %"class.std::basic_string" } %"class.std::basic_string" = type { %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider" } %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider" = type { i8* } %"class.thrust::system::cuda::detail::cuda_error_category" = type { %"class.thrust::system::error_category" } %"class.thrust::system::error_category" = type { i32 (...)** } %"class.thrust::system::detail::system_error_category" = type { %"class.thrust::system::error_category" } %"class.thrust::system::detail::generic_error_category" = type { %"class.thrust::system::error_category" } %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] } %struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" = type { i32, [3 x i32], i32, i32, i32, i32, i32, i64, i32 } %"struct.thrust::system::detail::sequential::execution_policy" = type { i8 } %"class.thrust::detail::functional::argument" = type { i8 } %"class.thrust::detail::functional::argument.1" = type { i8 } %"class.thrust::detail::functional::argument.4" = type { i8 } %"class.thrust::detail::functional::argument.7" = type { i8 } %"class.thrust::detail::functional::argument.10" = type { i8 } %"class.thrust::detail::functional::argument.13" = type { i8 } %"class.thrust::detail::functional::argument.16" = type { i8 } %"class.thrust::detail::functional::argument.19" = type { i8 } %"class.thrust::detail::functional::argument.22" = type { i8 } %"class.thrust::detail::functional::argument.25" = type { i8 } %"struct.thrust::system::detail::sequential::execution_policy.30" = type { i8 } %"struct.thrust::system::cpp::detail::execution_policy" = type { i8 } %"struct.thrust::system::cuda::detail::execution_policy" = type { i8 } %"class.std::allocator" = type { i8 } %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep" = type { %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base" } %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base" = type { i64, i64, i32 } %"class.__gnu_cxx::new_allocator" = type { i8 } %"class.std::type_info" = type { i32 (...)**, i8* } %"class.std::vector" = type { %"struct.std::_Vector_base" } %"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl" } %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl" = type { i64*, i64*, i64* } %"struct.unittest::for_each_type" = type { i8 } %struct.TestPairScanByKey = type { i8 } %"struct.unittest::for_each_type.41" = type { i8 } %"class.std::allocator.38" = type { i8 } %"class.thrust::host_vector" = type { %"class.thrust::detail::vector_base" } %"class.thrust::detail::vector_base" = type { %"class.thrust::detail::contiguous_storage", i64 } %"class.thrust::detail::contiguous_storage" = type { %"class.std::allocator.42", %"class.thrust::detail::normal_iterator", i64 } %"class.std::allocator.42" = type { i8 } %"class.thrust::detail::normal_iterator" = type { %"class.thrust::iterator_adaptor" } %"class.thrust::iterator_adaptor" = type { i8* } %"class.thrust::host_vector.45" = type { %"class.thrust::detail::vector_base.46" } %"class.thrust::detail::vector_base.46" = type { %"class.thrust::detail::contiguous_storage.47", i64 } %"class.thrust::detail::contiguous_storage.47" = type { %"class.std::allocator.48", %"class.thrust::detail::normal_iterator.51", i64 } %"class.std::allocator.48" = type { i8 } %"class.thrust::detail::normal_iterator.51" = type { %"class.thrust::iterator_adaptor.52" } %"class.thrust::iterator_adaptor.52" = type { %"struct.thrust::pair"* } %"struct.thrust::pair" = type { i8, i8 } %struct.make_pair_functor = type { i8 } %"class.thrust::device_vector" = type { %"class.thrust::detail::vector_base.54" } %"class.thrust::detail::vector_base.54" = type { %"class.thrust::detail::contiguous_storage.55", i64 } %"class.thrust::detail::contiguous_storage.55" = type { %"class.thrust::device_malloc_allocator", %"class.thrust::detail::normal_iterator.56", i64 } %"class.thrust::device_malloc_allocator" = type { i8 } %"class.thrust::detail::normal_iterator.56" = type { %"class.thrust::iterator_adaptor.57" } %"class.thrust::iterator_adaptor.57" = type { %"class.thrust::device_ptr" } %"class.thrust::device_ptr" = type { %"class.thrust::pointer" } %"class.thrust::pointer" = type { %"class.thrust::iterator_adaptor.59" } %"class.thrust::iterator_adaptor.59" = type { i8* } %"class.thrust::device_vector.61" = type { %"class.thrust::detail::vector_base.62" } %"class.thrust::detail::vector_base.62" = type { %"class.thrust::detail::contiguous_storage.63", i64 } %"class.thrust::detail::contiguous_storage.63" = type { %"class.thrust::device_malloc_allocator.64", %"class.thrust::detail::normal_iterator.66", i64 } %"class.thrust::device_malloc_allocator.64" = type { i8 } %"class.thrust::detail::normal_iterator.66" = type { %"class.thrust::iterator_adaptor.67" } %"class.thrust::iterator_adaptor.67" = type { %"class.thrust::device_ptr.69" } %"class.thrust::device_ptr.69" = type { %"class.thrust::pointer.70" } %"class.thrust::pointer.70" = type { %"class.thrust::iterator_adaptor.71" } %"class.thrust::iterator_adaptor.71" = type { %"struct.thrust::pair"* } %"class.thrust::host_vector.73" = type { %"class.thrust::detail::vector_base.74" } %"class.thrust::detail::vector_base.74" = type { %"class.thrust::detail::contiguous_storage.75", i64 } %"class.thrust::detail::contiguous_storage.75" = type { %"class.std::allocator.76", %"class.thrust::detail::normal_iterator.79", i64 } %"class.std::allocator.76" = type { i8 } %"class.thrust::detail::normal_iterator.79" = type { %"class.thrust::iterator_adaptor.80" } %"class.thrust::iterator_adaptor.80" = type { i8* } %"struct.thrust::pair.82" = type { i32, i32 } %"struct.thrust::equal_to" = type { i8 } %struct.add_pairs = type { i8 } %struct.TestPairScanByKey.467 = type { i8 } %"struct.unittest::for_each_type.468" = type { i8 } %"class.thrust::counting_iterator" = type { %"class.thrust::iterator_adaptor.83" } %"class.thrust::iterator_adaptor.83" = type { i64 } %"struct.unittest::random_integer" = type { i8 } %"struct.thrust::system::cpp::detail::tag" = type { i8 } %"struct.thrust::execution_policy.88" = type { i8 } %"struct.thrust::detail::execution_policy_base.85" = type { i8 } %"struct.unittest::random_integer.176" = type { i8 } %"struct.thrust::system::cuda::detail::tag" = type { i8 } %"struct.thrust::execution_policy.120" = type { i8 } %"struct.thrust::detail::execution_policy_base.121" = type { i8 } %"class.unittest::UnitTestFailure" = type { %"class.unittest::UnitTestException" } %"class.unittest::UnitTestException" = type { %"class.std::basic_string" } %"struct.thrust::any_system_tag" = type { i8 } %"struct.thrust::execution_policy.89" = type { i8 } %"class.__gnu_cxx::new_allocator.43" = type { i8 } %"class.thrust::iterator_facade" = type { i8 } %"struct.thrust::detail::integral_constant" = type { i8 } %"struct.thrust::detail::has_trivial_copy_constructor" = type { i8 } %"struct.thrust::detail::fill_functor" = type { i8 } %"struct.thrust::detail::host_generate_functor" = type { %"struct.thrust::detail::fill_functor" } %"struct.thrust::system::detail::sequential::execution_policy.87" = type { i8 } %"struct.thrust::detail::wrapped_function" = type { %"struct.thrust::detail::host_generate_functor" } %"class.thrust::zip_iterator" = type { %"class.thrust::tuple" } %"class.thrust::tuple" = type { %"struct.thrust::detail::cons" } %"struct.thrust::detail::cons" = type { %"class.thrust::counting_iterator", %"struct.thrust::detail::cons.92" } %"struct.thrust::detail::cons.92" = type { %"class.thrust::detail::normal_iterator" } %"struct.thrust::detail::unary_transform_functor" = type { %"struct.unittest::random_integer" } %"struct.thrust::detail::wrapped_function.93" = type { %"struct.thrust::detail::unary_transform_functor" } %"class.thrust::detail::tuple_of_iterator_references" = type { %"class.thrust::tuple.94" } %"class.thrust::tuple.94" = type { %"struct.thrust::detail::cons.95" } %"struct.thrust::detail::cons.95" = type { i64, %"struct.thrust::detail::cons.96" } %"struct.thrust::detail::cons.96" = type { i8* } %"class.thrust::iterator_facade.91" = type { i8 } %"class.thrust::iterator_facade.84" = type { i8 } %"class.thrust::random::linear_congruential_engine" = type { i32 } %"class.thrust::random::uniform_int_distribution" = type { %"struct.thrust::pair" } %"struct.thrust::random::detail::static_mod" = type { i8 } %"class.thrust::random::uniform_real_distribution" = type { %"struct.thrust::pair.97" } %"struct.thrust::pair.97" = type { double, double } %"struct.thrust::random::detail::static_mod.98" = type { i8 } %"struct.thrust::detail::dereference_iterator" = type { i8 } %"struct.thrust::null_type" = type { i8 } %"struct.thrust::detail::increment_iterator" = type { i8 } %"class.__gnu_cxx::new_allocator.49" = type { i8 } %"class.thrust::iterator_facade.53" = type { i8 } %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator" = type { %"class.std::allocator.48"* } %"struct.thrust::detail::wrapped_function.99" = type { %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator" } %"class.thrust::zip_iterator.100" = type { %"class.thrust::tuple.102" } %"class.thrust::tuple.102" = type { %"struct.thrust::detail::cons.103" } %"struct.thrust::detail::cons.103" = type { %"class.thrust::detail::normal_iterator", %"struct.thrust::detail::cons.104" } %"struct.thrust::detail::cons.104" = type { %"class.thrust::detail::normal_iterator", %"struct.thrust::detail::cons.105" } %"struct.thrust::detail::cons.105" = type { %"class.thrust::detail::normal_iterator.51" } %"struct.thrust::detail::binary_transform_functor" = type { %struct.make_pair_functor } %"struct.thrust::detail::wrapped_function.106" = type { %"struct.thrust::detail::binary_transform_functor" } %"class.thrust::detail::tuple_of_iterator_references.107" = type { %"class.thrust::tuple.108" } %"class.thrust::tuple.108" = type { %"struct.thrust::detail::cons.109" } %"struct.thrust::detail::cons.109" = type { i8*, %"struct.thrust::detail::cons.110" } %"struct.thrust::detail::cons.110" = type { i8*, %"struct.thrust::detail::cons.111" } %"struct.thrust::detail::cons.111" = type { %"struct.thrust::pair"* } %"class.thrust::iterator_facade.101" = type { i8 } %"struct.thrust::random_access_traversal_tag" = type { i8 } %"class.thrust::detail::normal_iterator.112" = type { %"class.thrust::iterator_adaptor.113" } %"class.thrust::iterator_adaptor.113" = type { i8* } %"class.thrust::iterator_facade.60" = type { i8 } %"class.thrust::iterator_facade.58" = type { i8 } %"class.std::length_error" = type { %"class.std::logic_error" } %"class.std::logic_error" = type { %"class.std::exception", %"class.std::basic_string" } %"class.std::exception" = type { i32 (...)** } %"class.thrust::iterator_facade.114" = type { i8 } %"class.thrust::device_ptr.115" = type { %"class.thrust::pointer.116" } %"class.thrust::pointer.116" = type { %"class.thrust::iterator_adaptor.117" } %"class.thrust::iterator_adaptor.117" = type { i8* } %"struct.thrust::system::cuda::detail::execution_policy.119" = type { i8 } %"class.thrust::system::system_error" = type { %"class.std::runtime_error", %"class.thrust::system::error_code", %"class.std::basic_string" } %"class.std::runtime_error" = type { %"class.std::exception", %"class.std::basic_string" } %"class.thrust::system::error_code" = type { i32, %"class.thrust::system::error_category"* } %"class.thrust::system::error_condition" = type { i32, %"class.thrust::system::error_category"* } %"class.thrust::iterator_facade.118" = type { i8 } %"class.thrust::device_ptr.122" = type { %"class.thrust::pointer.123" } %"class.thrust::pointer.123" = type { %"class.thrust::iterator_adaptor.124" } %"class.thrust::iterator_adaptor.124" = type { i8* } %"class.std::bad_alloc" = type { %"class.std::exception" } %"class.thrust::pointer.126" = type { %"class.thrust::iterator_adaptor.127" } %"class.thrust::iterator_adaptor.127" = type { i8* } %"class.thrust::pointer.129" = type { %"class.thrust::iterator_adaptor.130" } %"class.thrust::iterator_adaptor.130" = type { i8* } %"class.thrust::system::detail::bad_alloc" = type { %"class.std::bad_alloc", %"class.std::basic_string" } %"class.thrust::iterator_facade.131" = type { i8 } %"class.thrust::iterator_facade.128" = type { i8 } %"class.thrust::iterator_facade.125" = type { i8 } %"struct.thrust::system::cuda::detail::cross_system" = type { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %"struct.thrust::system::cpp::detail::execution_policy.86" = type { i8 } %"struct.thrust::detail::execution_policy_base.132" = type { i8 } %"class.thrust::device_reference" = type { %"class.thrust::reference" } %"class.thrust::reference" = type { %"class.thrust::device_ptr" } %struct.CUstream_st = type opaque %"struct.thrust::execution_policy.133" = type { i8 } %"class.thrust::detail::normal_iterator.134" = type { %"class.thrust::iterator_adaptor.135" } %"class.thrust::iterator_adaptor.135" = type { %"struct.thrust::pair"* } %"class.thrust::iterator_facade.72" = type { i8 } %"class.thrust::iterator_facade.68" = type { i8 } %"class.thrust::iterator_facade.136" = type { i8 } %"class.thrust::device_ptr.137" = type { %"class.thrust::pointer.138" } %"class.thrust::pointer.138" = type { %"class.thrust::iterator_adaptor.139" } %"class.thrust::iterator_adaptor.139" = type { %"struct.thrust::pair"* } %"class.thrust::pointer.141" = type { %"class.thrust::iterator_adaptor.142" } %"class.thrust::iterator_adaptor.142" = type { %"struct.thrust::pair"* } %"class.thrust::iterator_facade.143" = type { i8 } %"class.thrust::iterator_facade.140" = type { i8 } %"class.thrust::device_reference.144" = type { %"class.thrust::reference.145" } %"class.thrust::reference.145" = type { %"class.thrust::device_ptr.69" } %"struct.thrust::detail::allocator_traits_detail::gozer" = type { i8 } %"struct.thrust::detail::wrapped_function.146" = type { %"struct.thrust::detail::allocator_traits_detail::gozer" } %"class.thrust::tuple.147" = type { %"struct.thrust::detail::cons.148" } %"struct.thrust::detail::cons.148" = type { i32*, %"struct.thrust::detail::cons.149" } %"struct.thrust::detail::cons.149" = type { i32* } %"class.thrust::system::cuda::detail::bulk_::parallel_group" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base" = type { %"class.thrust::system::cuda::detail::bulk_::concurrent_group", i32, i32 } %"class.thrust::system::cuda::detail::bulk_::concurrent_group" = type { %"class.thrust::system::cuda::detail::bulk_::parallel_group.150", i32 } %"class.thrust::system::cuda::detail::bulk_::parallel_group.150" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151" = type { %"class.thrust::system::cuda::detail::bulk_::agent", i32, i32 } %"class.thrust::system::cuda::detail::bulk_::agent" = type { i32 } %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel" = type { i8 } %"class.thrust::tuple.152" = type { %"struct.thrust::detail::cons.153" } %"struct.thrust::detail::cons.153" = type { i64*, %"struct.thrust::detail::cons.154" } %"struct.thrust::detail::cons.154" = type { i64* } %"class.thrust::system::cuda::detail::bulk_::future" = type <{ %struct.CUstream_st*, %struct.CUevent_st*, i8, [7 x i8] }> %struct.CUevent_st = type opaque %"class.thrust::system::cuda::detail::bulk_::async_launch" = type { i8, %"class.thrust::system::cuda::detail::bulk_::parallel_group", %struct.CUstream_st*, %struct.CUevent_st* } %"class.thrust::system::cuda::detail::bulk_::detail::closure" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.155" } %"class.thrust::tuple.155" = type { %"struct.thrust::detail::cons.156" } %"struct.thrust::detail::cons.156" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.157" } %"struct.thrust::detail::cons.157" = type { %"class.thrust::device_ptr.69", %"struct.thrust::detail::cons.158" } %"struct.thrust::detail::cons.158" = type { %"struct.thrust::detail::wrapped_function.146", %"struct.thrust::detail::cons.159" } %"struct.thrust::detail::cons.159" = type { i32 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.160" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.161" } %"class.thrust::tuple.161" = type { %"struct.thrust::detail::cons.162" } %"struct.thrust::detail::cons.162" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.163" } %"struct.thrust::detail::cons.163" = type { %"class.thrust::device_ptr.69", %"struct.thrust::detail::cons.164" } %"struct.thrust::detail::cons.164" = type { %"struct.thrust::detail::wrapped_function.146", %"struct.thrust::detail::cons.165" } %"struct.thrust::detail::cons.165" = type { i64 } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher" = type { i8 } %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t" = type { i64, i64, i32, i32, i32, i64 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %struct.cudaFuncAttributes = type { i64, i64, i64, i32, i32, i32, i32, i32 } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function" = type { i8 } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::tuple.173" = type { %"struct.thrust::detail::cons.174" } %"struct.thrust::detail::cons.174" = type { i32*, %"struct.thrust::detail::cons.175" } %"struct.thrust::detail::cons.175" = type { i32* } %struct.dim3 = type { i32, i32, i32 } %"class.__gnu_cxx::new_allocator.77" = type { i8 } %"class.thrust::iterator_facade.81" = type { i8 } %"struct.thrust::detail::has_trivial_copy_constructor.177" = type { i8 } %"struct.thrust::detail::fill_functor.178" = type { i8 } %"struct.thrust::detail::host_generate_functor.179" = type { %"struct.thrust::detail::fill_functor.178" } %"struct.thrust::detail::wrapped_function.180" = type { %"struct.thrust::detail::host_generate_functor.179" } %"class.thrust::zip_iterator.181" = type { %"class.thrust::tuple.183" } %"class.thrust::tuple.183" = type { %"struct.thrust::detail::cons.184" } %"struct.thrust::detail::cons.184" = type { %"class.thrust::counting_iterator", %"struct.thrust::detail::cons.185" } %"struct.thrust::detail::cons.185" = type { %"class.thrust::detail::normal_iterator.79" } %"struct.thrust::detail::unary_transform_functor.186" = type { %"struct.unittest::random_integer.176" } %"struct.thrust::detail::wrapped_function.187" = type { %"struct.thrust::detail::unary_transform_functor.186" } %"class.thrust::detail::tuple_of_iterator_references.188" = type { %"class.thrust::tuple.189" } %"class.thrust::tuple.189" = type { %"struct.thrust::detail::cons.190" } %"struct.thrust::detail::cons.190" = type { i64, %"struct.thrust::detail::cons.191" } %"struct.thrust::detail::cons.191" = type { i8* } %"class.thrust::iterator_facade.182" = type { i8 } %"class.thrust::random::uniform_int_distribution.192" = type { %"struct.thrust::pair.193" } %"struct.thrust::pair.193" = type { i32, i32 } %"class.thrust::detail::normal_iterator.194" = type { %"class.thrust::iterator_adaptor.195" } %"class.thrust::iterator_adaptor.195" = type { i8* } %"class.thrust::iterator_facade.196" = type { i8 } %"struct.thrust::detail::integral_constant.197" = type { i8 } %"class.thrust::detail::temporary_array" = type { %"class.thrust::detail::contiguous_storage.198" } %"class.thrust::detail::contiguous_storage.198" = type { %"struct.thrust::detail::no_throw_allocator", %"class.thrust::detail::normal_iterator.199", i64 } %"struct.thrust::detail::no_throw_allocator" = type { %"class.thrust::detail::temporary_allocator" } %"class.thrust::detail::temporary_allocator" = type { %"struct.thrust::system::cuda::detail::tag"* } %"class.thrust::detail::normal_iterator.199" = type { %"class.thrust::iterator_adaptor.200" } %"class.thrust::iterator_adaptor.200" = type { %"class.thrust::pointer.202" } %"class.thrust::pointer.202" = type { %"class.thrust::iterator_adaptor.203" } %"class.thrust::iterator_adaptor.203" = type { i32* } %"class.thrust::reference.205" = type { %"class.thrust::pointer.202" } %"struct.thrust::detail::binary_negate" = type { %"struct.thrust::equal_to" } %"class.thrust::detail::temporary_array.206" = type { %"class.thrust::detail::contiguous_storage.207" } %"class.thrust::detail::contiguous_storage.207" = type { %"struct.thrust::detail::no_throw_allocator.208", %"class.thrust::detail::normal_iterator.212", i64 } %"struct.thrust::detail::no_throw_allocator.208" = type { %"class.thrust::detail::temporary_allocator.209" } %"class.thrust::detail::temporary_allocator.209" = type { %"struct.thrust::system::cuda::detail::tag"* } %"class.thrust::detail::normal_iterator.212" = type { %"class.thrust::iterator_adaptor.213" } %"class.thrust::iterator_adaptor.213" = type { %"class.thrust::pointer.141" } %"struct.thrust::negate" = type { i8 } %"class.thrust::reference.215" = type { %"class.thrust::pointer.141" } %"class.thrust::zip_iterator.221" = type { %"class.thrust::tuple.223" } %"class.thrust::tuple.223" = type { %"struct.thrust::detail::cons.224" } %"struct.thrust::detail::cons.224" = type { %"class.thrust::detail::normal_iterator.212", %"struct.thrust::detail::cons.220" } %"struct.thrust::detail::cons.220" = type { %"class.thrust::detail::normal_iterator.199" } %"class.thrust::zip_iterator.216" = type { %"class.thrust::tuple.218" } %"class.thrust::tuple.218" = type { %"struct.thrust::detail::cons.219" } %"struct.thrust::detail::cons.219" = type { %"class.thrust::detail::normal_iterator.66", %"struct.thrust::detail::cons.220" } %"struct.thrust::system::detail::generic::detail::segmented_scan_functor" = type { %struct.add_pairs } %"class.thrust::iterator_facade.201" = type { i8 } %"class.thrust::iterator_facade.214" = type { i8 } %"class.thrust::iterator_facade.222" = type { i8 } %"class.thrust::detail::tagged_allocator" = type { i8 } %"class.thrust::iterator_facade.204" = type { i8 } %"struct.thrust::pair.225" = type { %"class.thrust::pointer.202", i64 } %"struct.thrust::pair.226" = type { %"class.thrust::pointer.202", i64 } %"struct.thrust::system::cuda::detail::cross_system.227" = type { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } %"struct.thrust::detail::execution_policy_base.229" = type { i8 } %"struct.thrust::execution_policy.228" = type { i8 } %"class.thrust::zip_iterator.230" = type { %"class.thrust::tuple.232" } %"class.thrust::tuple.232" = type { %"struct.thrust::detail::cons.233" } %"struct.thrust::detail::cons.233" = type { %"class.thrust::detail::normal_iterator.56", %"struct.thrust::detail::cons.234" } %"struct.thrust::detail::cons.234" = type { %"class.thrust::detail::normal_iterator.56", %"struct.thrust::detail::cons.220" } %"struct.thrust::detail::binary_transform_functor.235" = type { %"struct.thrust::detail::binary_negate" } %"struct.thrust::detail::wrapped_function.236" = type { %"struct.thrust::detail::binary_transform_functor.235" } %"class.thrust::iterator_facade.231" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.237" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.238" } %"class.thrust::tuple.238" = type { %"struct.thrust::detail::cons.239" } %"struct.thrust::detail::cons.239" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.240" } %"struct.thrust::detail::cons.240" = type { %"class.thrust::zip_iterator.230", %"struct.thrust::detail::cons.241" } %"struct.thrust::detail::cons.241" = type { %"struct.thrust::detail::wrapped_function.236", %"struct.thrust::detail::cons.159" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.249" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.250" } %"class.thrust::tuple.250" = type { %"struct.thrust::detail::cons.251" } %"struct.thrust::detail::cons.251" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.252" } %"struct.thrust::detail::cons.252" = type { %"class.thrust::zip_iterator.230", %"struct.thrust::detail::cons.253" } %"struct.thrust::detail::cons.253" = type { %"struct.thrust::detail::wrapped_function.236", %"struct.thrust::detail::cons.165" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::detail::advance_iterator" = type { i64 } %"class.thrust::detail::tagged_allocator.210" = type { i8 } %"struct.thrust::pair.261" = type { %"class.thrust::pointer.141", i64 } %"struct.thrust::pair.262" = type { %"class.thrust::pointer.141", i64 } %"struct.thrust::system::detail::generic::detail::new_value_if" = type { %"struct.thrust::negate", %"struct.thrust::pair" } %"class.thrust::zip_iterator.263" = type { %"class.thrust::tuple.265" } %"class.thrust::tuple.265" = type { %"struct.thrust::detail::cons.266" } %"struct.thrust::detail::cons.266" = type { %"class.thrust::detail::normal_iterator.66", %"struct.thrust::detail::cons.267" } %"struct.thrust::detail::cons.267" = type { %"class.thrust::detail::normal_iterator.199", %"struct.thrust::detail::cons.268" } %"struct.thrust::detail::cons.268" = type { %"class.thrust::detail::normal_iterator.212" } %"struct.thrust::detail::binary_transform_functor.269" = type { %"struct.thrust::system::detail::generic::detail::new_value_if" } %"struct.thrust::detail::wrapped_function.270" = type { %"struct.thrust::detail::binary_transform_functor.269" } %"class.thrust::iterator_facade.264" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.271" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.272" } %"class.thrust::tuple.272" = type { %"struct.thrust::detail::cons.273" } %"struct.thrust::detail::cons.273" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.274" } %"struct.thrust::detail::cons.274" = type { %"class.thrust::zip_iterator.263", %"struct.thrust::detail::cons.275" } %"struct.thrust::detail::cons.275" = type { %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::cons.159" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.283" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.284" } %"class.thrust::tuple.284" = type { %"struct.thrust::detail::cons.285" } %"struct.thrust::detail::cons.285" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.286" } %"struct.thrust::detail::cons.286" = type { %"class.thrust::zip_iterator.263", %"struct.thrust::detail::cons.287" } %"struct.thrust::detail::cons.287" = type { %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::cons.165" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::system::cuda::detail::bulk_::async_launch.295" = type { i8, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", %struct.CUstream_st*, %struct.CUevent_st* } %"class.thrust::system::cuda::detail::bulk_::parallel_group.296" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297" = type { %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", i32, i32 } %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298" = type { %"class.thrust::system::cuda::detail::bulk_::parallel_group.299", i32 } %"class.thrust::system::cuda::detail::bulk_::parallel_group.299" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300" = type { %"class.thrust::system::cuda::detail::bulk_::agent.301", i32 } %"class.thrust::system::cuda::detail::bulk_::agent.301" = type { i32 } %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n" = type { i8 } %"class.thrust::system::cuda::detail::aligned_decomposition" = type { i64, i64, i64, i64, i64 } %"class.thrust::detail::temporary_array.302" = type { %"class.thrust::detail::contiguous_storage.303" } %"class.thrust::detail::contiguous_storage.303" = type { %"struct.thrust::detail::no_throw_allocator.304", %"class.thrust::detail::normal_iterator.308", i64 } %"struct.thrust::detail::no_throw_allocator.304" = type { %"class.thrust::detail::temporary_allocator.305" } %"class.thrust::detail::temporary_allocator.305" = type { %"struct.thrust::system::cuda::detail::tag"* } %"class.thrust::detail::normal_iterator.308" = type { %"class.thrust::iterator_adaptor.309" } %"class.thrust::iterator_adaptor.309" = type { %"class.thrust::pointer.311" } %"class.thrust::pointer.311" = type { %"class.thrust::iterator_adaptor.312" } %"class.thrust::iterator_adaptor.312" = type { %"class.thrust::tuple.314"* } %"class.thrust::tuple.314" = type { %"struct.thrust::detail::cons.315" } %"struct.thrust::detail::cons.315" = type { %"struct.thrust::pair", %"struct.thrust::detail::cons.159" } %"class.thrust::system::cuda::detail::bulk_::async_launch.316" = type { i8, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", %struct.CUstream_st*, %struct.CUevent_st* } %"class.thrust::system::cuda::detail::bulk_::parallel_group.317" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318" = type { %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", i32, i32 } %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319" = type { %"class.thrust::system::cuda::detail::bulk_::parallel_group.320", i32 } %"class.thrust::system::cuda::detail::bulk_::parallel_group.320" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321" = type { %"class.thrust::system::cuda::detail::bulk_::agent.322", i32 } %"class.thrust::system::cuda::detail::bulk_::agent.322" = type { i32 } %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::async_launch.323" = type { i8, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", %struct.CUstream_st*, %struct.CUevent_st* } %"class.thrust::system::cuda::detail::bulk_::parallel_group.324" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325" = type { %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", i32, i32 } %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326" = type { %"class.thrust::system::cuda::detail::bulk_::parallel_group.327", i32 } %"class.thrust::system::cuda::detail::bulk_::parallel_group.327" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328" = type { %"class.thrust::system::cuda::detail::bulk_::agent.301", i32 } %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep" = type { i8 } %"class.thrust::iterator_facade.217" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.329" = type { %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", %"class.thrust::tuple.330" } %"class.thrust::tuple.330" = type { %"struct.thrust::detail::cons.331" } %"struct.thrust::detail::cons.331" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.332" } %"struct.thrust::detail::cons.332" = type { %"class.thrust::zip_iterator.221", %"struct.thrust::detail::cons.333" } %"struct.thrust::detail::cons.333" = type { i64, %"struct.thrust::detail::cons.334" } %"struct.thrust::detail::cons.334" = type <{ %"class.thrust::zip_iterator.216", %"struct.thrust::detail::cons.335", [7 x i8] }> %"struct.thrust::detail::cons.335" = type { %"struct.thrust::system::detail::generic::detail::segmented_scan_functor" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.344" = type { %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles", %"class.thrust::tuple.345" } %"class.thrust::tuple.345" = type { %"struct.thrust::detail::cons.346" } %"struct.thrust::detail::cons.346" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.347" } %"struct.thrust::detail::cons.347" = type { %"class.thrust::zip_iterator.221", %"struct.thrust::detail::cons.348" } %"struct.thrust::detail::cons.348" = type { %"class.thrust::system::cuda::detail::aligned_decomposition", %"struct.thrust::detail::cons.349" } %"struct.thrust::detail::cons.349" = type <{ %"class.thrust::detail::normal_iterator.308", %"struct.thrust::detail::cons.335", [7 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::closure.358" = type { %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", %"class.thrust::tuple.359" } %"class.thrust::tuple.359" = type { %"struct.thrust::detail::cons.360" } %"struct.thrust::detail::cons.360" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.361" } %"struct.thrust::detail::cons.361" = type { %"class.thrust::detail::normal_iterator.308", %"struct.thrust::detail::cons.362" } %"struct.thrust::detail::cons.362" = type { i64, %"struct.thrust::detail::cons.349" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.370" = type { %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep", %"class.thrust::tuple.371" } %"class.thrust::tuple.371" = type { %"struct.thrust::detail::cons.372" } %"struct.thrust::detail::cons.372" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.373" } %"struct.thrust::detail::cons.373" = type { %"class.thrust::zip_iterator.221", %"struct.thrust::detail::cons.374" } %"struct.thrust::detail::cons.374" = type { %"class.thrust::system::cuda::detail::aligned_decomposition", %"struct.thrust::detail::cons.375" } %"struct.thrust::detail::cons.375" = type { %"class.thrust::detail::normal_iterator.308", %"struct.thrust::detail::cons.334" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", %"class.thrust::system::cuda::detail::bulk_::parallel_group.296" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", [4 x i8] }> %"class.thrust::detail::tagged_allocator.306" = type { i8 } %"class.thrust::iterator_facade.313" = type { i8 } %"class.thrust::iterator_facade.310" = type { i8 } %"struct.thrust::pair.342" = type { %"class.thrust::pointer.311", i64 } %"struct.thrust::pair.343" = type { %"class.thrust::pointer.311", i64 } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.357", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.357" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", [4 x i8] }> %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.369", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.369" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", %"class.thrust::system::cuda::detail::bulk_::parallel_group.324" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", [4 x i8] }> %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.382", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.382" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::closure.383" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.384" } %"class.thrust::tuple.384" = type { %"struct.thrust::detail::cons.385" } %"struct.thrust::detail::cons.385" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.386" } %"struct.thrust::detail::cons.386" = type { %"class.thrust::pointer.311", %"struct.thrust::detail::cons.158" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.394" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.395" } %"class.thrust::tuple.395" = type { %"struct.thrust::detail::cons.396" } %"struct.thrust::detail::cons.396" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.397" } %"struct.thrust::detail::cons.397" = type { %"class.thrust::pointer.311", %"struct.thrust::detail::cons.164" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.405" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.406" } %"class.thrust::tuple.406" = type { %"struct.thrust::detail::cons.407" } %"struct.thrust::detail::cons.407" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.408" } %"struct.thrust::detail::cons.408" = type { %"class.thrust::pointer.141", %"struct.thrust::detail::cons.158" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.416" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.417" } %"class.thrust::tuple.417" = type { %"struct.thrust::detail::cons.418" } %"struct.thrust::detail::cons.418" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.419" } %"struct.thrust::detail::cons.419" = type { %"class.thrust::pointer.141", %"struct.thrust::detail::cons.164" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::detail::normal_iterator.427" = type { %"class.thrust::iterator_adaptor.428" } %"class.thrust::iterator_adaptor.428" = type { %"class.thrust::device_ptr.137" } %"class.std::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_stringbuf", %"class.std::basic_ios" } %"class.std::basic_ostream.base" = type { i32 (...)** } %"class.std::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::basic_string" } %"class.std::basic_streambuf" = type { i32 (...)**, i8*, i8*, i8*, i8*, i8*, i8*, %"class.std::locale" } %"class.std::locale" = type { %"class.std::locale::_Impl"* } %"class.std::locale::_Impl" = type { i32, %"class.std::locale::facet"**, i64, %"class.std::locale::facet"**, i8** } %"class.std::locale::facet" = type <{ i32 (...)**, i32, [4 x i8] }> %"class.std::basic_ios" = type { %"class.std::ios_base", %"class.std::basic_ostream"*, i8, i8, %"class.std::basic_streambuf"*, %"class.std::ctype"*, %"class.std::num_put"*, %"class.std::num_get"* } %"class.std::ios_base" = type { i32 (...)**, i64, i64, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, %"struct.std::ios_base::_Words"*, %"class.std::locale" } %"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"class.std::ios_base"*, i32)*, i32, i32 } %"struct.std::ios_base::_Words" = type { i8*, i64 } %"class.std::basic_ostream" = type { i32 (...)**, %"class.std::basic_ios" } %"class.std::ctype" = type <{ %"class.std::locale::facet.base", [4 x i8], %struct.__locale_struct*, i8, [7 x i8], i32*, i32*, i16*, i8, [256 x i8], [256 x i8], i8, [6 x i8] }> %"class.std::locale::facet.base" = type <{ i32 (...)**, i32 }> %struct.__locale_struct = type { [13 x %struct.__locale_data*], i16*, i32*, i32*, [13 x i8*] } %struct.__locale_data = type opaque %"class.std::num_put" = type { %"class.std::locale::facet.base", [4 x i8] } %"class.std::num_get" = type { %"class.std::locale::facet.base", [4 x i8] } %"struct.thrust::detail::is_same" = type { i8 } %"class.thrust::detail::move_to_system" = type { %"class.thrust::detail::tagged_iterator_range" } %"class.thrust::detail::tagged_iterator_range" = type { %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator" } %"class.thrust::detail::tagged_iterator" = type { %"class.thrust::iterator_adaptor.430" } %"class.thrust::iterator_adaptor.430" = type { %"class.thrust::detail::normal_iterator.134" } %"class.thrust::detail::move_to_system.432" = type { %"class.thrust::detail::temporary_array.433" } %"class.thrust::detail::temporary_array.433" = type { %"class.thrust::detail::contiguous_storage.434" } %"class.thrust::detail::contiguous_storage.434" = type { %"struct.thrust::detail::no_throw_allocator.435", %"class.thrust::detail::normal_iterator.439", i64 } %"struct.thrust::detail::no_throw_allocator.435" = type { %"class.thrust::detail::temporary_allocator.436" } %"class.thrust::detail::temporary_allocator.436" = type { %"struct.thrust::system::cpp::detail::tag"* } %"class.thrust::detail::normal_iterator.439" = type { %"class.thrust::iterator_adaptor.440" } %"class.thrust::iterator_adaptor.440" = type { %"class.thrust::pointer.442" } %"class.thrust::pointer.442" = type { %"class.thrust::iterator_adaptor.443" } %"class.thrust::iterator_adaptor.443" = type { %"struct.thrust::pair"* } %"class.thrust::iterator_facade.429" = type { i8 } %"class.thrust::iterator_facade.431" = type { i8 } %"class.thrust::detail::tagged_allocator.437" = type { i8 } %"class.thrust::iterator_facade.444" = type { i8 } %"class.thrust::iterator_facade.441" = type { i8 } %"struct.thrust::pair.445" = type { %"class.thrust::pointer.442", i64 } %"struct.thrust::pair.446" = type { %"class.thrust::pointer.442", i64 } %"class.thrust::pointer.447" = type { %"class.thrust::iterator_adaptor.448" } %"class.thrust::iterator_adaptor.448" = type { i8* } %"class.thrust::iterator_facade.449" = type { i8 } %"class.thrust::reference.450" = type { %"class.thrust::pointer.442" } %"class.thrust::device_reference.451" = type { %"class.thrust::reference.452" } %"class.thrust::reference.452" = type { %"class.thrust::device_ptr.137" } %"struct.thrust::detail::equal_to" = type { i8 } %"struct.thrust::pair.453" = type { %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::normal_iterator.439" } %"class.thrust::zip_iterator.454" = type { %"class.thrust::tuple.456" } %"class.thrust::tuple.456" = type { %"struct.thrust::detail::cons.457" } %"struct.thrust::detail::cons.457" = type { %"class.thrust::detail::tagged_iterator", %"struct.thrust::detail::cons.458" } %"struct.thrust::detail::cons.458" = type { %"class.thrust::detail::normal_iterator.439" } %"struct.thrust::detail::tuple_binary_predicate" = type { %"struct.thrust::detail::equal_to" } %"class.thrust::iterator_facade.455" = type { i8 } %"struct.thrust::detail::unary_negate" = type { %"struct.thrust::detail::tuple_binary_predicate" } %"struct.thrust::detail::wrapped_function.459" = type { %"struct.thrust::detail::unary_negate" } %"class.thrust::detail::tuple_of_iterator_references.460" = type { %"class.thrust::tuple.461" } %"class.thrust::tuple.461" = type { %"struct.thrust::detail::cons.462" } %"struct.thrust::detail::cons.462" = type { %"struct.thrust::pair"*, %"struct.thrust::detail::cons.463" } %"struct.thrust::detail::cons.463" = type { %"class.thrust::reference.450" } %"class.thrust::detail::tuple_of_iterator_references.464" = type { %"class.thrust::tuple.465" } %"class.thrust::tuple.465" = type { %"struct.thrust::detail::cons.466" } %"struct.thrust::detail::cons.466" = type { %"struct.thrust::pair"*, %"struct.thrust::detail::cons.111" } %"struct.thrust::detail::raw_reference_caster" = type { i8 } %"struct.std::__false_type" = type { i8 } %"struct.std::forward_iterator_tag" = type { i8 } %"struct.std::random_access_iterator_tag" = type { i8 } %"class.thrust::host_vector.469" = type { %"class.thrust::detail::vector_base.470" } %"class.thrust::detail::vector_base.470" = type { %"class.thrust::detail::contiguous_storage.471", i64 } %"class.thrust::detail::contiguous_storage.471" = type { %"class.std::allocator.472", %"class.thrust::detail::normal_iterator.475", i64 } %"class.std::allocator.472" = type { i8 } %"class.thrust::detail::normal_iterator.475" = type { %"class.thrust::iterator_adaptor.476" } %"class.thrust::iterator_adaptor.476" = type { i16* } %"class.thrust::host_vector.478" = type { %"class.thrust::detail::vector_base.479" } %"class.thrust::detail::vector_base.479" = type { %"class.thrust::detail::contiguous_storage.480", i64 } %"class.thrust::detail::contiguous_storage.480" = type { %"class.std::allocator.481", %"class.thrust::detail::normal_iterator.484", i64 } %"class.std::allocator.481" = type { i8 } %"class.thrust::detail::normal_iterator.484" = type { %"class.thrust::iterator_adaptor.485" } %"class.thrust::iterator_adaptor.485" = type { %"struct.thrust::pair.487"* } %"struct.thrust::pair.487" = type { i16, i16 } %"class.thrust::device_vector.488" = type { %"class.thrust::detail::vector_base.489" } %"class.thrust::detail::vector_base.489" = type { %"class.thrust::detail::contiguous_storage.490", i64 } %"class.thrust::detail::contiguous_storage.490" = type { %"class.thrust::device_malloc_allocator.491", %"class.thrust::detail::normal_iterator.493", i64 } %"class.thrust::device_malloc_allocator.491" = type { i8 } %"class.thrust::detail::normal_iterator.493" = type { %"class.thrust::iterator_adaptor.494" } %"class.thrust::iterator_adaptor.494" = type { %"class.thrust::device_ptr.496" } %"class.thrust::device_ptr.496" = type { %"class.thrust::pointer.497" } %"class.thrust::pointer.497" = type { %"class.thrust::iterator_adaptor.498" } %"class.thrust::iterator_adaptor.498" = type { i16* } %"class.thrust::device_vector.500" = type { %"class.thrust::detail::vector_base.501" } %"class.thrust::detail::vector_base.501" = type { %"class.thrust::detail::contiguous_storage.502", i64 } %"class.thrust::detail::contiguous_storage.502" = type { %"class.thrust::device_malloc_allocator.503", %"class.thrust::detail::normal_iterator.505", i64 } %"class.thrust::device_malloc_allocator.503" = type { i8 } %"class.thrust::detail::normal_iterator.505" = type { %"class.thrust::iterator_adaptor.506" } %"class.thrust::iterator_adaptor.506" = type { %"class.thrust::device_ptr.508" } %"class.thrust::device_ptr.508" = type { %"class.thrust::pointer.509" } %"class.thrust::pointer.509" = type { %"class.thrust::iterator_adaptor.510" } %"class.thrust::iterator_adaptor.510" = type { %"struct.thrust::pair.487"* } %"struct.thrust::equal_to.512" = type { i8 } %struct.TestPairScanByKey.833 = type { i8 } %"struct.unittest::for_each_type.834" = type { i8 } %"struct.unittest::random_integer.513" = type { i8 } %"class.__gnu_cxx::new_allocator.473" = type { i8 } %"class.thrust::iterator_facade.477" = type { i8 } %"struct.thrust::detail::has_trivial_copy_constructor.514" = type { i8 } %"struct.thrust::detail::fill_functor.515" = type { i16 } %"struct.thrust::detail::host_generate_functor.516" = type { %"struct.thrust::detail::fill_functor.515" } %"struct.thrust::detail::wrapped_function.517" = type { %"struct.thrust::detail::host_generate_functor.516" } %"class.thrust::zip_iterator.518" = type { %"class.thrust::tuple.520" } %"class.thrust::tuple.520" = type { %"struct.thrust::detail::cons.521" } %"struct.thrust::detail::cons.521" = type { %"class.thrust::counting_iterator", %"struct.thrust::detail::cons.522" } %"struct.thrust::detail::cons.522" = type { %"class.thrust::detail::normal_iterator.475" } %"struct.thrust::detail::unary_transform_functor.523" = type { %"struct.unittest::random_integer.513" } %"struct.thrust::detail::wrapped_function.524" = type { %"struct.thrust::detail::unary_transform_functor.523" } %"class.thrust::detail::tuple_of_iterator_references.525" = type { %"class.thrust::tuple.526" } %"class.thrust::tuple.526" = type { %"struct.thrust::detail::cons.527" } %"struct.thrust::detail::cons.527" = type { i64, %"struct.thrust::detail::cons.528" } %"struct.thrust::detail::cons.528" = type { i16* } %"class.thrust::iterator_facade.519" = type { i8 } %"class.thrust::random::uniform_int_distribution.529" = type { %"struct.thrust::pair.487" } %"class.__gnu_cxx::new_allocator.482" = type { i8 } %"class.thrust::iterator_facade.486" = type { i8 } %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530" = type { %"class.std::allocator.481"* } %"struct.thrust::detail::wrapped_function.531" = type { %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530" } %"class.thrust::zip_iterator.532" = type { %"class.thrust::tuple.534" } %"class.thrust::tuple.534" = type { %"struct.thrust::detail::cons.535" } %"struct.thrust::detail::cons.535" = type { %"class.thrust::detail::normal_iterator.475", %"struct.thrust::detail::cons.536" } %"struct.thrust::detail::cons.536" = type { %"class.thrust::detail::normal_iterator.475", %"struct.thrust::detail::cons.537" } %"struct.thrust::detail::cons.537" = type { %"class.thrust::detail::normal_iterator.484" } %"class.thrust::detail::tuple_of_iterator_references.538" = type { %"class.thrust::tuple.539" } %"class.thrust::tuple.539" = type { %"struct.thrust::detail::cons.540" } %"struct.thrust::detail::cons.540" = type { i16*, %"struct.thrust::detail::cons.541" } %"struct.thrust::detail::cons.541" = type { i16*, %"struct.thrust::detail::cons.542" } %"struct.thrust::detail::cons.542" = type { %"struct.thrust::pair.487"* } %"class.thrust::iterator_facade.533" = type { i8 } %"class.thrust::detail::normal_iterator.543" = type { %"class.thrust::iterator_adaptor.544" } %"class.thrust::iterator_adaptor.544" = type { i16* } %"class.thrust::iterator_facade.499" = type { i8 } %"class.thrust::iterator_facade.495" = type { i8 } %"class.thrust::iterator_facade.545" = type { i8 } %"class.thrust::device_ptr.546" = type { %"class.thrust::pointer.547" } %"class.thrust::pointer.547" = type { %"class.thrust::iterator_adaptor.548" } %"class.thrust::iterator_adaptor.548" = type { i16* } %"class.thrust::pointer.550" = type { %"class.thrust::iterator_adaptor.551" } %"class.thrust::iterator_adaptor.551" = type { i16* } %"class.thrust::iterator_facade.552" = type { i8 } %"class.thrust::iterator_facade.549" = type { i8 } %"class.thrust::device_reference.553" = type { %"class.thrust::reference.554" } %"class.thrust::reference.554" = type { %"class.thrust::device_ptr.496" } %"class.thrust::detail::normal_iterator.555" = type { %"class.thrust::iterator_adaptor.556" } %"class.thrust::iterator_adaptor.556" = type { %"struct.thrust::pair.487"* } %"class.thrust::iterator_facade.511" = type { i8 } %"class.thrust::iterator_facade.507" = type { i8 } %"class.thrust::iterator_facade.557" = type { i8 } %"class.thrust::device_ptr.558" = type { %"class.thrust::pointer.559" } %"class.thrust::pointer.559" = type { %"class.thrust::iterator_adaptor.560" } %"class.thrust::iterator_adaptor.560" = type { %"struct.thrust::pair.487"* } %"class.thrust::pointer.562" = type { %"class.thrust::iterator_adaptor.563" } %"class.thrust::iterator_adaptor.563" = type { %"struct.thrust::pair.487"* } %"class.thrust::iterator_facade.564" = type { i8 } %"class.thrust::iterator_facade.561" = type { i8 } %"class.thrust::device_reference.565" = type { %"class.thrust::reference.566" } %"class.thrust::reference.566" = type { %"class.thrust::device_ptr.508" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.567" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.568" } %"class.thrust::tuple.568" = type { %"struct.thrust::detail::cons.569" } %"struct.thrust::detail::cons.569" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.570" } %"struct.thrust::detail::cons.570" = type { %"class.thrust::device_ptr.508", %"struct.thrust::detail::cons.158" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.578" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.579" } %"class.thrust::tuple.579" = type { %"struct.thrust::detail::cons.580" } %"struct.thrust::detail::cons.580" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.581" } %"struct.thrust::detail::cons.581" = type { %"class.thrust::device_ptr.508", %"struct.thrust::detail::cons.164" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::detail::binary_negate.589" = type { %"struct.thrust::equal_to.512" } %"class.thrust::detail::temporary_array.590" = type { %"class.thrust::detail::contiguous_storage.591" } %"class.thrust::detail::contiguous_storage.591" = type { %"struct.thrust::detail::no_throw_allocator.592", %"class.thrust::detail::normal_iterator.596", i64 } %"struct.thrust::detail::no_throw_allocator.592" = type { %"class.thrust::detail::temporary_allocator.593" } %"class.thrust::detail::temporary_allocator.593" = type { %"struct.thrust::system::cuda::detail::tag"* } %"class.thrust::detail::normal_iterator.596" = type { %"class.thrust::iterator_adaptor.597" } %"class.thrust::iterator_adaptor.597" = type { %"class.thrust::pointer.562" } %"class.thrust::reference.599" = type { %"class.thrust::pointer.562" } %"class.thrust::zip_iterator.604" = type { %"class.thrust::tuple.606" } %"class.thrust::tuple.606" = type { %"struct.thrust::detail::cons.607" } %"struct.thrust::detail::cons.607" = type { %"class.thrust::detail::normal_iterator.596", %"struct.thrust::detail::cons.220" } %"class.thrust::zip_iterator.600" = type { %"class.thrust::tuple.602" } %"class.thrust::tuple.602" = type { %"struct.thrust::detail::cons.603" } %"struct.thrust::detail::cons.603" = type { %"class.thrust::detail::normal_iterator.505", %"struct.thrust::detail::cons.220" } %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608" = type { %struct.add_pairs } %"class.thrust::iterator_facade.598" = type { i8 } %"class.thrust::iterator_facade.605" = type { i8 } %"class.thrust::zip_iterator.609" = type { %"class.thrust::tuple.611" } %"class.thrust::tuple.611" = type { %"struct.thrust::detail::cons.612" } %"struct.thrust::detail::cons.612" = type { %"class.thrust::detail::normal_iterator.493", %"struct.thrust::detail::cons.613" } %"struct.thrust::detail::cons.613" = type { %"class.thrust::detail::normal_iterator.493", %"struct.thrust::detail::cons.220" } %"struct.thrust::detail::binary_transform_functor.614" = type { %"struct.thrust::detail::binary_negate.589" } %"struct.thrust::detail::wrapped_function.615" = type { %"struct.thrust::detail::binary_transform_functor.614" } %"class.thrust::iterator_facade.610" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.616" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.617" } %"class.thrust::tuple.617" = type { %"struct.thrust::detail::cons.618" } %"struct.thrust::detail::cons.618" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.619" } %"struct.thrust::detail::cons.619" = type { %"class.thrust::zip_iterator.609", %"struct.thrust::detail::cons.620" } %"struct.thrust::detail::cons.620" = type { %"struct.thrust::detail::wrapped_function.615", %"struct.thrust::detail::cons.159" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.628" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.629" } %"class.thrust::tuple.629" = type { %"struct.thrust::detail::cons.630" } %"struct.thrust::detail::cons.630" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.631" } %"struct.thrust::detail::cons.631" = type { %"class.thrust::zip_iterator.609", %"struct.thrust::detail::cons.632" } %"struct.thrust::detail::cons.632" = type { %"struct.thrust::detail::wrapped_function.615", %"struct.thrust::detail::cons.165" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::detail::tagged_allocator.594" = type { i8 } %"struct.thrust::pair.640" = type { %"class.thrust::pointer.562", i64 } %"struct.thrust::pair.641" = type { %"class.thrust::pointer.562", i64 } %"struct.thrust::system::detail::generic::detail::new_value_if.642" = type { %"struct.thrust::negate", %"struct.thrust::pair.487" } %"class.thrust::zip_iterator.643" = type { %"class.thrust::tuple.645" } %"class.thrust::tuple.645" = type { %"struct.thrust::detail::cons.646" } %"struct.thrust::detail::cons.646" = type { %"class.thrust::detail::normal_iterator.505", %"struct.thrust::detail::cons.647" } %"struct.thrust::detail::cons.647" = type { %"class.thrust::detail::normal_iterator.199", %"struct.thrust::detail::cons.648" } %"struct.thrust::detail::cons.648" = type { %"class.thrust::detail::normal_iterator.596" } %"struct.thrust::detail::binary_transform_functor.649" = type { %"struct.thrust::system::detail::generic::detail::new_value_if.642" } %"struct.thrust::detail::wrapped_function.650" = type { %"struct.thrust::detail::binary_transform_functor.649" } %"class.thrust::iterator_facade.644" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.651" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", [7 x i8], %"class.thrust::tuple.652" } %"class.thrust::tuple.652" = type { %"struct.thrust::detail::cons.653" } %"struct.thrust::detail::cons.653" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", [7 x i8], %"struct.thrust::detail::cons.654" } %"struct.thrust::detail::cons.654" = type <{ %"class.thrust::zip_iterator.643", %"struct.thrust::detail::cons.655", [4 x i8] }> %"struct.thrust::detail::cons.655" = type { %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::cons.159" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.664" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.665" } %"class.thrust::tuple.665" = type { %"struct.thrust::detail::cons.666" } %"struct.thrust::detail::cons.666" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.667" } %"struct.thrust::detail::cons.667" = type { %"class.thrust::zip_iterator.643", %"struct.thrust::detail::cons.668" } %"struct.thrust::detail::cons.668" = type { %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::cons.165" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.659" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.662", i32, [4 x i8] } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.662" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.651", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.671" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.674", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.674" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.664", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::detail::temporary_array.676" = type { %"class.thrust::detail::contiguous_storage.677" } %"class.thrust::detail::contiguous_storage.677" = type { %"struct.thrust::detail::no_throw_allocator.678", %"class.thrust::detail::normal_iterator.682", i64 } %"struct.thrust::detail::no_throw_allocator.678" = type { %"class.thrust::detail::temporary_allocator.679" } %"class.thrust::detail::temporary_allocator.679" = type { %"struct.thrust::system::cuda::detail::tag"* } %"class.thrust::detail::normal_iterator.682" = type { %"class.thrust::iterator_adaptor.683" } %"class.thrust::iterator_adaptor.683" = type { %"class.thrust::pointer.685" } %"class.thrust::pointer.685" = type { %"class.thrust::iterator_adaptor.686" } %"class.thrust::iterator_adaptor.686" = type { %"class.thrust::tuple.688"* } %"class.thrust::tuple.688" = type { %"struct.thrust::detail::cons.689" } %"struct.thrust::detail::cons.689" = type { %"struct.thrust::pair.487", %"struct.thrust::detail::cons.159" } %"class.thrust::iterator_facade.601" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.690" = type { %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", %"class.thrust::tuple.691" } %"class.thrust::tuple.691" = type { %"struct.thrust::detail::cons.692" } %"struct.thrust::detail::cons.692" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.693" } %"struct.thrust::detail::cons.693" = type { %"class.thrust::zip_iterator.604", %"struct.thrust::detail::cons.694" } %"struct.thrust::detail::cons.694" = type { i64, %"struct.thrust::detail::cons.695" } %"struct.thrust::detail::cons.695" = type <{ %"class.thrust::zip_iterator.600", %"struct.thrust::detail::cons.696", [7 x i8] }> %"struct.thrust::detail::cons.696" = type { %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.707" = type { %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles", %"class.thrust::tuple.708" } %"class.thrust::tuple.708" = type { %"struct.thrust::detail::cons.709" } %"struct.thrust::detail::cons.709" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.710" } %"struct.thrust::detail::cons.710" = type { %"class.thrust::zip_iterator.604", %"struct.thrust::detail::cons.711" } %"struct.thrust::detail::cons.711" = type { %"class.thrust::system::cuda::detail::aligned_decomposition", %"struct.thrust::detail::cons.712" } %"struct.thrust::detail::cons.712" = type <{ %"class.thrust::detail::normal_iterator.682", %"struct.thrust::detail::cons.696", [7 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::closure.721" = type { %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", %"class.thrust::tuple.722" } %"class.thrust::tuple.722" = type { %"struct.thrust::detail::cons.723" } %"struct.thrust::detail::cons.723" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.724" } %"struct.thrust::detail::cons.724" = type { %"class.thrust::detail::normal_iterator.682", %"struct.thrust::detail::cons.725" } %"struct.thrust::detail::cons.725" = type { i64, %"struct.thrust::detail::cons.712" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.733" = type { %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep", %"class.thrust::tuple.734" } %"class.thrust::tuple.734" = type { %"struct.thrust::detail::cons.735" } %"struct.thrust::detail::cons.735" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.736" } %"struct.thrust::detail::cons.736" = type { %"class.thrust::zip_iterator.604", %"struct.thrust::detail::cons.737" } %"struct.thrust::detail::cons.737" = type { %"class.thrust::system::cuda::detail::aligned_decomposition", %"struct.thrust::detail::cons.738" } %"struct.thrust::detail::cons.738" = type { %"class.thrust::detail::normal_iterator.682", %"struct.thrust::detail::cons.695" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.698" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.699" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.699" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.702" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.704", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.704" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.690", %"class.thrust::system::cuda::detail::bulk_::parallel_group.296" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.700" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.703" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.690", %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", [4 x i8] }> %"class.thrust::detail::tagged_allocator.680" = type { i8 } %"class.thrust::iterator_facade.687" = type { i8 } %"class.thrust::iterator_facade.684" = type { i8 } %"struct.thrust::pair.705" = type { %"class.thrust::pointer.685", i64 } %"struct.thrust::pair.706" = type { %"class.thrust::pointer.685", i64 } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.714" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.715" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.715" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.718" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.720", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.720" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.707", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.716" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.719" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.707", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", [4 x i8] }> %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.726" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.727" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.727" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.730" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.732", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.732" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.721", %"class.thrust::system::cuda::detail::bulk_::parallel_group.324" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.728" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.731" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.721", %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", [4 x i8] }> %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.739" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.740" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.740" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.743" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.745", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.745" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.733", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.741" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.744" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.733", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::closure.746" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.747" } %"class.thrust::tuple.747" = type { %"struct.thrust::detail::cons.748" } %"struct.thrust::detail::cons.748" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.749" } %"struct.thrust::detail::cons.749" = type { %"class.thrust::pointer.685", %"struct.thrust::detail::cons.158" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.757" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.758" } %"class.thrust::tuple.758" = type { %"struct.thrust::detail::cons.759" } %"struct.thrust::detail::cons.759" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.760" } %"struct.thrust::detail::cons.760" = type { %"class.thrust::pointer.685", %"struct.thrust::detail::cons.164" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.750" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.751" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.751" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.752" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.754" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.755", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.755" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.746", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.761" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.762" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.762" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.763" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.765" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.766", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.766" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.757", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.768" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.769" } %"class.thrust::tuple.769" = type { %"struct.thrust::detail::cons.770" } %"struct.thrust::detail::cons.770" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.771" } %"struct.thrust::detail::cons.771" = type { %"class.thrust::pointer.562", %"struct.thrust::detail::cons.158" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.779" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.780" } %"class.thrust::tuple.780" = type { %"struct.thrust::detail::cons.781" } %"struct.thrust::detail::cons.781" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.782" } %"struct.thrust::detail::cons.782" = type { %"class.thrust::pointer.562", %"struct.thrust::detail::cons.164" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.772" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.773" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.773" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.774" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.776" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.777", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.777" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.768", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.783" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.784" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.784" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.785" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.787" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.788", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.788" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.779", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::detail::normal_iterator.790" = type { %"class.thrust::iterator_adaptor.791" } %"class.thrust::iterator_adaptor.791" = type { %"class.thrust::device_ptr.558" } %"class.thrust::detail::move_to_system.793" = type { %"class.thrust::detail::tagged_iterator_range.794" } %"class.thrust::detail::tagged_iterator_range.794" = type { %"class.thrust::detail::tagged_iterator.795", %"class.thrust::detail::tagged_iterator.795" } %"class.thrust::detail::tagged_iterator.795" = type { %"class.thrust::iterator_adaptor.796" } %"class.thrust::iterator_adaptor.796" = type { %"class.thrust::detail::normal_iterator.555" } %"class.thrust::detail::move_to_system.798" = type { %"class.thrust::detail::temporary_array.799" } %"class.thrust::detail::temporary_array.799" = type { %"class.thrust::detail::contiguous_storage.800" } %"class.thrust::detail::contiguous_storage.800" = type { %"struct.thrust::detail::no_throw_allocator.801", %"class.thrust::detail::normal_iterator.805", i64 } %"struct.thrust::detail::no_throw_allocator.801" = type { %"class.thrust::detail::temporary_allocator.802" } %"class.thrust::detail::temporary_allocator.802" = type { %"struct.thrust::system::cpp::detail::tag"* } %"class.thrust::detail::normal_iterator.805" = type { %"class.thrust::iterator_adaptor.806" } %"class.thrust::iterator_adaptor.806" = type { %"class.thrust::pointer.808" } %"class.thrust::pointer.808" = type { %"class.thrust::iterator_adaptor.809" } %"class.thrust::iterator_adaptor.809" = type { %"struct.thrust::pair.487"* } %"class.thrust::iterator_facade.792" = type { i8 } %"class.thrust::iterator_facade.797" = type { i8 } %"class.thrust::detail::tagged_allocator.803" = type { i8 } %"class.thrust::iterator_facade.810" = type { i8 } %"class.thrust::iterator_facade.807" = type { i8 } %"struct.thrust::pair.811" = type { %"class.thrust::pointer.808", i64 } %"struct.thrust::pair.812" = type { %"class.thrust::pointer.808", i64 } %"class.thrust::reference.813" = type { %"class.thrust::pointer.808" } %"class.thrust::device_reference.814" = type { %"class.thrust::reference.815" } %"class.thrust::reference.815" = type { %"class.thrust::device_ptr.558" } %"struct.thrust::detail::equal_to.816" = type { i8 } %"struct.thrust::pair.817" = type { %"class.thrust::detail::tagged_iterator.795", %"class.thrust::detail::normal_iterator.805" } %"class.thrust::zip_iterator.818" = type { %"class.thrust::tuple.820" } %"class.thrust::tuple.820" = type { %"struct.thrust::detail::cons.821" } %"struct.thrust::detail::cons.821" = type { %"class.thrust::detail::tagged_iterator.795", %"struct.thrust::detail::cons.822" } %"struct.thrust::detail::cons.822" = type { %"class.thrust::detail::normal_iterator.805" } %"struct.thrust::detail::tuple_binary_predicate.823" = type { %"struct.thrust::detail::equal_to.816" } %"class.thrust::iterator_facade.819" = type { i8 } %"struct.thrust::detail::unary_negate.824" = type { %"struct.thrust::detail::tuple_binary_predicate.823" } %"struct.thrust::detail::wrapped_function.825" = type { %"struct.thrust::detail::unary_negate.824" } %"class.thrust::detail::tuple_of_iterator_references.826" = type { %"class.thrust::tuple.827" } %"class.thrust::tuple.827" = type { %"struct.thrust::detail::cons.828" } %"struct.thrust::detail::cons.828" = type { %"struct.thrust::pair.487"*, %"struct.thrust::detail::cons.829" } %"struct.thrust::detail::cons.829" = type { %"class.thrust::reference.813" } %"class.thrust::detail::tuple_of_iterator_references.830" = type { %"class.thrust::tuple.831" } %"class.thrust::tuple.831" = type { %"struct.thrust::detail::cons.832" } %"struct.thrust::detail::cons.832" = type { %"struct.thrust::pair.487"*, %"struct.thrust::detail::cons.542" } %"class.thrust::host_vector.835" = type { %"class.thrust::detail::vector_base.836" } %"class.thrust::detail::vector_base.836" = type { %"class.thrust::detail::contiguous_storage.837", i64 } %"class.thrust::detail::contiguous_storage.837" = type { %"class.std::allocator.838", %"class.thrust::detail::normal_iterator.841", i64 } %"class.std::allocator.838" = type { i8 } %"class.thrust::detail::normal_iterator.841" = type { %"class.thrust::iterator_adaptor.842" } %"class.thrust::iterator_adaptor.842" = type { i32* } %"class.thrust::host_vector.844" = type { %"class.thrust::detail::vector_base.845" } %"class.thrust::detail::vector_base.845" = type { %"class.thrust::detail::contiguous_storage.846", i64 } %"class.thrust::detail::contiguous_storage.846" = type { %"class.std::allocator.847", %"class.thrust::detail::normal_iterator.850", i64 } %"class.std::allocator.847" = type { i8 } %"class.thrust::detail::normal_iterator.850" = type { %"class.thrust::iterator_adaptor.851" } %"class.thrust::iterator_adaptor.851" = type { %"struct.thrust::pair.82"* } %"class.thrust::device_vector.853" = type { %"class.thrust::detail::vector_base.854" } %"class.thrust::detail::vector_base.854" = type { %"class.thrust::detail::contiguous_storage.855", i64 } %"class.thrust::detail::contiguous_storage.855" = type { %"class.thrust::device_malloc_allocator.856", %"class.thrust::detail::normal_iterator.858", i64 } %"class.thrust::device_malloc_allocator.856" = type { i8 } %"class.thrust::detail::normal_iterator.858" = type { %"class.thrust::iterator_adaptor.859" } %"class.thrust::iterator_adaptor.859" = type { %"class.thrust::device_ptr.861" } %"class.thrust::device_ptr.861" = type { %"class.thrust::pointer.862" } %"class.thrust::pointer.862" = type { %"class.thrust::iterator_adaptor.863" } %"class.thrust::iterator_adaptor.863" = type { i32* } %"class.thrust::device_vector.865" = type { %"class.thrust::detail::vector_base.866" } %"class.thrust::detail::vector_base.866" = type { %"class.thrust::detail::contiguous_storage.867", i64 } %"class.thrust::detail::contiguous_storage.867" = type { %"class.thrust::device_malloc_allocator.868", %"class.thrust::detail::normal_iterator.870", i64 } %"class.thrust::device_malloc_allocator.868" = type { i8 } %"class.thrust::detail::normal_iterator.870" = type { %"class.thrust::iterator_adaptor.871" } %"class.thrust::iterator_adaptor.871" = type { %"class.thrust::device_ptr.873" } %"class.thrust::device_ptr.873" = type { %"class.thrust::pointer.874" } %"class.thrust::pointer.874" = type { %"class.thrust::iterator_adaptor.875" } %"class.thrust::iterator_adaptor.875" = type { %"struct.thrust::pair.82"* } %"struct.thrust::equal_to.877" = type { i8 } %"struct.unittest::random_integer.878" = type { i8 } %"class.__gnu_cxx::new_allocator.839" = type { i8 } %"class.thrust::iterator_facade.843" = type { i8 } %"struct.thrust::detail::has_trivial_copy_constructor.879" = type { i8 } %"struct.thrust::detail::fill_functor.880" = type { i32 } %"struct.thrust::detail::host_generate_functor.881" = type { %"struct.thrust::detail::fill_functor.880" } %"struct.thrust::detail::wrapped_function.882" = type { %"struct.thrust::detail::host_generate_functor.881" } %"class.thrust::zip_iterator.883" = type { %"class.thrust::tuple.885" } %"class.thrust::tuple.885" = type { %"struct.thrust::detail::cons.886" } %"struct.thrust::detail::cons.886" = type { %"class.thrust::counting_iterator", %"struct.thrust::detail::cons.887" } %"struct.thrust::detail::cons.887" = type { %"class.thrust::detail::normal_iterator.841" } %"struct.thrust::detail::unary_transform_functor.888" = type { %"struct.unittest::random_integer.878" } %"struct.thrust::detail::wrapped_function.889" = type { %"struct.thrust::detail::unary_transform_functor.888" } %"class.thrust::detail::tuple_of_iterator_references.890" = type { %"class.thrust::tuple.891" } %"class.thrust::tuple.891" = type { %"struct.thrust::detail::cons.892" } %"struct.thrust::detail::cons.892" = type { i64, %"struct.thrust::detail::cons.175" } %"class.thrust::iterator_facade.884" = type { i8 } %"class.thrust::random::uniform_int_distribution.893" = type { %"struct.thrust::pair.82" } %"class.__gnu_cxx::new_allocator.848" = type { i8 } %"class.thrust::iterator_facade.852" = type { i8 } %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.894" = type { %"class.std::allocator.847"* } %"struct.thrust::detail::wrapped_function.895" = type { %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.894" } %"class.thrust::zip_iterator.896" = type { %"class.thrust::tuple.898" } %"class.thrust::tuple.898" = type { %"struct.thrust::detail::cons.899" } %"struct.thrust::detail::cons.899" = type { %"class.thrust::detail::normal_iterator.841", %"struct.thrust::detail::cons.900" } %"struct.thrust::detail::cons.900" = type { %"class.thrust::detail::normal_iterator.841", %"struct.thrust::detail::cons.901" } %"struct.thrust::detail::cons.901" = type { %"class.thrust::detail::normal_iterator.850" } %"class.thrust::detail::tuple_of_iterator_references.902" = type { %"class.thrust::tuple.903" } %"class.thrust::tuple.903" = type { %"struct.thrust::detail::cons.904" } %"struct.thrust::detail::cons.904" = type { i32*, %"struct.thrust::detail::cons.905" } %"struct.thrust::detail::cons.905" = type { i32*, %"struct.thrust::detail::cons.906" } %"struct.thrust::detail::cons.906" = type { %"struct.thrust::pair.82"* } %"class.thrust::iterator_facade.897" = type { i8 } %"class.thrust::detail::normal_iterator.907" = type { %"class.thrust::iterator_adaptor.908" } %"class.thrust::iterator_adaptor.908" = type { i32* } %"class.thrust::iterator_facade.864" = type { i8 } %"class.thrust::iterator_facade.860" = type { i8 } %"class.thrust::iterator_facade.909" = type { i8 } %"class.thrust::device_ptr.910" = type { %"class.thrust::pointer.911" } %"class.thrust::pointer.911" = type { %"class.thrust::iterator_adaptor.912" } %"class.thrust::iterator_adaptor.912" = type { i32* } %"class.thrust::pointer.914" = type { %"class.thrust::iterator_adaptor.915" } %"class.thrust::iterator_adaptor.915" = type { i32* } %"class.thrust::iterator_facade.916" = type { i8 } %"class.thrust::iterator_facade.913" = type { i8 } %"class.thrust::device_reference.917" = type { %"class.thrust::reference.918" } %"class.thrust::reference.918" = type { %"class.thrust::device_ptr.861" } %"class.thrust::detail::normal_iterator.919" = type { %"class.thrust::iterator_adaptor.920" } %"class.thrust::iterator_adaptor.920" = type { %"struct.thrust::pair.82"* } %"class.thrust::iterator_facade.876" = type { i8 } %"class.thrust::iterator_facade.872" = type { i8 } %"class.thrust::iterator_facade.921" = type { i8 } %"class.thrust::device_ptr.922" = type { %"class.thrust::pointer.923" } %"class.thrust::pointer.923" = type { %"class.thrust::iterator_adaptor.924" } %"class.thrust::iterator_adaptor.924" = type { %"struct.thrust::pair.82"* } %"class.thrust::pointer.926" = type { %"class.thrust::iterator_adaptor.927" } %"class.thrust::iterator_adaptor.927" = type { %"struct.thrust::pair.82"* } %"class.thrust::iterator_facade.928" = type { i8 } %"class.thrust::iterator_facade.925" = type { i8 } %"class.thrust::device_reference.929" = type { %"class.thrust::reference.930" } %"class.thrust::reference.930" = type { %"class.thrust::device_ptr.873" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.931" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.932" } %"class.thrust::tuple.932" = type { %"struct.thrust::detail::cons.933" } %"struct.thrust::detail::cons.933" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.934" } %"struct.thrust::detail::cons.934" = type { %"class.thrust::device_ptr.873", %"struct.thrust::detail::cons.158" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.942" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.943" } %"class.thrust::tuple.943" = type { %"struct.thrust::detail::cons.944" } %"struct.thrust::detail::cons.944" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.945" } %"struct.thrust::detail::cons.945" = type { %"class.thrust::device_ptr.873", %"struct.thrust::detail::cons.164" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.935" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.936" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.936" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.937" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.939" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.940", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.940" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.931", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.946" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.947" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.947" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.948" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.950" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.951", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.951" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.942", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::detail::binary_negate.953" = type { %"struct.thrust::equal_to.877" } %"class.thrust::detail::temporary_array.954" = type { %"class.thrust::detail::contiguous_storage.955" } %"class.thrust::detail::contiguous_storage.955" = type { %"struct.thrust::detail::no_throw_allocator.956", %"class.thrust::detail::normal_iterator.960", i64 } %"struct.thrust::detail::no_throw_allocator.956" = type { %"class.thrust::detail::temporary_allocator.957" } %"class.thrust::detail::temporary_allocator.957" = type { %"struct.thrust::system::cuda::detail::tag"* } %"class.thrust::detail::normal_iterator.960" = type { %"class.thrust::iterator_adaptor.961" } %"class.thrust::iterator_adaptor.961" = type { %"class.thrust::pointer.926" } %"class.thrust::reference.963" = type { %"class.thrust::pointer.926" } %"class.thrust::zip_iterator.968" = type { %"class.thrust::tuple.970" } %"class.thrust::tuple.970" = type { %"struct.thrust::detail::cons.971" } %"struct.thrust::detail::cons.971" = type { %"class.thrust::detail::normal_iterator.960", %"struct.thrust::detail::cons.220" } %"class.thrust::zip_iterator.964" = type { %"class.thrust::tuple.966" } %"class.thrust::tuple.966" = type { %"struct.thrust::detail::cons.967" } %"struct.thrust::detail::cons.967" = type { %"class.thrust::detail::normal_iterator.870", %"struct.thrust::detail::cons.220" } %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.972" = type { %struct.add_pairs } %"class.thrust::iterator_facade.962" = type { i8 } %"class.thrust::iterator_facade.969" = type { i8 } %"class.thrust::zip_iterator.973" = type { %"class.thrust::tuple.975" } %"class.thrust::tuple.975" = type { %"struct.thrust::detail::cons.976" } %"struct.thrust::detail::cons.976" = type { %"class.thrust::detail::normal_iterator.858", %"struct.thrust::detail::cons.977" } %"struct.thrust::detail::cons.977" = type { %"class.thrust::detail::normal_iterator.858", %"struct.thrust::detail::cons.220" } %"struct.thrust::detail::binary_transform_functor.978" = type { %"struct.thrust::detail::binary_negate.953" } %"struct.thrust::detail::wrapped_function.979" = type { %"struct.thrust::detail::binary_transform_functor.978" } %"class.thrust::iterator_facade.974" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.980" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.981" } %"class.thrust::tuple.981" = type { %"struct.thrust::detail::cons.982" } %"struct.thrust::detail::cons.982" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.983" } %"struct.thrust::detail::cons.983" = type { %"class.thrust::zip_iterator.973", %"struct.thrust::detail::cons.984" } %"struct.thrust::detail::cons.984" = type { %"struct.thrust::detail::wrapped_function.979", %"struct.thrust::detail::cons.159" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.992" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.993" } %"class.thrust::tuple.993" = type { %"struct.thrust::detail::cons.994" } %"struct.thrust::detail::cons.994" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.995" } %"struct.thrust::detail::cons.995" = type { %"class.thrust::zip_iterator.973", %"struct.thrust::detail::cons.996" } %"struct.thrust::detail::cons.996" = type { %"struct.thrust::detail::wrapped_function.979", %"struct.thrust::detail::cons.165" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.985" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.986" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.986" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.987" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.989" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.990", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.990" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.980", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.997" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.998" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.998" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.999" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1001" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1002", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1002" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.992", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::detail::tagged_allocator.958" = type { i8 } %"struct.thrust::pair.1004" = type { %"class.thrust::pointer.926", i64 } %"struct.thrust::pair.1005" = type { %"class.thrust::pointer.926", i64 } %"struct.thrust::system::detail::generic::detail::new_value_if.1006" = type { %"struct.thrust::negate", %"struct.thrust::pair.82" } %"class.thrust::zip_iterator.1007" = type { %"class.thrust::tuple.1009" } %"class.thrust::tuple.1009" = type { %"struct.thrust::detail::cons.1010" } %"struct.thrust::detail::cons.1010" = type { %"class.thrust::detail::normal_iterator.870", %"struct.thrust::detail::cons.1011" } %"struct.thrust::detail::cons.1011" = type { %"class.thrust::detail::normal_iterator.199", %"struct.thrust::detail::cons.1012" } %"struct.thrust::detail::cons.1012" = type { %"class.thrust::detail::normal_iterator.960" } %"struct.thrust::detail::binary_transform_functor.1013" = type { %"struct.thrust::system::detail::generic::detail::new_value_if.1006" } %"struct.thrust::detail::wrapped_function.1014" = type { %"struct.thrust::detail::binary_transform_functor.1013" } %"class.thrust::iterator_facade.1008" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.1015" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.1016" } %"class.thrust::tuple.1016" = type { %"struct.thrust::detail::cons.1017" } %"struct.thrust::detail::cons.1017" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.1018" } %"struct.thrust::detail::cons.1018" = type { %"class.thrust::zip_iterator.1007", %"struct.thrust::detail::cons.1019" } %"struct.thrust::detail::cons.1019" = type { %"struct.thrust::detail::wrapped_function.1014", %"struct.thrust::detail::cons.159" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.1027" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.1028" } %"class.thrust::tuple.1028" = type { %"struct.thrust::detail::cons.1029" } %"struct.thrust::detail::cons.1029" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.1030" } %"struct.thrust::detail::cons.1030" = type { %"class.thrust::zip_iterator.1007", %"struct.thrust::detail::cons.1031" } %"struct.thrust::detail::cons.1031" = type { %"struct.thrust::detail::wrapped_function.1014", %"struct.thrust::detail::cons.165" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1020" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1021" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1021" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1022" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1024" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1025", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1025" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.1015", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1032" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1033" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1033" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1034" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1036" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1037", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1037" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.1027", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::detail::temporary_array.1039" = type { %"class.thrust::detail::contiguous_storage.1040" } %"class.thrust::detail::contiguous_storage.1040" = type { %"struct.thrust::detail::no_throw_allocator.1041", %"class.thrust::detail::normal_iterator.1045", i64 } %"struct.thrust::detail::no_throw_allocator.1041" = type { %"class.thrust::detail::temporary_allocator.1042" } %"class.thrust::detail::temporary_allocator.1042" = type { %"struct.thrust::system::cuda::detail::tag"* } %"class.thrust::detail::normal_iterator.1045" = type { %"class.thrust::iterator_adaptor.1046" } %"class.thrust::iterator_adaptor.1046" = type { %"class.thrust::pointer.1048" } %"class.thrust::pointer.1048" = type { %"class.thrust::iterator_adaptor.1049" } %"class.thrust::iterator_adaptor.1049" = type { %"class.thrust::tuple.1051"* } %"class.thrust::tuple.1051" = type { %"struct.thrust::detail::cons.1052" } %"struct.thrust::detail::cons.1052" = type { %"struct.thrust::pair.82", %"struct.thrust::detail::cons.159" } %"class.thrust::system::cuda::detail::bulk_::async_launch.1053" = type { i8, %"class.thrust::system::cuda::detail::bulk_::parallel_group.1054", %struct.CUstream_st*, %struct.CUevent_st* } %"class.thrust::system::cuda::detail::bulk_::parallel_group.1054" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.1055" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.1055" = type { %"class.thrust::system::cuda::detail::bulk_::concurrent_group.1056", i32, i32 } %"class.thrust::system::cuda::detail::bulk_::concurrent_group.1056" = type { %"class.thrust::system::cuda::detail::bulk_::parallel_group.1057", i32 } %"class.thrust::system::cuda::detail::bulk_::parallel_group.1057" = type { %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.1058" } %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.1058" = type { %"class.thrust::system::cuda::detail::bulk_::agent.301", i32 } %"class.thrust::iterator_facade.965" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::closure.1059" = type { %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", %"class.thrust::tuple.1060" } %"class.thrust::tuple.1060" = type { %"struct.thrust::detail::cons.1061" } %"struct.thrust::detail::cons.1061" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.1062" } %"struct.thrust::detail::cons.1062" = type { %"class.thrust::zip_iterator.968", %"struct.thrust::detail::cons.1063" } %"struct.thrust::detail::cons.1063" = type { i64, %"struct.thrust::detail::cons.1064" } %"struct.thrust::detail::cons.1064" = type <{ %"class.thrust::zip_iterator.964", %"struct.thrust::detail::cons.1065", [7 x i8] }> %"struct.thrust::detail::cons.1065" = type { %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.972" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.1076" = type { %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles", %"class.thrust::tuple.1077" } %"class.thrust::tuple.1077" = type { %"struct.thrust::detail::cons.1078" } %"struct.thrust::detail::cons.1078" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.1079" } %"struct.thrust::detail::cons.1079" = type { %"class.thrust::zip_iterator.968", %"struct.thrust::detail::cons.1080" } %"struct.thrust::detail::cons.1080" = type { %"class.thrust::system::cuda::detail::aligned_decomposition", %"struct.thrust::detail::cons.1081" } %"struct.thrust::detail::cons.1081" = type <{ %"class.thrust::detail::normal_iterator.1045", %"struct.thrust::detail::cons.1065", [7 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::closure.1090" = type { %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", %"class.thrust::tuple.1091" } %"class.thrust::tuple.1091" = type { %"struct.thrust::detail::cons.1092" } %"struct.thrust::detail::cons.1092" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.1093" } %"struct.thrust::detail::cons.1093" = type { %"class.thrust::detail::normal_iterator.1045", %"struct.thrust::detail::cons.1094" } %"struct.thrust::detail::cons.1094" = type { i64, %"struct.thrust::detail::cons.1081" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.1102" = type { %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep", %"class.thrust::tuple.1103" } %"class.thrust::tuple.1103" = type { %"struct.thrust::detail::cons.1104" } %"struct.thrust::detail::cons.1104" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::detail::cons.1105" } %"struct.thrust::detail::cons.1105" = type { %"class.thrust::zip_iterator.968", %"struct.thrust::detail::cons.1106" } %"struct.thrust::detail::cons.1106" = type { %"class.thrust::system::cuda::detail::aligned_decomposition", %"struct.thrust::detail::cons.1107" } %"struct.thrust::detail::cons.1107" = type { %"class.thrust::detail::normal_iterator.1045", %"struct.thrust::detail::cons.1064" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1067" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1068" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1068" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1071" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.1073", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.1073" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.1059", %"class.thrust::system::cuda::detail::bulk_::parallel_group.324" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1069" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1072" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.1059", %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", [4 x i8] }> %"class.thrust::detail::tagged_allocator.1043" = type { i8 } %"class.thrust::iterator_facade.1050" = type { i8 } %"class.thrust::iterator_facade.1047" = type { i8 } %"struct.thrust::pair.1074" = type { %"class.thrust::pointer.1048", i64 } %"struct.thrust::pair.1075" = type { %"class.thrust::pointer.1048", i64 } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1083" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1084" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1084" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1087" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.1089", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.1089" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.1076", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1085" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1088" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.1076", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", [4 x i8] }> %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1095" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1096" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1096" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1099" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.1101", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.1101" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.1090", %"class.thrust::system::cuda::detail::bulk_::parallel_group.1054" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1097" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1100" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.1090", %"class.thrust::system::cuda::detail::bulk_::parallel_group.1054", [4 x i8] }> %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1108" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1109" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1109" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1112" = type { %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.1114", i32 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.base.1114" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.1102", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317" }> %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1110" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1113" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::closure.1102", %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::closure.1115" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.1116" } %"class.thrust::tuple.1116" = type { %"struct.thrust::detail::cons.1117" } %"struct.thrust::detail::cons.1117" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.1118" } %"struct.thrust::detail::cons.1118" = type { %"class.thrust::pointer.1048", %"struct.thrust::detail::cons.158" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.1126" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.1127" } %"class.thrust::tuple.1127" = type { %"struct.thrust::detail::cons.1128" } %"struct.thrust::detail::cons.1128" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.1129" } %"struct.thrust::detail::cons.1129" = type { %"class.thrust::pointer.1048", %"struct.thrust::detail::cons.164" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1119" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1120" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1120" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1121" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1123" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1124", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1124" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.1115", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1130" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1131" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1131" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1132" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1134" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1135", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1135" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.1126", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.1137" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.1138" } %"class.thrust::tuple.1138" = type { %"struct.thrust::detail::cons.1139" } %"struct.thrust::detail::cons.1139" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.1140" } %"struct.thrust::detail::cons.1140" = type { %"class.thrust::pointer.926", %"struct.thrust::detail::cons.158" } %"class.thrust::system::cuda::detail::bulk_::detail::closure.1148" = type { %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", %"class.thrust::tuple.1149" } %"class.thrust::tuple.1149" = type { %"struct.thrust::detail::cons.1150" } %"struct.thrust::detail::cons.1150" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::detail::cons.1151" } %"struct.thrust::detail::cons.1151" = type { %"class.thrust::pointer.926", %"struct.thrust::detail::cons.164" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1141" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1142" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1142" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1143" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1145" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1146", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1146" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.1137", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.1152" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1153" } %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.1153" = type { %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t" } %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.1154" = type { i8 } %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.1156" = type <{ %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1157", i32, [4 x i8] }> %"class.thrust::system::cuda::detail::bulk_::detail::task_base.1157" = type { %"class.thrust::system::cuda::detail::bulk_::detail::closure.1148", %"class.thrust::system::cuda::detail::bulk_::parallel_group" } %"class.thrust::detail::normal_iterator.1159" = type { %"class.thrust::iterator_adaptor.1160" } %"class.thrust::iterator_adaptor.1160" = type { %"class.thrust::device_ptr.922" } %"class.thrust::detail::move_to_system.1162" = type { %"class.thrust::detail::tagged_iterator_range.1163" } %"class.thrust::detail::tagged_iterator_range.1163" = type { %"class.thrust::detail::tagged_iterator.1164", %"class.thrust::detail::tagged_iterator.1164" } %"class.thrust::detail::tagged_iterator.1164" = type { %"class.thrust::iterator_adaptor.1165" } %"class.thrust::iterator_adaptor.1165" = type { %"class.thrust::detail::normal_iterator.919" } %"class.thrust::detail::move_to_system.1167" = type { %"class.thrust::detail::temporary_array.1168" } %"class.thrust::detail::temporary_array.1168" = type { %"class.thrust::detail::contiguous_storage.1169" } %"class.thrust::detail::contiguous_storage.1169" = type { %"struct.thrust::detail::no_throw_allocator.1170", %"class.thrust::detail::normal_iterator.1174", i64 } %"struct.thrust::detail::no_throw_allocator.1170" = type { %"class.thrust::detail::temporary_allocator.1171" } %"class.thrust::detail::temporary_allocator.1171" = type { %"struct.thrust::system::cpp::detail::tag"* } %"class.thrust::detail::normal_iterator.1174" = type { %"class.thrust::iterator_adaptor.1175" } %"class.thrust::iterator_adaptor.1175" = type { %"class.thrust::pointer.1177" } %"class.thrust::pointer.1177" = type { %"class.thrust::iterator_adaptor.1178" } %"class.thrust::iterator_adaptor.1178" = type { %"struct.thrust::pair.82"* } %"class.thrust::iterator_facade.1161" = type { i8 } %"class.thrust::iterator_facade.1166" = type { i8 } %"class.thrust::detail::tagged_allocator.1172" = type { i8 } %"class.thrust::iterator_facade.1179" = type { i8 } %"class.thrust::iterator_facade.1176" = type { i8 } %"struct.thrust::pair.1180" = type { %"class.thrust::pointer.1177", i64 } %"struct.thrust::pair.1181" = type { %"class.thrust::pointer.1177", i64 } %"class.thrust::reference.1182" = type { %"class.thrust::pointer.1177" } %"class.thrust::device_reference.1183" = type { %"class.thrust::reference.1184" } %"class.thrust::reference.1184" = type { %"class.thrust::device_ptr.922" } %"struct.thrust::detail::equal_to.1185" = type { i8 } %"struct.thrust::pair.1186" = type { %"class.thrust::detail::tagged_iterator.1164", %"class.thrust::detail::normal_iterator.1174" } %"class.thrust::zip_iterator.1187" = type { %"class.thrust::tuple.1189" } %"class.thrust::tuple.1189" = type { %"struct.thrust::detail::cons.1190" } %"struct.thrust::detail::cons.1190" = type { %"class.thrust::detail::tagged_iterator.1164", %"struct.thrust::detail::cons.1191" } %"struct.thrust::detail::cons.1191" = type { %"class.thrust::detail::normal_iterator.1174" } %"struct.thrust::detail::tuple_binary_predicate.1192" = type { %"struct.thrust::detail::equal_to.1185" } %"class.thrust::iterator_facade.1188" = type { i8 } %"struct.thrust::detail::unary_negate.1193" = type { %"struct.thrust::detail::tuple_binary_predicate.1192" } %"struct.thrust::detail::wrapped_function.1194" = type { %"struct.thrust::detail::unary_negate.1193" } %"class.thrust::detail::tuple_of_iterator_references.1195" = type { %"class.thrust::tuple.1196" } %"class.thrust::tuple.1196" = type { %"struct.thrust::detail::cons.1197" } %"struct.thrust::detail::cons.1197" = type { %"struct.thrust::pair.82"*, %"struct.thrust::detail::cons.1198" } %"struct.thrust::detail::cons.1198" = type { %"class.thrust::reference.1182" } %"class.thrust::detail::tuple_of_iterator_references.1199" = type { %"class.thrust::tuple.1200" } %"class.thrust::tuple.1200" = type { %"struct.thrust::detail::cons.1201" } %"struct.thrust::detail::cons.1201" = type { %"struct.thrust::pair.82"*, %"struct.thrust::detail::cons.906" } %"class.__gnu_cxx::new_allocator.39" = type { i8 } $_ZN6thrust6system6detail10sequential3tagC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj0EEEEC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj1EEEEC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj2EEEEC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj3EEEEC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj4EEEEC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj5EEEEC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj6EEEEC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj7EEEEC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj8EEEEC2Ev = comdat any $_ZN6thrust6detail10functional5actorINS1_8argumentILj9EEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj0EEC2Ev = comdat any $_ZN6thrust6detail5seq_tC2Ev = comdat any $_ZN6thrust6system3cpp6detail5par_tC2Ev = comdat any $_ZN6thrust6system4cuda6detail5par_tC2Ev = comdat any $_ZN16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEEC2Ev = comdat any $_ZN8UnitTestD2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj1EEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj2EEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj3EEC2Ev = comdat any $_ZN8UnitTestD0Ev = comdat any $_ZN8UnitTest3runEv = comdat any $__clang_call_terminate = comdat any $_ZN9__gnu_cxx13new_allocatorIcEC2ERKS1_ = comdat any $_ZN9__gnu_cxx13new_allocatorIcED2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj0EEC2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj1EEC2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj2EEC2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj3EEC2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj4EEC2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj5EEC2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj6EEC2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj7EEC2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj8EEC2Ev = comdat any $_ZN6thrust6detail10functional8argumentILj9EEC2Ev = comdat any $_Z15base_class_nameRKSs = comdat any $_ZN8unittest9type_nameI17TestPairScanByKeyIiEEESsv = comdat any $_ZN16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEED0Ev = comdat any $_ZN16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE3runEv = comdat any $_Z11chop_prefixRSsRKSs = comdat any $_ZN9__gnu_cxx13new_allocatorIcEC2Ev = comdat any $_ZNSt11char_traitsIcE6lengthEPKc = comdat any $_ZN8unittest8demangleEPKc = comdat any $_ZNKSt9type_info4nameEv = comdat any $_ZNKSt6vectorImSaImEE4sizeEv = comdat any $_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeyaLj0EEclImEEvT_ = comdat any $_ZNSt6vectorImSaImEEixEm = comdat any $_ZNSt6vectorImSaImEED2Ev = comdat any $_ZN17TestPairScanByKeyIaEclEm = comdat any $_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeysLj1EEclImEEvT_ = comdat any $_ZN8unittest15random_integersIaEEN6thrust11host_vectorIT_SaIS3_EEEm = comdat any $_ZN6thrust11host_vectorINS_4pairIaaEESaIS2_EEC2Em = comdat any $_ZN6thrust9transformINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEE17make_pair_functorEET1_T_SB_T0_SA_T2_ = comdat any $_ZN6thrust6detail11vector_baseIaSaIaEE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIaSaIaEE3endEv = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv = comdat any $_ZN6thrust13device_vectorIaNS_23device_malloc_allocatorIaEEEC2IaSaIaEEERKNS_11host_vectorIT_T0_EE = comdat any $_ZN6thrust13device_vectorINS_4pairIaaEENS_23device_malloc_allocatorIS2_EEEC2IS2_SaIS2_EEERKNS_11host_vectorIT_T0_EE = comdat any $_ZN8unittest15random_integersIbEEN6thrust11host_vectorIT_SaIS3_EEEm = comdat any $_ZN6thrust11host_vectorIaSaIaEEC2IbSaIbEEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail11vector_baseIbSaIbEED2Ev = comdat any $_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_ = comdat any $_ZN6thrust4pairIaaEC2IiiEERKNS0_IT_T0_EE = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorIPaEENS2_IPNS_4pairIaaEEEES8_S6_NS_8equal_toIaEE9add_pairsEET1_T_SD_T0_SC_T2_T3_T4_ = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorINS_10device_ptrIaEEEENS2_INS3_INS_4pairIaaEEEEEES9_S7_NS_8equal_toIaEE9add_pairsEET1_T_SE_T0_SD_T2_T3_T4_ = comdat any $_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE3endEv = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN8unittest18assert_equal_quietIN6thrust11host_vectorINS1_4pairIaaEESaIS4_EEENS1_13device_vectorIS4_NS1_23device_malloc_allocatorIS4_EEEEEEvRKT_RKT0_RKSsi = comdat any $_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEED2Ev = comdat any $_ZN6thrust6detail11vector_baseIaSaIaEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EED2Ev = comdat any $_ZN6thrust11host_vectorIaSaIaEEC2Em = comdat any $_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEEN8unittest14random_integerIaLb0EEEEET0_T_SC_SB_T1_ = comdat any $_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2Em = comdat any $_ZN6thrust6detail11vector_baseIaSaIaEEC2Em = comdat any $_ZNSaIaEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageIaSaIaEEC2ERKS2_ = comdat any $_ZN9__gnu_cxx13new_allocatorIaED2Ev = comdat any $_ZN6thrust6detail11vector_baseIaSaIaEE12default_initEm = comdat any $_ZN6thrust6detail18contiguous_storageIaSaIaEED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIaEC2Ev = comdat any $_ZNSaIaEC2ERKS_ = comdat any $_ZN6thrust6detail15normal_iteratorIPaEC2ES2_ = comdat any $_ZN9__gnu_cxx13new_allocatorIaEC2ERKS1_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_ = comdat any $_ZN6thrust6detail18contiguous_storageIaSaIaEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageIaSaIaEE19default_construct_nENS0_15normal_iteratorIPaEEm = comdat any $_ZNK6thrust6detail11vector_baseIaSaIaEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIaEE8allocateERS2_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaIaEE8allocateERS2_mEN19workaround_warnings8allocateES4_m = comdat any $_ZN9__gnu_cxx13new_allocatorIaE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorIaE8max_sizeEv = comdat any $_ZN6thrust6detail23default_construct_rangeISaIaEPamEEvRT_T0_T1_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIaEPamEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_ = comdat any $_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPamaEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_ = comdat any $_ZN6thrust6detail16allocator_systemISaIaEE3getERS2_ = comdat any $_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPamaEET0_RNS_16execution_policyIT_EES8_T1_RKT2_ = comdat any $_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE = comdat any $_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_ = comdat any $_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPamaEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPamaEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_ = comdat any $_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPamaEET0_RNS_16execution_policyIT_EES8_T1_RKT2_ = comdat any $_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPamNS_6detail12fill_functorIaEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_ = comdat any $_ZN6thrust6detail12fill_functorIaEC2ERKa = comdat any $_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPamNS_6detail12fill_functorIaEEEET0_RNS_16execution_policyIT_EESB_T1_T2_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPamNS_6detail21host_generate_functorINS6_12fill_functorIaEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_ = comdat any $_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIaEEEC2ES3_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPamNS_6detail21host_generate_functorINS8_12fill_functorIaEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIaEEEEvEC2ERKS5_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIaEEEEvEclIaEEvRT_ = comdat any $_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIaEEEclIaEEvRKT_ = comdat any $_ZN6thrust18raw_reference_castIaEENS_6detail13raw_referenceIT_E4typeERS3_ = comdat any $_ZNK6thrust6detail12fill_functorIaEclEv = comdat any $_ZN6thrust16raw_pointer_castIPaEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_ = comdat any $_ZN6thrust6detail14pointer_traitsIPaE3getES2_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemISaIaEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_ = comdat any $_ZN6thrust6detail18contiguous_storageIaSaIaEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageIaSaIaEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIaEE10deallocateERS2_Pam = comdat any $_ZZN6thrust6detail16allocator_traitsISaIaEE10deallocateERS2_PamEN19workaround_warnings10deallocateES4_S5_m = comdat any $_ZN9__gnu_cxx13new_allocatorIaE10deallocateEPam = comdat any $_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPaEEN8unittest14random_integerIaLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_ = comdat any $_ZN6thrust6system6detail7generic13select_systemINS_14any_system_tagENS0_3cpp6detail3tagEEERNS_6detail17enable_if_definedINS8_14minimum_systemIT_T0_NS8_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyISB_EERNSJ_ISC_EE = comdat any $_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_ = comdat any $_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPaEEN8unittest14random_integerIaLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_ = comdat any $_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPaEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_ = comdat any $_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIaLb0EEEEC2ES4_ = comdat any $_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPaEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPaEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEvEC2ERKS6_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRaNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE = comdat any $_ZN6thrusteqINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxS3_mS4_S5_mxEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNS6_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPaEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_17counting_iteratorImNS_11use_defaultES3_S3_EES4_EEbRKT_RKT0_ = comdat any $_ZNK6thrust17counting_iteratorImNS_11use_defaultES1_S1_E5equalImS1_S1_S1_EEbRKNS0_IT_T0_T1_T2_EE = comdat any $_ZN6thrust6detail23counting_iterator_equalIxmmvE5equalEmm = comdat any $_ZNK6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE4baseEv = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPaEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIaLb0EEEEclINS0_28tuple_of_iterator_referencesImRaNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_ = comdat any $_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRaNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_ = comdat any $_ZNK8unittest14random_integerIaLb0EEclEj = comdat any $_ZN6thrust3getILi0EmNS_6detail4consIRaNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_ = comdat any $_ZN6thrust3getILi1EmNS_6detail4consIRaNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_ = comdat any $_ZN8unittest4hashEj = comdat any $_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EEC2Ej = comdat any $_ZN6thrust6random24uniform_int_distributionIaEC2Eaa = comdat any $_ZN6thrust6random24uniform_int_distributionIaEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEaRT_ = comdat any $_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EE4seedEj = comdat any $_ZN6thrust6random6detail3modIjLj1ELj0ELj2147483647EEET_S3_ = comdat any $_ZNK6thrust6random6detail10static_modIjLj1ELj0ELj2147483647ELb0EEclEj = comdat any $_ZN6thrust4pairIaaEC2ERKaS3_ = comdat any $_ZN6thrust6random24uniform_int_distributionIaEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEaRT_RKNS_4pairIaaEE = comdat any $_ZN6thrust6random25uniform_real_distributionIdEC2Edd = comdat any $_ZN6thrust6random25uniform_real_distributionIdEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEdRT_ = comdat any $_ZN6thrust4pairIddEC2ERKdS3_ = comdat any $_ZN6thrust6random25uniform_real_distributionIdEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEdRT_RKNS_4pairIddEE = comdat any $_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EEclEv = comdat any $_ZN6thrust6random6detail3modIjLj48271ELj0ELj2147483647EEET_S3_ = comdat any $_ZNK6thrust6random6detail10static_modIjLj48271ELj0ELj2147483647ELb0EEclEj = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRaNS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRamNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRaS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE = comdat any $_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRaNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRaNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesImRaNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEENS1_5applyIT_E4typeERKS7_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPaEEEENS1_5applyIT_E4typeERKS7_ = comdat any $_ZN6thrust5tupleImRaNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_ = comdat any $_ZNK6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_17counting_iteratorImNS_11use_defaultES3_S3_EEEENT_9referenceERKS5_ = comdat any $_ZNK6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxE7derivedEv = comdat any $_ZNK6thrust17counting_iteratorImNS_11use_defaultES1_S1_E11dereferenceEv = comdat any $_ZNK6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE14base_referenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPaEEEENT_9referenceERKS6_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv = comdat any $_ZN6thrust6detail4consImNS1_IRaNS_9null_typeEEEEC2IKmaKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRaNS_9null_typeEEC2IaEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_ = comdat any $_ZN6thrust6detail18increment_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEEvRT_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPaEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_17counting_iteratorImNS_11use_defaultES3_S3_EEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE9incrementEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPaEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_18increment_iteratorEEET_NS_9null_typeES4_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPaEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEEC2ERKSA_ = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_ = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPaEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPaEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6system6detail7generic20select_system_detail10min_systemINS_14any_system_tagENS0_3cpp6detail3tagEEENS_6detail9enable_ifIXsr6thrust6detail7is_sameIT0_NS9_14minimum_systemIT_SB_NS9_19minimum_type_detail14any_conversionESF_SF_SF_SF_SF_SF_SF_SF_SF_SF_SF_SF_SF_E4typeEEE5valueERSB_E4typeERNS_16execution_policyISD_EERNSL_ISB_EE = comdat any $_ZN6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxEC2ERKm = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEC2Em = comdat any $_ZNSaIN6thrust4pairIaaEEEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EEC2ERKS4_ = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE12default_initEm = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEEC2Ev = comdat any $_ZNSaIN6thrust4pairIaaEEEC2ERKS2_ = comdat any $_ZN6thrust6detail15normal_iteratorIPNS_4pairIaaEEEC2ES4_ = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEEC2ERKS4_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_EC2ERKS5_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE19default_construct_nENS0_15normal_iteratorIPS3_EEm = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE8allocateERS4_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE8allocateERS4_mEN19workaround_warnings8allocateES6_m = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE8max_sizeEv = comdat any $_ZN6thrust6detail23default_construct_rangeISaINS_4pairIaaEEEPS3_mEEvRT_T0_T1_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaINS_4pairIaaEEEPS4_mEENS0_9enable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS8_SA_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIaaEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS6_EEEEET0_RKNS8_21execution_policy_baseIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16allocator_systemISaINS_4pairIaaEEEE3getERS4_ = comdat any $_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEC2ERS5_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIaaEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS8_EEEEET0_RNS2_16execution_policyIT_EESF_T1_T2_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEEvEC2ERKS7_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEEvEclIS5_EEvRT_ = comdat any $_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEclIS4_EEvRT_ = comdat any $_ZN6thrust18raw_reference_castINS_4pairIaaEEEENS_6detail13raw_referenceIT_E4typeERS5_ = comdat any $_ZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE9constructIS3_EEvRS4_PT_ = comdat any $_ZN6thrust6detail23allocator_traits_detail9constructISaINS_4pairIaaEEES4_EENS0_9enable_ifIXsr21has_member_construct1IT_T0_EE5valueEvE4typeERS7_PS8_ = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE9constructIS3_JEEEvPT_DpOT0_ = comdat any $_ZN6thrust4pairIaaEC2Ev = comdat any $_ZN6thrust16raw_pointer_castIPNS_4pairIaaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS6_ = comdat any $_ZN6thrust6detail14pointer_traitsIPNS_4pairIaaEEE3getES4_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemISaINS_4pairIaaEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS7_E4typeEE4typeERS7_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE10deallocateERS4_PS3_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE10deallocateERS4_PS3_mEN19workaround_warnings10deallocateES6_S7_m = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE10deallocateEPS3_m = comdat any $_ZN6thrust9transformINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPaEES8_NS6_IPNS_4pairIaaEEEE17make_pair_functorEET2_RKNS5_21execution_policy_baseIT_EET0_SK_T1_SE_T3_ = comdat any $_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE = comdat any $_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPaEESA_NS8_IPNS_4pairIaaEEEE17make_pair_functorEET2_RNS_16execution_policyIT_EET0_SL_T1_SG_T3_ = comdat any $_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEESA_NS8_IPNS_4pairIaaEEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS7_24binary_transform_functorI17make_pair_functorEEEET0_RKNS7_21execution_policy_baseIT_EESL_SL_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS_12zip_iteratorIT_EESD_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESD_SD_SD_SD_SD_SD_E4typeERKSA_RKSB_RKSC_ = comdat any $_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEC2ES2_ = comdat any $_ZN6thrust3getILi2ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEESC_NSA_IPNS_4pairIaaEEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEENS9_24binary_transform_functorI17make_pair_functorEEEET0_RNS2_16execution_policyIT_EESN_SN_T1_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEC2ERKS4_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElSD_SE_SI_SJ_SN_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSO_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEclINS0_28tuple_of_iterator_referencesIRaS8_RNS_4pairIaaEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEvRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEppEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEESE_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE5equalISB_EEbRKNS0_IT_EE = comdat any $_ZN6thrusteqINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPaEES5_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E5equalIS4_S3_S5_S5_S5_S5_S5_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPaEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIaaEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEclINS0_28tuple_of_iterator_referencesIRaS6_RNS_4pairIaaEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi2ET_E4typeEE4typeESE_ = comdat any $_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesIRaS3_RNS_4pairIaaEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_13raw_referenceIKT_E4typeERSB_ = comdat any $_ZN6thrust3getILi2ERaNS_6detail4consIS1_NS3_IRNS_4pairIaaEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_ = comdat any $_ZN17make_pair_functorclIaaEEN6thrust4pairIT_T0_EERKS3_RKS4_ = comdat any $_ZN6thrust3getILi0ERaNS_6detail4consIS1_NS3_IRNS_4pairIaaEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_ = comdat any $_ZN6thrust3getILi1ERaNS_6detail4consIS1_NS3_IRNS_4pairIaaEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRNS_4pairIaaEERaNS0_4consIS7_NS8_IS6_NS_9null_typeEEEEEEET_RNS8_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIaaEERaNS0_4consIS6_NS_9null_typeEEEEET_RNS8_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIaaEES6_NS_9null_typeEEET_RNS0_4consIT0_T1_EE = comdat any $_ZN6thrust9make_pairIaaEENS_4pairIT_T0_EES2_S3_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRaS4_NS0_4consIS4_NS5_IRNS_4pairIaaEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRaS4_NS0_4consIS4_NS5_IRNS_4pairIaaEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRaS4_NS0_4consIRNS_4pairIaaEENS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesIRaS3_RNS_4pairIaaEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_14pointer_traitsIT_E11raw_pointerERKSC_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesIRaS3_RNS_4pairIaaEENS_9null_typeES7_S7_S7_S7_S7_S7_EEE3getESA_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEENT_9referenceERKSF_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISF_EE5valueEE4typeERKSF_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesIRaS2_RNS_4pairIaaEENS_9null_typeES6_S6_S6_S6_S6_S6_EC2ERKNS_5tupleIS2_S2_S5_S6_S6_S6_S6_S6_S6_S6_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EENS0_20dereference_iterator5applyESC_Lj3EE27do_it_on_the_host_or_deviceERKSB_SC_ = comdat any $_ZN6thrust3getILi1ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPNS_4pairIaaEEEEEENS1_5applyIT_E4typeERKS9_ = comdat any $_ZN6thrust5tupleIRaS1_RNS_4pairIaaEENS_9null_typeES5_S5_S5_S5_S5_S5_EC2ES1_S1_S4_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPaEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIaaEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPaEES6_NS0_4consINS4_IPNS_4pairIaaEEEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEEENT_9referenceERKS8_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E11dereferenceEv = comdat any $_ZN6thrust6detail4consIRaNS1_IS2_NS1_IRNS_4pairIaaEENS_9null_typeEEEEEEC2IaaS4_KS6_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRaNS1_IRNS_4pairIaaEENS_9null_typeEEEEC2IaS4_KS6_SA_SA_SA_SA_SA_SA_SA_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRNS_4pairIaaEENS_9null_typeEEC2IS3_EERT_RKS5_SB_SB_SB_SB_SB_SB_SB_SB_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EENS0_18increment_iteratorEEET0_RT_SE_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_IS4_NS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPaEENS3_INS4_IPNS_4pairIaaEEEENS_9null_typeEEEEENS0_18increment_iteratorEEET0_RT_SF_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_IS4_NS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEE8get_tailEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SC_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPNS_4pairIaaEEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPNS_4pairIaaEEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E9incrementEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEC2ESB_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEENS_9null_typeES9_S9_S9_S9_S9_S9_EC2ERKS4_SC_RKS8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_IS4_NS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEC2IKS4_SE_KS8_KS9_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEC2IKS4_KS8_KS9_SF_SF_SF_SF_SF_SF_SF_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEEC2IKS6_EERT_RKS7_SE_SE_SE_SE_SE_SE_SE_SE_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorIPNS_4pairIaaEEEENS4_IPaEENS0_4consISC_NSD_IS8_NS_9null_typeEEEEEEET_RKNSD_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPNS_4pairIaaEEEENS4_IPaEENS0_4consIS8_NS_9null_typeEEEEET_RKNSD_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPNS_4pairIaaEEEES8_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE = comdat any $_ZN6thrust6system6detail7generic20select_system_detail10min_systemINS0_3cpp6detail3tagEEERT_RNS_16execution_policyIS8_EESC_ = comdat any $_ZN6thrust6detail18contiguous_storageIaSaIaEE5beginEv = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPaEEEEvRT_NS6_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEEC2IaSaIaEEERKNS1_IT_T0_EE = comdat any $_ZN6thrust23device_malloc_allocatorIaEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEEC2ERKS3_ = comdat any $_ZN6thrust23device_malloc_allocatorIaED2Ev = comdat any $_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE10range_initINS0_15normal_iteratorIPKaEEEEvT_SA_ = comdat any $_ZNK6thrust6detail11vector_baseIaSaIaEE5beginEv = comdat any $_ZNK6thrust6detail11vector_baseIaSaIaEE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEED2Ev = comdat any $_ZN6thrust23device_malloc_allocatorIaEC2ERKS1_ = comdat any $_ZN6thrust10device_ptrIaEC2IaEEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_10device_ptrIaEEEC2ES3_ = comdat any $_ZN6thrust7pointerIaNS_6system4cuda6detail3tagENS_16device_referenceIaEENS_10device_ptrIaEEEC2IaEEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEC2ERKS3_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_ = comdat any $_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE10range_initINS0_15normal_iteratorIPKaEEEEvT_SA_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorIPKaEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_ = comdat any $_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE17allocate_and_copyINS0_15normal_iteratorIPKaEEEEvmT_SA_RNS0_18contiguous_storageIaS3_EE = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKaEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKaEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_aS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKaEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKaEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv = comdat any $_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE10deallocateEv = comdat any $_ZN6thrust3maxImEET_RKS1_S3_ = comdat any $_ZNK6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE8capacityEv = comdat any $_ZN6thrust3minImEET_RKS1_S3_ = comdat any $_ZNK6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE8max_sizeEv = comdat any $_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE18uninitialized_copyINS0_15normal_iteratorIPKaEEEENS6_INS_10device_ptrIaEEEET_SD_SC_ = comdat any $_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE5beginEv = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE7destroyENS0_15normal_iteratorINS_10device_ptrIaEEEES8_ = comdat any $_ZNK6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE10deallocateERS3_NS_10device_ptrIaEEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE10deallocateERS3_NS_10device_ptrIaEEmEN19workaround_warnings10deallocateES5_S7_m = comdat any $_ZN6thrust23device_malloc_allocatorIaE10deallocateENS_10device_ptrIaEEm = comdat any $_ZN6thrust11device_freeENS_10device_ptrIvEE = comdat any $_ZN6thrust10device_ptrIvEC2IaEERKNS0_IT_EE = comdat any $_ZN6thrust4freeINS_6system4cuda6detail3tagENS_10device_ptrIvEEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_10device_ptrIvEEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE = comdat any $_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_ = comdat any $_ZN6thrust6system4cuda6detail14throw_on_errorE9cudaErrorPKc = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrIvEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc = comdat any $_ZN6thrust6system13cuda_categoryEv = comdat any $_ZN6thrust6system12system_errorC2EiRKNS0_14error_categoryEPKc = comdat any $_ZN6thrust6system12system_errorD2Ev = comdat any $_ZN6thrust6system4cuda6detail19cuda_error_categoryC2Ev = comdat any $_ZN6thrust6system14error_categoryC2Ev = comdat any $_ZN6thrust6system4cuda6detail19cuda_error_categoryD0Ev = comdat any $_ZNK6thrust6system4cuda6detail19cuda_error_category4nameEv = comdat any $_ZNK6thrust6system4cuda6detail19cuda_error_category23default_error_conditionEi = comdat any $_ZNK6thrust6system14error_category10equivalentEiRKNS0_15error_conditionE = comdat any $_ZNK6thrust6system14error_category10equivalentERKNS0_10error_codeEi = comdat any $_ZNK6thrust6system4cuda6detail19cuda_error_category7messageEi = comdat any $_ZN6thrust6system14error_categoryD2Ev = comdat any $_ZN6thrust6system14error_categoryD0Ev = comdat any $_ZNK6thrust6system14error_category23default_error_conditionEi = comdat any $_ZN6thrust6system15error_conditionC2EiRKNS0_14error_categoryE = comdat any $_ZN6thrust6system20make_error_conditionENS0_4cuda4errc6errc_tE = comdat any $_ZN6thrust6system15system_categoryEv = comdat any $_ZN6thrust6system6detail21system_error_categoryC2Ev = comdat any $_ZN6thrust6system6detail21system_error_categoryD0Ev = comdat any $_ZNK6thrust6system6detail21system_error_category4nameEv = comdat any $_ZNK6thrust6system6detail21system_error_category23default_error_conditionEi = comdat any $_ZNK6thrust6system6detail21system_error_category7messageEi = comdat any $_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE = comdat any $_ZN6thrust6system16generic_categoryEv = comdat any $_ZN6thrust6system6detail22generic_error_categoryC2Ev = comdat any $_ZN6thrust6system6detail22generic_error_categoryD0Ev = comdat any $_ZNK6thrust6system6detail22generic_error_category4nameEv = comdat any $_ZNK6thrust6system6detail22generic_error_category7messageEi = comdat any $_ZN6thrust6systemeqERKNS0_15error_conditionES3_ = comdat any $_ZNK6thrust6system15error_condition8categoryEv = comdat any $_ZNK6thrust6system14error_categoryeqERKS1_ = comdat any $_ZNK6thrust6system15error_condition5valueEv = comdat any $_ZNK6thrust6system10error_code8categoryEv = comdat any $_ZNK6thrust6system10error_code5valueEv = comdat any $_ZN6thrust6system10error_codeC2EiRKNS0_14error_categoryE = comdat any $_ZN6thrust6system12system_errorD0Ev = comdat any $_ZNK6thrust6system12system_error4whatEv = comdat any $_ZNK6thrust6system10error_codecvbEv = comdat any $_ZNK6thrust6system10error_code7messageEv = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrIvEEE3getES3_ = comdat any $_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEE3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIvEEPvvNS_6system4cuda6detail3tagENS_27random_access_traversal_tagEvlE4baseEv = comdat any $_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_IaEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISC_S9_vE4typeE = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrIaEEE3getES3_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIvEEPvvNS_6system4cuda6detail3tagENS_27random_access_traversal_tagEvlEC2ERKS3_ = comdat any $_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_16device_referenceIaEENS_10device_ptrIaEEE3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE4baseEv = comdat any $_ZNK6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE8max_sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE8max_sizeERKS3_ = comdat any $_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorIaEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS6_E9size_typeEE4typeERKS6_ = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE8allocateERS3_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE8allocateERS3_mEN19workaround_warnings8allocateES5_m = comdat any $_ZN6thrust23device_malloc_allocatorIaE8allocateEmNS_10device_ptrIKaEE = comdat any $_ZN6thrust10device_ptrIKaEC2IaEEPT_ = comdat any $_ZNK6thrust23device_malloc_allocatorIaE8max_sizeEv = comdat any $_ZNSt9bad_allocC2Ev = comdat any $_ZN6thrust13device_mallocIaEENS_10device_ptrIT_EEm = comdat any $_ZNSt14numeric_limitsImE3maxEv = comdat any $_ZNSt9exceptionC2Ev = comdat any $_ZN6thrust6mallocIaNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm = comdat any $_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_ = comdat any $_ZN6thrust6system6detail7generic6mallocIaNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm = comdat any $_ZN6thrust7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IaEEPT_ = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_ = comdat any $_ZN6thrust6mallocINS_6system4cuda6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm = comdat any $_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv = comdat any $_ZN6thrust16raw_pointer_castIPvEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_ = comdat any $_ZN6thrust6system4cuda6detail6mallocINS2_3tagEEEPvRNS2_16execution_policyIT_EEm = comdat any $_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IvEEPT_ = comdat any $_ZN6thrust6detail14pointer_traitsIPvE3getES2_ = comdat any $_ZN6thrust6system6detail9bad_allocC2ERKSs = comdat any $_ZN6thrust6system6detail9bad_allocD2Ev = comdat any $_ZN6thrust6system6detail9bad_allocD0Ev = comdat any $_ZNK6thrust6system6detail9bad_alloc4whatEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlEC2ERKS8_ = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlE4baseEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPaaS5_NS_27random_access_traversal_tagENS_9referenceIaS7_S6_EElEC2ERKS8_ = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPaaS5_NS_27random_access_traversal_tagENS_9referenceIaS7_S6_EElE4baseEv = comdat any $_ZN6thrust7pointerIKaNS_6system4cuda6detail3tagENS_16device_referenceIS1_EENS_10device_ptrIS1_EEEC2IaEEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIKaEEPS2_aNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS2_EElEC2ERKS4_ = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIaEENS0_15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_RNS_16execution_policyIT_EERT0_T1_SL_SE_ = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIaEENS0_15normal_iteratorIPKaEENS_10device_ptrIaEEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESI_E4typeERNS_16execution_policyIT_EERSG_T1_SS_SI_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_RKNS_16execution_policyIT_EERKNSG_IT0_EET1_SP_SF_ = comdat any $_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorIaEEE3getERS3_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET1_RKNSA_21execution_policy_baseIT_EET0_SN_SH_ = comdat any $_ZN6thrust6system4cuda6detail13select_systemINS0_3cpp6detail3tagENS2_3tagEEENS2_12cross_systemIT_T0_EERKNS5_16execution_policyIS9_EERNS2_16execution_policyISA_EE = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERT_RNS0_21execution_policy_baseISB_EE = comdat any $_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS8_17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEElNS_10device_ptrIaEEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEET_RKNS_15iterator_facadeISA_T0_T1_T2_T3_T4_EENSA_15difference_typeE = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrIaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEdeEv = comdat any $_ZNK6thrust9referenceIaNS_10device_ptrIaEENS_16device_referenceIaEEEadEv = comdat any $_ZN6thrust16raw_pointer_castIPKaEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv = comdat any $_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS0_3cpp6detail3tagENS2_3tagEEE14cudaMemcpyKindRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE = comdat any $_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS0_3cpp6detail3tagENS2_3tagEEEP11CUstream_stRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE = comdat any $_ZN6thrust6system4cuda6detail19trivial_copy_detail23checked_cudaMemcpyAsyncEPvPKvm14cudaMemcpyKindP11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail11synchronizeEP11CUstream_stPKc = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIaEEEENT_9referenceERKS4_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv = comdat any $_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_16device_referenceIaEENS_10device_ptrIaEEE11dereferenceEv = comdat any $_ZN6thrust16device_referenceIaEC2ERKNS_10device_ptrIaEE = comdat any $_ZN6thrust9referenceIaNS_10device_ptrIaEENS_16device_referenceIaEEEC2ERKS2_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKaE3getES3_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKaEEEENT_9referenceERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv = comdat any $_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE = comdat any $_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERKT_RKNS0_21execution_policy_baseIS6_EE = comdat any $_ZN6thrust6system4cuda6detail13legacy_streamEv = comdat any $_ZN6thrust6system4cuda6detail14default_streamEv = comdat any $_ZN6thrust6system12system_errorC2EiRKNS0_14error_categoryE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIaEEEEvRT_NS4_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7advanceEl = comdat any $_ZN6thrust6system4cuda6detail12cross_systemINS0_3cpp6detail3tagENS2_3tagEEC2ERNS_16execution_policyIS6_EERNS9_IS7_EE = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorIaEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS6_E4typeEE4typeERS6_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl = comdat any $_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorIaEENS_10device_ptrIaEElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElS5_aS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorIaEENS_10device_ptrIaEElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS8_S9_T1_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElS2_aS6_S7_S9_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIaEES3_EENS_6detail20distance_from_resultIT_T0_E4typeERKS6_RKS7_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIaEES3_EENT_15difference_typeERKS4_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE11distance_toIS2_S3_aS7_S8_SA_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust6detail18contiguous_storageIaSaIaEE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorIPKaEC2IPaEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_ = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPKaEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKaEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKaEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKaEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEEC2IS3_SaIS3_EEERKNS1_IT_T0_EE = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEEC2ERKS5_ = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_ = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEED2Ev = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEEC2ERKS3_ = comdat any $_ZN6thrust10device_ptrINS_4pairIaaEEEC2IS2_EEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEC2ES5_ = comdat any $_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEEC2IS2_EEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEC2ERKS5_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeES9_S9_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE17allocate_and_copyINS0_15normal_iteratorIPKS3_EEEEvmT_SC_RNS0_18contiguous_storageIS3_S5_EE = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeESC_SC_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10deallocateEv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8capacityEv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE18uninitialized_copyINS0_15normal_iteratorIPKS3_EEEENS8_INS_10device_ptrIS3_EEEET_SF_SE_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE7destroyENS0_15normal_iteratorINS_10device_ptrIS3_EEEESA_ = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE10deallocateERS5_NS_10device_ptrIS4_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE10deallocateERS5_NS_10device_ptrIS4_EEmEN19workaround_warnings10deallocateES7_S9_m = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEE10deallocateENS_10device_ptrIS2_EEm = comdat any $_ZN6thrust10device_ptrIvEC2INS_4pairIaaEEEERKNS0_IT_EE = comdat any $_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_INS_4pairIaaEEEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISE_S9_vE4typeE = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIaaEEEEE3getES5_ = comdat any $_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE4baseEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE8max_sizeERKS5_ = comdat any $_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorINS_4pairIaaEEEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS8_E9size_typeEE4typeERKS8_ = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE8allocateERS5_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE8allocateERS5_mEN19workaround_warnings8allocateES7_m = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEE8allocateEmNS_10device_ptrIKS2_EE = comdat any $_ZN6thrust10device_ptrIKNS_4pairIaaEEEC2IS2_EEPT_ = comdat any $_ZNK6thrust23device_malloc_allocatorINS_4pairIaaEEE8max_sizeEv = comdat any $_ZN6thrust13device_mallocINS_4pairIaaEEEENS_10device_ptrIT_EEm = comdat any $_ZN6thrust6mallocINS_4pairIaaEENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm = comdat any $_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_ = comdat any $_ZN6thrust6system6detail7generic6mallocINS_4pairIaaEENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm = comdat any $_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_ = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEE3getESA_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_ = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv = comdat any $_ZN6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2IS2_EEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEC2ERKS6_ = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIaaEEEENS0_15normal_iteratorIPKS8_EENS_10device_ptrIS8_EEEET2_RNS_16execution_policyIT_EERT0_T1_SN_SG_ = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIaaEEEENS0_15normal_iteratorIPKS9_EENS_10device_ptrIS9_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESK_E4typeERNS_16execution_policyIT_EERSI_T1_SU_SK_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_RKNS_16execution_policyIT_EERKNSI_IT0_EET1_SR_SH_ = comdat any $_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorINS_4pairIaaEEEEE3getERS5_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISD_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SP_SJ_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_NS8_17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEElNS_10device_ptrISB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEET_RKNS_15iterator_facadeISC_T0_T1_T2_T3_T4_EENSC_15difference_typeE = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrINS_4pairIaaEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEdeEv = comdat any $_ZNK6thrust9referenceINS_4pairIaaEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEadEv = comdat any $_ZN6thrust16raw_pointer_castIPKNS_4pairIaaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrINS_4pairIaaEEEEEENT_9referenceERKS6_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv = comdat any $_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE11dereferenceEv = comdat any $_ZN6thrust16device_referenceINS_4pairIaaEEEC2ERKNS_10device_ptrIS2_EE = comdat any $_ZN6thrust9referenceINS_4pairIaaEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEC2ERKS4_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS_4pairIaaEEE3getES5_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENT_9referenceERKS9_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E11dereferenceEv = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_10device_ptrINS_4pairIaaEEEEEEvRT_NS6_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorINS_4pairIaaEEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS8_E4typeEE4typeERS8_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEEEvRT_NS9_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl = comdat any $_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIaaEEEENS_10device_ptrIS4_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElS7_S5_SB_SC_SE_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSG_IT5_T6_T7_T8_T9_T10_EEE4typeERKSN_RKSU_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIaaEEEENS_10device_ptrIS5_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSA_SB_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_10device_ptrINS_4pairIaaEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS9_21execution_policy_baseIT_EESC_T1_T2_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIaaEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIaaEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_EN10workaround13parallel_pathERNSD_IS4_EES8_lSB_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEC2ERKS3_ = comdat any $_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_ = comdat any $_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_4gridEmmm = comdat any $_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j = comdat any $_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_ = comdat any $_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust3minIlEET_RKS1_S3_ = comdat any $_ZN6thrust6detail4util9divide_riIllEET_S3_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev = comdat any $_ZN6thrust3minIjEET_RKS1_S3_ = comdat any $_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ES1_S1_ = comdat any $_ZN6thrust6detail4consIRjNS1_IS2_NS_9null_typeEEEEC2IjjKS3_S7_S7_S7_S7_S7_S7_S7_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRjNS_9null_typeEEC2IjEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail14current_deviceEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail26device_properties_uncachedEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyINS4_25cuda_launch_config_detail4util13zero_functionImEEEEmRKNS4_21function_attributes_tERKNS4_19device_properties_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util4min_IiEET_RKS8_SA_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util13zero_functionImEclEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail29max_blocks_per_multiprocessorERKNS4_19device_properties_tE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail20smem_allocation_unitERKNS4_19device_properties_tE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iImmEET_S8_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail19reg_allocation_unitERKNS4_19device_properties_tEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail24warp_allocation_multipleERKNS4_19device_properties_tE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riImiEET_S8_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iImiEET_S8_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iIiiEET_S8_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail28num_sides_per_multiprocessorERKNS4_19device_properties_tE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util4min_ImEET_RKS8_SA_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riImmEET_S8_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riIiiEET_S8_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust3minIiEET_RKS1_S3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEEjNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KjKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKS5_KS9_KjKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEC2IKS5_KjKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIjNS_9null_typeEEC2IKjEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEENS3_14parallel_groupIT_Lm0EEESA_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_3conEmm = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEC2EiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEC2EiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei = comdat any $_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EEC2EiiS6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm1EEELm0EEC2EiS6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EEC2EiS8_i = comdat any $_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ES1_S1_ = comdat any $_ZN6thrust6detail4consIRlNS1_IS2_NS_9null_typeEEEEC2IllKS3_S7_S7_S7_S7_S7_S7_S7_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRlNS_9null_typeEEC2IlEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEElNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KlKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKS5_KS9_KlKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEC2IKS5_KlKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIlNS_9null_typeEEC2IKlEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_ = comdat any $_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_ = comdat any $_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ES1_S1_ = comdat any $_ZN6thrust6detail4consIRiNS1_IS2_NS_9null_typeEEEEC2IiiKS3_S7_S7_S7_S7_S7_S7_S7_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRiNS_9null_typeEEC2IiEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_zImmEET_S8_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_rzImmEET_S8_T0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4makeEiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEE4makeEiiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_ = comdat any $_ZN4dim3C2Ejjj = comdat any $_ZN6thrust6system4cuda6detail5bulk_6futureIvEC2EP11CUstream_stb = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6futureIvE5validEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElS4_S3_S8_S9_SB_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIaaEEEES5_EENS_6detail20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIaaEEEES5_EENT_15difference_typeERKS6_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE11distance_toIS4_S5_S3_S9_SA_SC_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorIPKNS_4pairIaaEEEC2IPS3_EERKNS1_IT_EEPNS0_21enable_if_convertibleIS9_S5_vE4typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_ = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEEvRT_NS9_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl = comdat any $_ZN6thrust11host_vectorIbSaIbEEC2Em = comdat any $_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEEN8unittest14random_integerIbLb0EEEEET0_T_SC_SB_T1_ = comdat any $_ZN6thrust6detail11vector_baseIbSaIbEE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIbSaIbEEC2Em = comdat any $_ZNSaIbEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageIbSaIbEEC2ERKS2_ = comdat any $_ZN9__gnu_cxx13new_allocatorIbED2Ev = comdat any $_ZN6thrust6detail11vector_baseIbSaIbEE12default_initEm = comdat any $_ZN6thrust6detail18contiguous_storageIbSaIbEED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIbEC2Ev = comdat any $_ZNSaIbEC2ERKS_ = comdat any $_ZN6thrust6detail15normal_iteratorIPbEC2ES2_ = comdat any $_ZN9__gnu_cxx13new_allocatorIbEC2ERKS1_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_ = comdat any $_ZN6thrust6detail18contiguous_storageIbSaIbEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageIbSaIbEE19default_construct_nENS0_15normal_iteratorIPbEEm = comdat any $_ZNK6thrust6detail11vector_baseIbSaIbEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIbEE8allocateERS2_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaIbEE8allocateERS2_mEN19workaround_warnings8allocateES4_m = comdat any $_ZN9__gnu_cxx13new_allocatorIbE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorIbE8max_sizeEv = comdat any $_ZN6thrust6detail23default_construct_rangeISaIbEPbmEEvRT_T0_T1_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIbEPbmEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_ = comdat any $_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPbmbEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_ = comdat any $_ZN6thrust6detail16allocator_systemISaIbEE3getERS2_ = comdat any $_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPbmbEET0_RNS_16execution_policyIT_EES8_T1_RKT2_ = comdat any $_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPbmbEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPbmbEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_ = comdat any $_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPbmbEET0_RNS_16execution_policyIT_EES8_T1_RKT2_ = comdat any $_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPbmNS_6detail12fill_functorIbEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_ = comdat any $_ZN6thrust6detail12fill_functorIbEC2ERKb = comdat any $_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPbmNS_6detail12fill_functorIbEEEET0_RNS_16execution_policyIT_EESB_T1_T2_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPbmNS_6detail21host_generate_functorINS6_12fill_functorIbEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_ = comdat any $_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIbEEEC2ES3_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPbmNS_6detail21host_generate_functorINS8_12fill_functorIbEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIbEEEEvEC2ERKS5_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIbEEEEvEclIbEEvRT_ = comdat any $_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIbEEEclIbEEvRKT_ = comdat any $_ZN6thrust18raw_reference_castIbEENS_6detail13raw_referenceIT_E4typeERS3_ = comdat any $_ZNK6thrust6detail12fill_functorIbEclEv = comdat any $_ZN6thrust16raw_pointer_castIPbEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_ = comdat any $_ZN6thrust6detail14pointer_traitsIPbE3getES2_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemISaIbEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_ = comdat any $_ZN6thrust6detail18contiguous_storageIbSaIbEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageIbSaIbEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIbEE10deallocateERS2_Pbm = comdat any $_ZZN6thrust6detail16allocator_traitsISaIbEE10deallocateERS2_PbmEN19workaround_warnings10deallocateES4_S5_m = comdat any $_ZN9__gnu_cxx13new_allocatorIbE10deallocateEPbm = comdat any $_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPbEEN8unittest14random_integerIbLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_ = comdat any $_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPbEEN8unittest14random_integerIbLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_ = comdat any $_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPbEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_ = comdat any $_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIbLb0EEEEC2ES4_ = comdat any $_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPbEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPbEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEvEC2ERKS6_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRbNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE = comdat any $_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPbEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPbEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIbLb0EEEEclINS0_28tuple_of_iterator_referencesImRbNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_ = comdat any $_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRbNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_ = comdat any $_ZNK8unittest14random_integerIbLb0EEclEj = comdat any $_ZN6thrust3getILi0EmNS_6detail4consIRbNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_ = comdat any $_ZN6thrust3getILi1EmNS_6detail4consIRbNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_ = comdat any $_ZN6thrust6random24uniform_int_distributionIjEC2Ejj = comdat any $_ZN6thrust6random24uniform_int_distributionIjEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEjRT_ = comdat any $_ZN6thrust4pairIjjEC2ERKjS3_ = comdat any $_ZN6thrust6random24uniform_int_distributionIjEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEjRT_RKNS_4pairIjjEE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRbNS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRbmNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRbS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE = comdat any $_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRbNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRbNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesImRbNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPbEEEENS1_5applyIT_E4typeERKS7_ = comdat any $_ZN6thrust5tupleImRbNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPbEEEENT_9referenceERKS6_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv = comdat any $_ZN6thrust6detail4consImNS1_IRbNS_9null_typeEEEEC2IKmbKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRbNS_9null_typeEEC2IbEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPbEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPbEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPbEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPbEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPbEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEEC2ERKSA_ = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_ = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPbEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPbEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPbEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail18contiguous_storageIbSaIbEE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIaSaIaEEC2IbSaIbEEERKNS1_IT_T0_EE = comdat any $_ZN6thrust6detail11vector_baseIaSaIaEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_ = comdat any $_ZNK6thrust6detail11vector_baseIbSaIbEE5beginEv = comdat any $_ZNK6thrust6detail11vector_baseIbSaIbEE3endEv = comdat any $_ZN6thrust6detail11vector_baseIaSaIaEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_ = comdat any $_ZN6thrust6detail11vector_baseIaSaIaEE17allocate_and_copyINS0_15normal_iteratorIPKbEEEEvmT_S9_RNS0_18contiguous_storageIaS2_EE = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_bS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKbEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKbEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv = comdat any $_ZNK6thrust6detail11vector_baseIaSaIaEE8capacityEv = comdat any $_ZNK6thrust6detail11vector_baseIaSaIaEE8max_sizeEv = comdat any $_ZN6thrust6detail18contiguous_storageIaSaIaEE18uninitialized_copyINS0_15normal_iteratorIPKbEEEENS5_IPaEET_SB_SA_ = comdat any $_ZN6thrust6detail18contiguous_storageIaSaIaEE7destroyENS0_15normal_iteratorIPaEES6_ = comdat any $_ZNK6thrust6detail18contiguous_storageIaSaIaEE8max_sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIaEE8max_sizeERKS2_ = comdat any $_ZN6thrust6detail23allocator_traits_detail8max_sizeISaIaEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS5_E9size_typeEE4typeERKS5_ = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIaENS0_15normal_iteratorIPKbEEPaEET2_RNS_16execution_policyIT_EERT0_T1_SJ_SC_ = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIaENS0_15normal_iteratorIPKbEEPaEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESG_E4typeERNS_16execution_policyIT_EERSE_T1_SQ_SG_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagES5_NS0_15normal_iteratorIPKbEEPaEET2_RKNS_16execution_policyIT_EERKNSC_IT0_EET1_SL_SB_ = comdat any $_ZN6thrust4copyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPaEET1_RKNS5_21execution_policy_baseIT_EET0_SH_SB_ = comdat any $_ZN6thrust6system6detail10sequential4copyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPaEET1_RNS2_16execution_policyIT_EET0_SI_SD_ = comdat any $_ZN6thrust6system6detail10sequential11copy_detail4copyINS_6detail15normal_iteratorIPKbEEPaEET0_T_SC_SB_NS5_17integral_constantIbLb0EEE = comdat any $_ZN6thrust6system6detail10sequential12general_copyINS_6detail15normal_iteratorIPKbEEPaEET0_T_SB_SA_ = comdat any $_ZN6thrustneINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_bS9_SA_SB_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSC_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN6thrust6system6detail10sequential19general_copy_detail11iter_assignIPaNS_6detail15normal_iteratorIPKbEEEENS6_9enable_ifIXsr23reference_is_assignableIT0_T_EE5valueEvE4typeESD_SC_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEppEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPKbEES6_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E5equalIS5_S4_S6_S6_S6_S6_S6_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKbEEEENT_9referenceERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPKbEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E9incrementEv = comdat any $_ZN6thrust6detail13destroy_rangeISaIaEPalEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIaEPalEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPaEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPaEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust6detail18contiguous_storageIbSaIbEE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorIPKbEC2IPbEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_ = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPKbEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKbEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKbEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKbEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl = comdat any $_ZN6thrust6detail18contiguous_storageIbSaIbEE7destroyENS0_15normal_iteratorIPbEES6_ = comdat any $_ZN6thrust6detail11vector_baseIbSaIbEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeISaIbEPblEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblS4_bS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIbEPblEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPbEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPbEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPbEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPbEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPbEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPbEEEEvRT_NS6_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl = comdat any $_ZN6thrust4pairIiiEC2ERKiS3_ = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPaEENS6_IPNS_4pairIaaEEEESC_SA_NS_8equal_toIaEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SM_T1_SG_T3_T4_T5_ = comdat any $_ZN6thrust6system6detail10sequential21exclusive_scan_by_keyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPaEENS8_IPNS_4pairIaaEEEESE_SC_NS_8equal_toIaEE9add_pairsEET2_RNS2_16execution_policyIT_EET0_SN_T1_SI_T3_T4_T5_ = comdat any $_ZN6thrustneINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN9add_pairsclIN6thrust4pairIaaEES3_EET_RKS4_RKT0_ = comdat any $_ZNK6thrust8equal_toIaEclERKaS3_ = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS6_INS7_INS_4pairIaaEEEEEESD_SB_NS_8equal_toIaEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SN_T1_SH_T3_T4_T5_ = comdat any $_ZN6thrust6system6detail7generic13select_systemINS0_4cuda6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE = comdat any $_ZN6thrust6system6detail7generic21exclusive_scan_by_keyINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS8_INS9_INS_4pairIaaEEEEEESF_SD_NS_8equal_toIaEE9add_pairsEET2_RNS_16execution_policyIT_EET0_SO_T1_SJ_T3_T4_T5_ = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEET_RKNS_15iterator_facadeISF_T0_T1_T2_T3_T4_EENSF_15difference_typeE = comdat any $_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS5_EEm = comdat any $_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEEixEm = comdat any $_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EaSERKj = comdat any $_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEES9_NS6_INS_7pointerIjS4_NS_11use_defaultESB_EEEENS5_13binary_negateINS_8equal_toIaEEEEEET2_RKNS5_21execution_policy_baseIT_EET0_SO_T1_SI_T3_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEmiEl = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEET_RKNS_15iterator_facadeISE_T0_T1_T2_T3_T4_EENSE_15difference_typeE = comdat any $_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6detail4not2INS_8equal_toIaEEEENS0_13binary_negateIT_EERKS5_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EEm = comdat any $_ZN6thrust15replace_copy_ifINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS_6negateIjEES9_EET2_RKNS5_21execution_policy_baseIT_EET0_SQ_T1_SK_T3_RKT4_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmiEl = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEixEm = comdat any $_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EaSERKS2_ = comdat any $_ZN6thrust14inclusive_scanINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RKNS7_21execution_policy_baseIT_EET0_S11_SV_T2_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENS_12zip_iteratorIT_EESJ_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESI_SI_SI_SI_SI_SI_SI_E4typeERKSG_RKSH_ = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS_12zip_iteratorIT_EESK_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_E4typeERKSH_RKSI_ = comdat any $_ZN6thrust6system6detail7generic6detail22segmented_scan_functorINS_4pairIaaEEj9add_pairsEC2ES7_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system4cuda6detail3tagEED2Ev = comdat any $_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEED2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS5_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEC2ERKS7_ = comdat any $_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEEC2EmRKS9_ = comdat any $_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev = comdat any $_ZN6thrust6detail22temporary_array_detail16construct_valuesIjNS0_15temporary_arrayIjNS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_ = comdat any $_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEEC2ERKS6_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEC2ERKS8_ = comdat any $_ZN6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IjEEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEC2ES8_ = comdat any $_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEC2ERKS8_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_EC2ERKS9_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE8allocateERS9_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE8allocateERS9_mEN19workaround_warnings8allocateESB_m = comdat any $_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferIjNS_6system4cuda6detail3tagEEENS_4pairINS_7pointerIT_T0_NS_11use_defaultES9_EENSA_15difference_typeEEERKNS_6detail21execution_policy_baseIS8_EESB_ = comdat any $_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEmEC2IS7_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE10deallocateENS_7pointerIjS5_NS_11use_defaultES8_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairIjNS_6system4cuda6detail3tagENS_4pairINS_7pointerIjS6_NS_11use_defaultES9_EElEEEENS7_INS8_IT_T0_S9_S9_EENSE_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferIjNS0_4cuda6detail3tagEEENS_4pairINS_7pointerIT_T0_NS_11use_defaultESB_EENSC_15difference_typeEEERNS_16execution_policyISA_EESD_ = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_ = comdat any $_ZN6thrust4pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EElEC2ERKS7_RKl = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_ = comdat any $_ZNK6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE4baseEv = comdat any $_ZN6thrust6mallocIjNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm = comdat any $_ZN6thrust9make_pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EElEENS_4pairIT_T0_EES9_SA_ = comdat any $_ZN6thrust6system6detail7generic6mallocIjNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm = comdat any $_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerIjS4_NS_11use_defaultES6_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerIjS6_NS_11use_defaultES8_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerIjS4_NS_11use_defaultES6_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerIjS4_NS_11use_defaultES6_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE10deallocateERS9_NS_7pointerIjS7_NS_11use_defaultESD_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE10deallocateERS9_NS_7pointerIjS7_NS_11use_defaultESD_EEmEN19workaround_warnings10deallocateESB_SE_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIjS6_NS_11use_defaultESA_EEm = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEixEl = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElE7derivedEv = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEEENT_9referenceERKSC_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEENT_9referenceERKS9_ = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7derivedEv = comdat any $_ZNK6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_E11dereferenceEv = comdat any $_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EC2ERKS7_ = comdat any $_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_E11assign_fromIPKjEEvT_ = comdat any $_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_E11assign_fromIS5_NS2_3cpp6detail3tagEPKjEEvPT_PT0_T1_ = comdat any $_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_E24strip_const_assign_valueINS4_12cross_systemIS5_NS2_3cpp6detail3tagEEEPKjEEvRKT_T0_ = comdat any $_ZN6thrust6system4cuda6detail13select_systemINS2_3tagENS0_3cpp6detail3tagEEENS2_12cross_systemIT_T0_EERKNS2_16execution_policyIS9_EERKNS6_16execution_policyISA_EE = comdat any $_ZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerIjS4_NS_11use_defaultES9_EEPKjEEvRNS2_12cross_systemIT_T0_EET1_T2_ = comdat any $_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS4_3tagENS2_3cpp6detail3tagEEEEERT_RNS0_21execution_policy_baseISB_EE = comdat any $_ZZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerIjS4_NS_11use_defaultES9_EEPKjEEvRNS2_12cross_systemIT_T0_EET1_T2_EN17war_nvbugs_8816319host_pathERNSD_IS4_S7_EESA_SC_ = comdat any $_ZNK6thrust6system4cuda6detail12cross_systemINS2_3tagENS0_3cpp6detail3tagEE6rotateEv = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEEPKjNS_7pointerIjS8_NS_11use_defaultESD_EEEET1_RKNS_6detail21execution_policy_baseIT_EET0_SM_SF_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_NS_27random_access_traversal_tagESJ_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_NS_27random_access_traversal_tagESJ_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagEPKjlNS_7pointerIjS7_NS_11use_defaultESB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEET_RKNS_15iterator_facadeISB_T0_T1_T2_T3_T4_EENSB_15difference_typeE = comdat any $_ZNK6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EadEv = comdat any $_ZN6thrust16raw_pointer_castIPKjEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKjE3getES3_ = comdat any $_ZN6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEEvRT_NS9_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7advanceEl = comdat any $_ZN6thrust6system4cuda6detail12cross_systemINS2_3tagENS0_3cpp6detail3tagEEC2ERNS_16execution_policyIS4_EERNS9_IS7_EE = comdat any $_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS6_NS_11use_defaultESD_EEEENS7_13binary_negateINS_8equal_toIaEEEEEET2_RNS_16execution_policyIT_EET0_SP_T1_SK_T3_ = comdat any $_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RKNS7_21execution_policy_baseIT_EESP_SP_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS_12zip_iteratorIT_EESI_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESI_SI_SI_SI_SI_SI_E4typeERKSF_RKSG_RKSH_ = comdat any $_ZN6thrust6detail24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEC2ES5_ = comdat any $_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RNS2_16execution_policyIT_EESP_SP_T1_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_ = comdat any $_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEEEENS_15iterator_traitsIT_E15difference_typeESK_SK_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_EN10workaround13parallel_pathERNSQ_IS4_EESI_lSO_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEC2ERKS7_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIaEEEEEEvEEjSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIaEEEEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIaEEEEEEvEEjSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IjSK_EEEEEEEC2IKS8_KSM_KSU_KjKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IjSG_EEEEEC2IKSI_KSQ_KjKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IjNS_9null_typeEEEEC2IKS9_KjKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIaEEEEEEvEElSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIaEEEEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIaEEEEEEvEElSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IlSK_EEEEEEEC2IKS8_KSM_KSU_KlKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IlSG_EEEEEC2IKSI_KSQ_KlKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IlNS_9null_typeEEEEC2IKS9_KlKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEEEEvRT_NSK_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EENS0_16advance_iteratorIlEEEET0_RT_SK_ = comdat any $_ZN6thrust6detail16advance_iteratorIlEC2El = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrIaEEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS3_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SL_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_tailEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SH_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_16advance_iteratorIlEEEET_NS_9null_typeES5_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEEEvRT_NSC_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E7advanceEl = comdat any $_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESA_NS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EEEEEENS_15iterator_traitsIT_E15difference_typeESM_SM_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEEEENS_15iterator_traitsIT_E15difference_typeESN_SN_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElSI_SJ_SC_SK_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENS4_20distance_from_resultIT_T0_E4typeERKSL_RKSM_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENT_15difference_typeERKSK_RKT0_NS4_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE11distance_toISG_EElRKNS0_IT_EE = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS0_4consIS7_NSA_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeEEEEEEET_RKNSA_IT0_T1_EE = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEC2ESG_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeESE_SE_SE_SE_SE_SE_EC2ERKS5_SH_RKSD_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEEC2IKS5_SJ_KSD_KSE_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEC2IKS5_KSD_KSE_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIaEEEENS0_4consISH_NSI_ISC_NS_9null_typeEEEEEEET_RKNSI_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIaEEEENS0_4consISC_NS_9null_typeEEEEET_RKNSI_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESC_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEmIEl = comdat any $_ZN6thrust6detail13binary_negateINS_8equal_toIaEEEC2ERKS3_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEC2ERKS9_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEC2EmRKSB_ = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev = comdat any $_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_4pairIaaEENS0_15temporary_arrayIS4_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERKS8_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEC2ERKSA_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferINS_4pairIaaEENS_6system4cuda6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIaaEENS_6system4cuda6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIaaEENS0_4cuda6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_ = comdat any $_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl = comdat any $_ZN6thrust9make_pairINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_ = comdat any $_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm = comdat any $_ZN6thrust6system6detail7generic15replace_copy_ifINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS_6negateIjEESB_EET2_RNS_16execution_policyIT_EET0_SR_T1_SM_T3_RKT4_ = comdat any $_ZN6thrust6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEES8_EC2ES6_S8_ = comdat any $_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS1_6detail7generic6detail12new_value_ifINS_6negateIjEES9_S9_EEEET2_RKNS5_21execution_policy_baseIT_EET0_SV_T1_SP_T3_ = comdat any $_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS2_6detail12new_value_ifINS_6negateIjEESB_SB_EEEET2_RNS_16execution_policyIT_EET0_SU_T1_SP_T3_ = comdat any $_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESW_SW_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESM_SM_SM_SM_SM_SM_E4typeERKSJ_RKSK_RKSL_ = comdat any $_ZN6thrust6detail24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESA_EEEC2ESB_ = comdat any $_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_SW_T1_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_ = comdat any $_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEEEENS_15iterator_traitsIT_E15difference_typeESO_SO_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_EN10workaround13parallel_pathERNSX_IS4_EESM_lSV_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESB_EEEEvEC2ERKSD_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEET_RKNS_15iterator_facadeISW_T0_T1_T2_T3_T4_EENSW_15difference_typeE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEEjSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEEjSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IjSO_EEEEEEEC2IKS8_KSQ_KS11_KjKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IjSK_EEEEEC2IKSM_KSX_KjKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESC_EEEEvEENS1_IjNS_9null_typeEEEEC2IKSF_KjKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEElSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEElSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IlSO_EEEEEEEC2IKS8_KSQ_KS11_KlKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IlSK_EEEEEC2IKSM_KSX_KlKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESC_EEEEvEENS1_IlNS_9null_typeEEEEC2IKSF_KlKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEEEEvRT_NSO_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EENS0_16advance_iteratorIlEEEET0_RT_SO_ = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS3_INS4_INS5_INS_4pairIaaEES9_SA_SA_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SM_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_tailEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIaaEES7_S8_S8_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SJ_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIaaEES7_S8_S8_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl = comdat any $_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESH_EEEENS7_INSD_ISA_SG_SH_SH_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEEEENS_15iterator_traitsIT_E15difference_typeESQ_SQ_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESI_EEEENS8_INSE_ISB_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEEEENS_15iterator_traitsIT_E15difference_typeESR_SR_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_SV_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSX_IT5_T6_T7_T8_T9_T10_EEE4typeERKS14_RKS1B_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENS4_20distance_from_resultIT_T0_E4typeERKSP_RKSQ_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENT_15difference_typeERKSO_RKT0_NS4_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE11distance_toISK_EElRKNS0_IT_EE = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES9_NS0_4consINS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESI_EEEENSC_INS4_INSD_IS7_SH_SI_SI_EEEENS_9null_typeEEEEEEET_RKNSC_IT0_T1_EE = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EC2ERKS7_RKSF_RKSH_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEEC2IKS7_KSF_KSH_KSI_SQ_SQ_SQ_SQ_SQ_SQ_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIaaEES7_S8_S8_EEEENS_9null_typeEEEEC2IKSA_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS_10device_ptrIS7_EEEENS0_4consINS4_INS5_IjSB_SC_SC_EEEENSK_ISE_NS_9null_typeEEEEEEET_RKNSK_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmIEl = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEixEl = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_ = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_E11dereferenceEv = comdat any $_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_ = comdat any $_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIPKS2_EEvT_ = comdat any $_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIS7_NS4_3cpp6detail3tagEPKS2_EEvPT_PT0_T1_ = comdat any $_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E24strip_const_assign_valueINS6_12cross_systemIS7_NS4_3cpp6detail3tagEEEPKS2_EEvRKT_T0_ = comdat any $_ZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_EN17war_nvbugs_8816319host_pathERNSF_IS4_S7_EESC_SE_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEEPKNS_4pairIaaEENS_7pointerISB_S8_NS_11use_defaultESF_EEEET1_RKNS_6detail21execution_policy_baseIT_EET0_SO_SH_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEElNS_7pointerIS9_S7_NS_11use_defaultESD_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE = comdat any $_ZNK6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EadEv = comdat any $_ZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_ = comdat any $_ZZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_EN10workaround13parallel_pathERNSW_IS4_EESJ_SJ_SO_SU_ = comdat any $_ZN6thrust6system4cuda6detail11scan_detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES5_NS_11use_defaultESD_EEEENS9_INSA_IjS5_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS6_INS7_INS9_INS_10device_ptrISC_EEEESH_SI_SI_SI_SI_SI_SI_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S11_SW_T2_ = comdat any $_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElSJ_SK_SB_SL_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_4gridILm512ELm3EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE20hardware_concurrencyEv = comdat any $_ZN6thrust6system4cuda6detail21aligned_decompositionIlEC2Elll = comdat any $_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail16accumulate_tilesENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_4gridILm128ELm5EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_4gridILm256ELm3EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail19inclusive_downsweepENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_T6_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEED2Ev = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEET_RKNS_15iterator_facadeIST_T0_T1_T2_T3_T4_EENST_15difference_typeE = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENS4_20distance_from_resultIT_T0_E4typeERKSM_RKSN_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENT_15difference_typeERKSL_RKT0_NS4_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE11distance_toISH_EElRKNS0_IT_EE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_ = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_4consINS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSD_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS0_4consINS4_INS5_IjSB_SC_SC_EEEENS_9null_typeEEEEET_RKNSH_IT0_T1_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE15is_stream_validEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE4execEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE6streamEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE12before_eventEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EE4sizeEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm512EE4sizeEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm512EE9heap_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5agentILm3EEC2Ei = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE4makeEiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEC2EiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEC2EiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEE4makeEiiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm512EEC2EiS6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm3EEELm512EEC2ES6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm512EEC2ES8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEElNS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEElNS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKlRKSR_RKSX_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_IlNS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KlKSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_IlNS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KlKSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIlNS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEEEC2IKlKSK_KSQ_KSI_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEC2IKSK_KSQ_KSI_SW_SW_SW_SW_SW_SW_SW_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_6system6detail7generic6detail22segmented_scan_functorINS_4pairIaaEEj9add_pairsEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_3conILm512ELm3EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEEENS3_14parallel_groupIT_Lm0EEESA_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st = comdat any $_ZNK6thrust6system4cuda6detail21aligned_decompositionIlE4sizeEv = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSC_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEEC2EmRKSE_ = comdat any $_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev = comdat any $_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS0_15temporary_arrayIS7_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERKSB_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSD_ = comdat any $_ZN6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEC2ESD_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEC2ERKSD_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_EC2ERKSE_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_mEN19workaround_warnings8allocateESG_m = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS2_INS_7pointerIT_T0_NS_11use_defaultESD_EENSE_15difference_typeEEERKNS_6detail21execution_policy_baseISC_EESF_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EEmEC2ISB_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS6_SA_NS_11use_defaultESD_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS4_INS_7pointerIS7_SB_NS_11use_defaultESD_EElEEEENS4_INSC_IT_T0_SD_SD_EENSI_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS5_INS_7pointerIT_T0_NS_11use_defaultESF_EENSG_15difference_typeEEERNS_16execution_policyISE_EESH_ = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSF_ = comdat any $_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EElEC2ERKSB_RKl = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEE3getESD_ = comdat any $_ZNK6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_E3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE4baseEv = comdat any $_ZN6thrust6mallocINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESD_EERKNS_6detail21execution_policy_baseISC_EEm = comdat any $_ZN6thrust9make_pairINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EElEENS3_IT_T0_EESD_SE_ = comdat any $_ZN6thrust6system6detail7generic6mallocINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESF_EERNS_16execution_policyISE_EEm = comdat any $_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES6_NS_11use_defaultESD_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEmEN19workaround_warnings10deallocateESG_SJ_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS7_SB_NS_11use_defaultESF_EEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16accumulate_tilesENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE15is_stream_validEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE4execEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE6streamEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE12before_eventEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EE4sizeEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm5EEELm128EE4sizeEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EE9heap_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5agentILm5EEC2Ei = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE4makeEiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEC2EiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEC2EiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEE4makeEiiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EEC2EiS6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm5EEELm128EEC2ES6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm5EEELm128EEC2ES8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSX_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KSP_KSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KSL_KSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEC2IKS6_KSH_KSN_KSC_SV_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEC2IKSF_KSL_KS7_SR_SR_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_3conILm128ELm5EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEENS3_14parallel_groupIT_Lm0EEESA_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEEEENS4_7closureIT_NSD_IT0_T1_T2_T3_T4_SG_SG_SG_SG_SG_EEEEST_RKSU_RKSV_RKSW_RKSX_RKSY_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE15is_stream_validEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE4execEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE6streamEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE12before_eventEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchESB_S10_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE9configureESB_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EE4sizeEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm256EE4sizeEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm256EE9heap_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S10_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE4makeEiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEC2EiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEC2EiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEE4makeEiiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm256EEC2EiS6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm3EEELm256EEC2ES6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm256EEC2ES8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_EN10workaround14supported_pathEjjmS15_S12_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS3_3tagENS_11use_defaultESH_EEEElSJ_NS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEEEENS8_17make_tuple_mapperIT_T0_T1_T2_T3_SE_SE_SE_SE_SE_E4typeERKSR_RKSS_RKST_RKSU_RKSV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS8_INS_4pairIaaEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEESG_SG_SG_SG_SG_EEEC2ES7_RKSS_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS0_INS_4pairIaaEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS3_3tagENS_11use_defaultESG_EEEElSI_NS1_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEESD_SD_SD_SD_SD_EC2ERKS7_RKSI_RKlST_RKSO_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS4_3tagENS_11use_defaultESH_EEEENS1_IlNS1_ISJ_NS1_INS2_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESE_EEEEEEEEEC2IKS8_KSJ_KlSX_KSP_KSE_S10_S10_S10_S10_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_IlNS1_ISF_NS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEEEC2IKSF_KlSR_KSL_KS7_SU_SU_SU_SU_SU_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIlNS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKlKSF_KSL_KS7_ST_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_3conILm256ELm3EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEEENS3_14parallel_groupIT_Lm0EEESA_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail19inclusive_downsweepENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_T5_SN_SN_SN_SN_EEEES17_RKS18_RKS19_RKS1A_RKS1B_RKS1C_RKS1D_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchESB_S1E_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1E_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_EN10workaround14supported_pathEjjmS1J_S1G_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_T4_SL_SL_SL_SL_E4typeERKS15_RKS16_RKS17_RKS18_RKS19_RKS1A_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_EEEC2ES7_RKS16_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSW_RKS12_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEEEC2IKS8_KSN_KSP_KSS_KSX_KS13_KSL_S1H_S1H_S1H_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEEEC2IKSJ_KSL_KSO_KST_KSZ_KSH_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS_12zip_iteratorINS9_INS7_INS_10device_ptrISB_EEEENS7_INS8_IjSE_SF_SF_EEEESC_SC_SC_SC_SC_SC_SC_SC_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEEEC2IKS6_KSH_KSP_KSV_KSC_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS_12zip_iteratorINS4_INS2_INS_10device_ptrIS6_EEEENS2_INS3_IjSC_SD_SD_EEEES7_S7_S7_S7_S7_S7_S7_S7_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKSF_KSN_KST_KS7_S11_S11_S11_S11_S11_S11_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS6_SC_NS_11use_defaultESI_EEEESK_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS8_SC_NS_11use_defaultESG_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElSF_S8_SC_SG_SI_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSK_IT5_T6_T7_T8_T9_T10_EEE4typeERKSR_RKSY_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS9_SD_NS_11use_defaultESH_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSK_SL_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSD_21execution_policy_baseIT_EESG_T1_T2_ = comdat any $_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE3getERSE_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_EN10workaround13parallel_pathERNSH_IS4_EESC_lSF_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENSC_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENSC_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrustplINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIaaEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEEjSF_SF_SF_SF_SF_SF_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIaaEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjSD_EEEEEEEC2IKS8_KSH_KSL_KjKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjS6_EEEEEC2IKSD_KSH_KjKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIaaEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEElSF_SF_SF_SF_SF_SF_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIaaEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlSD_EEEEEEEC2IKS8_KSH_KSL_KlKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlS6_EEEEEC2IKSD_KSH_KlKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_ = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEvRT_NSE_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISH_E4typeEE4typeERSH_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENS2_20distance_from_resultIT_T0_E4typeERKSI_RKSJ_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENT_15difference_typeERKSH_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E11distance_toISF_SE_SD_SD_SD_SD_SD_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElSC_S6_SA_SD_SF_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSI_IT5_T6_T7_T8_T9_T10_EEE4typeERKSP_RKSW_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENS_6detail20distance_from_resultIT_T0_E4typeERKSG_RKSH_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENT_15difference_typeERKSE_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE11distance_toISC_SD_S6_SA_SE_SG_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEET_RKNS_15iterator_facadeISJ_T0_T1_T2_T3_T4_EENSJ_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEEEEvRT_NSH_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E7advanceEl = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEEEEvRT_NSM_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_16advance_iteratorIlEEEET0_RT_SM_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEC2ESH_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKSC_RKSE_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEC2IKSC_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEEEEvRT_NSL_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EENS0_16advance_iteratorIlEEEET0_RT_SL_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEC2ESI_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EC2ERKS7_RKSF_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEC2IKS7_KSF_KSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE3getERSB_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_EN10workaround13parallel_pathERNSE_IS4_EES9_lSC_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEEjNS_9null_typeESN_SN_SN_SN_SN_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KjKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKSA_KSE_KjKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEElNS_9null_typeESN_SN_SN_SN_SN_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KlKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKSA_KSE_KlKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_ = comdat any $_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIjS7_NS_11use_defaultESD_EEEESF_ = comdat any $_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEENS_7pointerIjS7_NS_11use_defaultESB_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElSA_jS7_SB_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEENS_7pointerIjS8_NS_11use_defaultESC_EElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERSF_SG_T1_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEESB_EENS2_20distance_from_resultIT_T0_E4typeERKSD_RKSE_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEESB_EENT_15difference_typeERKSC_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E11distance_toISA_S9_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElS7_jS5_S8_SA_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EES8_EENS_6detail20distance_from_resultIT_T0_E4typeERKSB_RKSC_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EES8_EENT_15difference_typeERKS9_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE11distance_toIS7_S8_jS5_S9_SB_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6system6detail7generic13select_systemINS0_4cuda6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE = comdat any $_ZN6thrust6system6detail7generic20select_system_detail10min_systemINS0_4cuda6detail3tagEEERT_RNS_16execution_policyIS8_EESC_ = comdat any $_ZNK6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE4sizeEv = comdat any $_ZN6thrusteqINS_4pairIaaEESaIS2_ES2_NS_23device_malloc_allocatorIS2_EEEEbRKNS_6detail11vector_baseIT_T0_EERKNS7_IT1_T2_EE = comdat any $_ZN8unittest15UnitTestFailureC2Ev = comdat any $_ZN8unittest17UnitTestExceptionlsIA2_cEERS0_RKT_ = comdat any $_ZN8unittest17UnitTestExceptionlsISsEERS0_RKT_ = comdat any $_ZN8unittest17UnitTestExceptionlsIiEERS0_RKT_ = comdat any $_ZN8unittest17UnitTestExceptionlsIA3_cEERS0_RKT_ = comdat any $_ZN8unittest17UnitTestExceptionlsIA22_cEERS0_RKT_ = comdat any $_ZN8unittest17UnitTestExceptionlsIA9_cEERS0_RKT_ = comdat any $_ZN8unittest9type_nameIN6thrust11host_vectorINS1_4pairIaaEESaIS4_EEEEESsv = comdat any $_ZN8unittest15UnitTestFailureC2EOS0_ = comdat any $_ZN8unittest17UnitTestExceptionD2Ev = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE4sizeEv = comdat any $_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIaaEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_ = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIaaEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_NS0_17integral_constantIbLb0EEE = comdat any $_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagESB_EC2ERNS_16execution_policyISB_EESF_S7_S7_ = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_6system4cuda6detail3tagENS9_3cpp6detail3tagEEC2ERNS_16execution_policyISC_EERNSH_ISF_EES8_S8_ = comdat any $_ZN6thrust5equalINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEEbT_SI_T0_ = comdat any $_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEE5beginEv = comdat any $_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system3cpp6detail3tagEED2Ev = comdat any $_ZN6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEC2INS_16execution_policyISB_EESF_EERKT_RKT0_S7_S7_ = comdat any $_ZN6thrust6detail15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEC2ES7_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lEC2ERKS8_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEEvRT_NSA_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E7advanceEl = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIKNS_4pairIaaEEEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7advanceEl = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system3cpp6detail3tagEEC2INS4_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEERNS_16execution_policyIS7_EERNSI_IT_EET0_SO_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEC2ERNS_16execution_policyIS7_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEC2ERKS9_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEEC2ERKSB_ = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE18uninitialized_copyINS6_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEENSH_INS_7pointerIS3_S9_NS_11use_defaultESN_EEEERNS_16execution_policyIT_EET0_SU_SP_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEC2ERKS8_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEC2ERKSA_ = comdat any $_ZN6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEC2ESA_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferINS_4pairIaaEENS_6system3cpp6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIaaEENS_6system3cpp6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIaaEENS0_3cpp6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_ = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_ = comdat any $_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEE3getESA_ = comdat any $_ZNK6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_E3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv = comdat any $_ZN6thrust6mallocINS_4pairIaaEENS_6system3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm = comdat any $_ZN6thrust9make_pairINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_ = comdat any $_ZN6thrust6system6detail7generic6mallocINS_4pairIaaEENS0_3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm = comdat any $_ZN6thrust6mallocINS_6system3cpp6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm = comdat any $_ZNK6thrust7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES5_E3getEv = comdat any $_ZN6thrust6system6detail10sequential6mallocINS0_3cpp6detail3tagEEEPvRNS2_16execution_policyIT_EEm = comdat any $_ZN6thrust7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES5_EC2IvEEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlEC2ERKS8_ = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlE4baseEv = comdat any $_ZN6thrust23return_temporary_bufferINS_6system3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail10sequential4freeINS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENS_15iterator_traitsIT_E15difference_typeESE_SE_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElS8_S5_SC_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES9_EENS2_20distance_from_resultIT_T0_E4typeERKSB_RKSC_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES9_EENT_15difference_typeERKSA_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11distance_toIS8_S7_S9_S9_S9_S9_S9_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElS5_S3_S9_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E4baseEv = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIaaEEEES6_EENS_6detail20distance_from_resultIT_T0_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIaaEEEES6_EENT_15difference_typeERKS7_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE11distance_toIS5_S6_S3_SA_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE4baseEv = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS2_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKS9_EEEENS_7pointerIS9_SC_NS_11use_defaultESL_EEEET2_RNS_16execution_policyIT_EERT0_T1_SU_SN_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS3_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKSA_EEEENS_7pointerISA_SD_NS_11use_defaultESM_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESR_E4typeERNS_16execution_policyIT_EERSP_T1_S11_SR_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system4cuda6detail3tagENS2_3cpp6detail3tagENS0_15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S8_NS_11use_defaultESH_EEEET2_RKNS_16execution_policyIT_EERKNSK_IT0_EET1_ST_SJ_ = comdat any $_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE3getERSB_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS3_3tagENS1_3cpp6detail3tagEEENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISE_S8_NS_11use_defaultESJ_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SR_SL_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_ = comdat any $_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS4_3tagENS2_3cpp6detail3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_NS8_17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEElNS_7pointerISC_S7_NS_11use_defaultESH_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv = comdat any $_ZNK6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EadEv = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrIKNS_4pairIaaEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS8_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEdeEv = comdat any $_ZNK6thrust9referenceIKNS_4pairIaaEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEadEv = comdat any $_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS2_3tagENS0_3cpp6detail3tagEEE14cudaMemcpyKindRKNS2_16execution_policyIT_EERKNS7_16execution_policyIT0_EE = comdat any $_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS2_3tagENS0_3cpp6detail3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EERKNS7_16execution_policyIT0_EE = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_ = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZNK6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_E11dereferenceEv = comdat any $_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_ = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrIKNS_4pairIaaEEEEE3getES6_ = comdat any $_ZNK6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE3getEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENT_9referenceERKSA_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIKNS_4pairIaaEEEEEENT_9referenceERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv = comdat any $_ZNK6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE11dereferenceEv = comdat any $_ZN6thrust16device_referenceIKNS_4pairIaaEEEC2ERKNS_10device_ptrIS3_EE = comdat any $_ZN6thrust9referenceIKNS_4pairIaaEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEC2ERKS5_ = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm = comdat any $_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEEEEbRKNS5_21execution_policy_baseIT_EET0_SN_T1_ = comdat any $_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEEEEbRNS_16execution_policyIT_EET0_SO_T1_ = comdat any $_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEEbRKNS5_21execution_policy_baseIT_EET0_SP_T1_T2_ = comdat any $_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEEbRNS_16execution_policyIT_EET0_SQ_T1_T2_ = comdat any $_ZN6thrusteqINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lSD_S5_SC_SE_SF_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSG_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN6thrust8mismatchINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEENS8_IT0_T1_EERKNS5_21execution_policy_baseIT_EESK_SK_SL_T2_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEESE_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE5equalISD_S8_S5_SC_SE_SF_lEEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrusteqINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSE_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE4baseEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES8_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E5equalIS7_S6_S8_S8_S8_S8_S8_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6system6detail7generic8mismatchINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEENSA_IT0_T1_EERNS_16execution_policyIT_EESM_SM_SN_T2_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_ = comdat any $_ZN6thrust10make_tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESL_SL_SL_SL_SL_SL_SL_E4typeERKSJ_RKSK_ = comdat any $_ZN6thrust11find_if_notINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESR_SR_T1_ = comdat any $_ZN6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEC2ERKS5_ = comdat any $_ZN6thrust9make_pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS4_IT_T0_EESI_SJ_ = comdat any $_ZN6thrust3getILi0ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust3getILi1ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_ = comdat any $_ZN6thrust5tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EC2ERKSD_RKSH_ = comdat any $_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEEC2IKSD_KSH_KSI_SO_SO_SO_SO_SO_SO_SO_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_ = comdat any $_ZN6thrust6system6detail7generic11find_if_notINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIaaEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEET0_RNS_16execution_policyIT_EEST_ST_T1_ = comdat any $_ZN6thrust7find_ifINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_12unary_negateINS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEEEET0_RKNS7_21execution_policy_baseIT_EEST_ST_T1_ = comdat any $_ZN6thrust6detail4not1INS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEENS0_12unary_negateIT_EERKS9_ = comdat any $_ZN6thrust6system6detail10sequential7find_ifINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIaaEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_12unary_negateINS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEEEET0_RNS2_16execution_policyIT_EESV_SV_T1_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEEbEC2ERKS9_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_ST_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSU_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEEbEclINS0_28tuple_of_iterator_referencesIRKS6_NS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESL_EESL_EENS_9null_typeESO_SO_SO_SO_SO_SO_SO_EEEEbRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEppEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEESN_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE5equalISK_EEbRKNS0_IT_EE = comdat any $_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEclINS0_28tuple_of_iterator_referencesIRKS5_RS5_NS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEEbRKT_ = comdat any $_ZN6thrust18raw_reference_castIRKNS_4pairIaaEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS_6detail21enable_if_unwrappableINSF_28tuple_of_iterator_referencesIT_T0_T1_T2_T3_T4_T5_T6_T7_T8_EENSF_13raw_referenceISS_E4typeEE4typeESS_ = comdat any $_ZNK6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEclINS0_28tuple_of_iterator_referencesIRKS4_RS4_NS_9null_typeESC_SC_SC_SC_SC_SC_SC_EEEEbRKT_ = comdat any $_ZNK6thrust6detail8equal_toINS_4pairIaaEEEclIS3_EEbRKS3_RKT_ = comdat any $_ZN6thrust3getILi0ERKNS_4pairIaaEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_ = comdat any $_ZN6thrust3getILi1ERKNS_4pairIaaEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_ = comdat any $_ZN6thrusteqIaaEEbRKNS_4pairIT_T0_EES6_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIaaEES7_NS0_4consIRS5_NS_9null_typeEEEEET_RKNS8_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIaaEERKS5_NS0_4consIS6_NS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIaaEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20raw_reference_detail26raw_reference_tuple_helperENS0_28tuple_of_iterator_referencesIRKNS_4pairIaaEENS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_20raw_reference_casterEEENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISM_EE5valueEE4typeERKSM_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIaaEERS3_NS_9null_typeES7_S7_S7_S7_S7_S7_S7_EC2ERKNS_5tupleIS5_S6_S7_S7_S7_S7_S7_S7_S7_S7_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS0_28tuple_of_iterator_referencesIRKNS_4pairIaaEENS_9referenceIS4_NS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS0_20raw_reference_detail26raw_reference_tuple_helperENS0_20raw_reference_casterELj2EE27do_it_on_the_host_or_deviceERKSH_SK_ = comdat any $_ZN6thrust6detail20raw_reference_casterclINS_4pairIaaEEEENS0_13raw_referenceIKT_E4typeERS7_ = comdat any $_ZN6thrust3getILi0ERKNS_4pairIaaEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZN6thrust6detail20raw_reference_casterclINS_9referenceINS_4pairIaaEENS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EEEENS0_13raw_referenceIKT_E4typeERSG_ = comdat any $_ZN6thrust3getILi1ERKNS_4pairIaaEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZN6thrust5tupleIRKNS_4pairIaaEERS2_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EC2ES4_S5_ = comdat any $_ZN6thrust18raw_reference_castINS_4pairIaaEEEENS_6detail13raw_referenceIKT_E4typeERS6_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIaaEES7_NS0_4consINS_9referenceIS5_NS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeEEEEET_RKNS8_IT0_T1_EE = comdat any $_ZN6thrust18raw_reference_castINS_9referenceINS_4pairIaaEENS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultES9_EES9_EEEENS_6detail13raw_referenceIKT_E4typeERSF_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS_9referenceINS_4pairIaaEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EERKS6_NS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_9referenceINS_4pairIaaEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail4consIRKNS_4pairIaaEENS1_IRS3_NS_9null_typeEEEEC2IS4_S3_KS7_SB_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEENT_9referenceERKSO_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISO_EE5valueEE4typeERKSO_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIaaEENS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKNS_5tupleIS5_SE_SF_SF_SF_SF_SF_SF_SF_SF_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EENS0_20dereference_iterator5applyESL_Lj2EE27do_it_on_the_host_or_deviceERKSK_SL_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEENS1_5applyIT_E4typeERKSG_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENS1_5applyIT_E4typeERKSF_ = comdat any $_ZN6thrust5tupleIRKNS_4pairIaaEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EC2ES4_RKSD_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEENT_9referenceERKSF_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv = comdat any $_ZN6thrust6detail4consIRKNS_4pairIaaEENS1_INS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeEEEEC2IS4_KSE_KSF_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_9referenceINS_4pairIaaEENS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESA_EESA_EENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EENS0_18increment_iteratorEEET0_RT_SN_ = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SI_ = comdat any $_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE9incrementEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEEvRT_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E9incrementEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E9incrementEv = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE9incrementEv = comdat any $_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEC2ERKS7_ = comdat any $_ZN6thrust4pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS0_IaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS4_SB_NS_11use_defaultESE_EEEEEC2ERKSC_RKSG_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEESF_NS0_4consINS5_INS_7pointerIS7_SE_NS_11use_defaultESK_EEEENS_9null_typeEEEEET_RKNSI_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS0_15tagged_iteratorINS4_IPKS7_EESB_EENS0_4consISE_NS_9null_typeEEEEET_RKNSM_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESF_T1_T2_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_9referenceINS_4pairIaaEENS_7pointerIS8_NS_6system3cpp6detail3tagENS_11use_defaultESE_EESE_EEEEvRKT_ = comdat any $_ZN6thrust6detail23allocator_traits_detail5gozerclINS_4pairIaaEEEEvRT_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEC2INS2_IS4_EEEERKNS1_IT_EEPNS0_21enable_if_convertibleISA_S6_vE4typeE = comdat any $_ZN6thrust10device_ptrIKNS_4pairIaaEEEC2IS2_EERKNS0_IT_EE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_EC2ERKS7_ = comdat any $_ZN6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2INSA_IS2_EEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISF_SC_vE4typeE = comdat any $_ZN8unittest17UnitTestExceptionC2Ev = comdat any $_ZStorSt13_Ios_OpenmodeS_ = comdat any $_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED2Ev = comdat any $_ZStorSt12_Ios_IostateS_ = comdat any $_ZNSsC2IPcEET_S1_RKSaIcE = comdat any $_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcE = comdat any $_ZNSs16_S_construct_auxIPcEES0_T_S1_RKSaIcESt12__false_type = comdat any $_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag = comdat any $_ZSteqIcEbRKSaIT_ES3_ = comdat any $_ZN9__gnu_cxx17__is_null_pointerIcEEbPT_ = comdat any $_ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_ = comdat any $_ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag = comdat any $_ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_ = comdat any $_ZNSt11char_traitsIcE6assignERcRKc = comdat any $_ZNSt11char_traitsIcE4copyEPcPKcm = comdat any $_ZN8unittest17UnitTestExceptionC2EOS0_ = comdat any $_ZNSs12_Alloc_hiderC2ERKS_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE7destroyENS0_15normal_iteratorIPS3_EES8_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeISaINS_4pairIaaEEEPS3_lEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lS6_S4_SA_SB_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaINS_4pairIaaEEEPS4_lEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERS8_S9_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIaaEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS8_21execution_policy_baseIT_EESB_T1_T2_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIaaEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_4pairIaaEEEEvRT_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIaaEEEES7_EENS2_20distance_from_resultIT_T0_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIaaEEEES7_EENT_15difference_typeERKS8_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E11distance_toIS6_S5_S7_S7_S7_S7_S7_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEEEvRT_NS8_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E7advanceEl = comdat any $_ZN17TestPairScanByKeyIsEclEm = comdat any $_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeyiLj2EEclImEEvT_ = comdat any $_ZN8unittest15random_integersIsEEN6thrust11host_vectorIT_SaIS3_EEEm = comdat any $_ZN6thrust11host_vectorINS_4pairIssEESaIS2_EEC2Em = comdat any $_ZN6thrust9transformINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEE17make_pair_functorEET1_T_SB_T0_SA_T2_ = comdat any $_ZN6thrust6detail11vector_baseIsSaIsEE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIsSaIsEE3endEv = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv = comdat any $_ZN6thrust13device_vectorIsNS_23device_malloc_allocatorIsEEEC2IsSaIsEEERKNS_11host_vectorIT_T0_EE = comdat any $_ZN6thrust13device_vectorINS_4pairIssEENS_23device_malloc_allocatorIS2_EEEC2IS2_SaIS2_EEERKNS_11host_vectorIT_T0_EE = comdat any $_ZN6thrust11host_vectorIsSaIsEEC2IbSaIbEEERKNS0_IT_T0_EE = comdat any $_ZN6thrust4pairIssEC2IiiEERKNS0_IT_T0_EE = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorIPsEENS2_IPNS_4pairIssEEEES8_S6_NS_8equal_toIsEE9add_pairsEET1_T_SD_T0_SC_T2_T3_T4_ = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorINS_10device_ptrIsEEEENS2_INS3_INS_4pairIssEEEEEES9_S7_NS_8equal_toIsEE9add_pairsEET1_T_SE_T0_SD_T2_T3_T4_ = comdat any $_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE3endEv = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN8unittest18assert_equal_quietIN6thrust11host_vectorINS1_4pairIssEESaIS4_EEENS1_13device_vectorIS4_NS1_23device_malloc_allocatorIS4_EEEEEEvRKT_RKT0_RKSsi = comdat any $_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEED2Ev = comdat any $_ZN6thrust6detail11vector_baseIsSaIsEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EED2Ev = comdat any $_ZN6thrust11host_vectorIsSaIsEEC2Em = comdat any $_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEEN8unittest14random_integerIsLb0EEEEET0_T_SC_SB_T1_ = comdat any $_ZN6thrust6detail11vector_baseIsSaIsEEC2Em = comdat any $_ZNSaIsEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageIsSaIsEEC2ERKS2_ = comdat any $_ZN9__gnu_cxx13new_allocatorIsED2Ev = comdat any $_ZN6thrust6detail11vector_baseIsSaIsEE12default_initEm = comdat any $_ZN6thrust6detail18contiguous_storageIsSaIsEED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIsEC2Ev = comdat any $_ZNSaIsEC2ERKS_ = comdat any $_ZN6thrust6detail15normal_iteratorIPsEC2ES2_ = comdat any $_ZN9__gnu_cxx13new_allocatorIsEC2ERKS1_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_ = comdat any $_ZN6thrust6detail18contiguous_storageIsSaIsEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageIsSaIsEE19default_construct_nENS0_15normal_iteratorIPsEEm = comdat any $_ZNK6thrust6detail11vector_baseIsSaIsEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIsEE8allocateERS2_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaIsEE8allocateERS2_mEN19workaround_warnings8allocateES4_m = comdat any $_ZN9__gnu_cxx13new_allocatorIsE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorIsE8max_sizeEv = comdat any $_ZN6thrust6detail23default_construct_rangeISaIsEPsmEEvRT_T0_T1_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIsEPsmEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_ = comdat any $_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPsmsEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_ = comdat any $_ZN6thrust6detail16allocator_systemISaIsEE3getERS2_ = comdat any $_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPsmsEET0_RNS_16execution_policyIT_EES8_T1_RKT2_ = comdat any $_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPsmsEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPsmsEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_ = comdat any $_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPsmsEET0_RNS_16execution_policyIT_EES8_T1_RKT2_ = comdat any $_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPsmNS_6detail12fill_functorIsEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_ = comdat any $_ZN6thrust6detail12fill_functorIsEC2ERKs = comdat any $_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPsmNS_6detail12fill_functorIsEEEET0_RNS_16execution_policyIT_EESB_T1_T2_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPsmNS_6detail21host_generate_functorINS6_12fill_functorIsEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_ = comdat any $_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIsEEEC2ES3_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPsmNS_6detail21host_generate_functorINS8_12fill_functorIsEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIsEEEEvEC2ERKS5_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIsEEEEvEclIsEEvRT_ = comdat any $_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIsEEEclIsEEvRKT_ = comdat any $_ZN6thrust18raw_reference_castIsEENS_6detail13raw_referenceIT_E4typeERS3_ = comdat any $_ZNK6thrust6detail12fill_functorIsEclEv = comdat any $_ZN6thrust16raw_pointer_castIPsEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_ = comdat any $_ZN6thrust6detail14pointer_traitsIPsE3getES2_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemISaIsEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_ = comdat any $_ZN6thrust6detail18contiguous_storageIsSaIsEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageIsSaIsEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIsEE10deallocateERS2_Psm = comdat any $_ZZN6thrust6detail16allocator_traitsISaIsEE10deallocateERS2_PsmEN19workaround_warnings10deallocateES4_S5_m = comdat any $_ZN9__gnu_cxx13new_allocatorIsE10deallocateEPsm = comdat any $_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPsEEN8unittest14random_integerIsLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_ = comdat any $_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPsEEN8unittest14random_integerIsLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_ = comdat any $_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPsEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_ = comdat any $_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIsLb0EEEEC2ES4_ = comdat any $_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPsEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPsEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEvEC2ERKS6_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRsNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE = comdat any $_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPsEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPsEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIsLb0EEEEclINS0_28tuple_of_iterator_referencesImRsNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_ = comdat any $_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRsNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_ = comdat any $_ZNK8unittest14random_integerIsLb0EEclEj = comdat any $_ZN6thrust3getILi0EmNS_6detail4consIRsNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_ = comdat any $_ZN6thrust3getILi1EmNS_6detail4consIRsNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_ = comdat any $_ZN6thrust6random24uniform_int_distributionIsEC2Ess = comdat any $_ZN6thrust6random24uniform_int_distributionIsEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEsRT_ = comdat any $_ZN6thrust4pairIssEC2ERKsS3_ = comdat any $_ZN6thrust6random24uniform_int_distributionIsEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEsRT_RKNS_4pairIssEE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRsNS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRsmNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRsS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE = comdat any $_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRsNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRsNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesImRsNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPsEEEENS1_5applyIT_E4typeERKS7_ = comdat any $_ZN6thrust5tupleImRsNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPsEEEENT_9referenceERKS6_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv = comdat any $_ZN6thrust6detail4consImNS1_IRsNS_9null_typeEEEEC2IKmsKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRsNS_9null_typeEEC2IsEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPsEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPsEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPsEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEEC2ERKSA_ = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_ = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPsEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPsEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEC2Em = comdat any $_ZNSaIN6thrust4pairIssEEEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EEC2ERKS4_ = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE12default_initEm = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEEC2Ev = comdat any $_ZNSaIN6thrust4pairIssEEEC2ERKS2_ = comdat any $_ZN6thrust6detail15normal_iteratorIPNS_4pairIssEEEC2ES4_ = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEEC2ERKS4_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_EC2ERKS5_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE19default_construct_nENS0_15normal_iteratorIPS3_EEm = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE8allocateERS4_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE8allocateERS4_mEN19workaround_warnings8allocateES6_m = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE8max_sizeEv = comdat any $_ZN6thrust6detail23default_construct_rangeISaINS_4pairIssEEEPS3_mEEvRT_T0_T1_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaINS_4pairIssEEEPS4_mEENS0_9enable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS8_SA_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIssEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS6_EEEEET0_RKNS8_21execution_policy_baseIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16allocator_systemISaINS_4pairIssEEEE3getERS4_ = comdat any $_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEC2ERS5_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIssEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS8_EEEEET0_RNS2_16execution_policyIT_EESF_T1_T2_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEEvEC2ERKS7_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEEvEclIS5_EEvRT_ = comdat any $_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEclIS4_EEvRT_ = comdat any $_ZN6thrust18raw_reference_castINS_4pairIssEEEENS_6detail13raw_referenceIT_E4typeERS5_ = comdat any $_ZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE9constructIS3_EEvRS4_PT_ = comdat any $_ZN6thrust6detail23allocator_traits_detail9constructISaINS_4pairIssEEES4_EENS0_9enable_ifIXsr21has_member_construct1IT_T0_EE5valueEvE4typeERS7_PS8_ = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE9constructIS3_JEEEvPT_DpOT0_ = comdat any $_ZN6thrust4pairIssEC2Ev = comdat any $_ZN6thrust16raw_pointer_castIPNS_4pairIssEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS6_ = comdat any $_ZN6thrust6detail14pointer_traitsIPNS_4pairIssEEE3getES4_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemISaINS_4pairIssEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS7_E4typeEE4typeERS7_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE10deallocateERS4_PS3_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE10deallocateERS4_PS3_mEN19workaround_warnings10deallocateES6_S7_m = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE10deallocateEPS3_m = comdat any $_ZN6thrust9transformINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPsEES8_NS6_IPNS_4pairIssEEEE17make_pair_functorEET2_RKNS5_21execution_policy_baseIT_EET0_SK_T1_SE_T3_ = comdat any $_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPsEESA_NS8_IPNS_4pairIssEEEE17make_pair_functorEET2_RNS_16execution_policyIT_EET0_SL_T1_SG_T3_ = comdat any $_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEESA_NS8_IPNS_4pairIssEEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS7_24binary_transform_functorI17make_pair_functorEEEET0_RKNS7_21execution_policy_baseIT_EESL_SL_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS_12zip_iteratorIT_EESD_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESD_SD_SD_SD_SD_SD_E4typeERKSA_RKSB_RKSC_ = comdat any $_ZN6thrust3getILi2ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEESC_NSA_IPNS_4pairIssEEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEENS9_24binary_transform_functorI17make_pair_functorEEEET0_RNS2_16execution_policyIT_EESN_SN_T1_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElSD_SE_SI_SJ_SN_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSO_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEclINS0_28tuple_of_iterator_referencesIRsS8_RNS_4pairIssEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEvRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEppEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEESE_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE5equalISB_EEbRKNS0_IT_EE = comdat any $_ZN6thrusteqINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPsEES5_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E5equalIS4_S3_S5_S5_S5_S5_S5_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPsEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIssEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEclINS0_28tuple_of_iterator_referencesIRsS6_RNS_4pairIssEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi2ET_E4typeEE4typeESE_ = comdat any $_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesIRsS3_RNS_4pairIssEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_13raw_referenceIKT_E4typeERSB_ = comdat any $_ZN6thrust3getILi2ERsNS_6detail4consIS1_NS3_IRNS_4pairIssEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_ = comdat any $_ZN17make_pair_functorclIssEEN6thrust4pairIT_T0_EERKS3_RKS4_ = comdat any $_ZN6thrust3getILi0ERsNS_6detail4consIS1_NS3_IRNS_4pairIssEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_ = comdat any $_ZN6thrust3getILi1ERsNS_6detail4consIS1_NS3_IRNS_4pairIssEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRNS_4pairIssEERsNS0_4consIS7_NS8_IS6_NS_9null_typeEEEEEEET_RNS8_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIssEERsNS0_4consIS6_NS_9null_typeEEEEET_RNS8_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIssEES6_NS_9null_typeEEET_RNS0_4consIT0_T1_EE = comdat any $_ZN6thrust9make_pairIssEENS_4pairIT_T0_EES2_S3_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRsS4_NS0_4consIS4_NS5_IRNS_4pairIssEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRsS4_NS0_4consIS4_NS5_IRNS_4pairIssEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRsS4_NS0_4consIRNS_4pairIssEENS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesIRsS3_RNS_4pairIssEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_14pointer_traitsIT_E11raw_pointerERKSC_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesIRsS3_RNS_4pairIssEENS_9null_typeES7_S7_S7_S7_S7_S7_EEE3getESA_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEENT_9referenceERKSF_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISF_EE5valueEE4typeERKSF_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesIRsS2_RNS_4pairIssEENS_9null_typeES6_S6_S6_S6_S6_S6_EC2ERKNS_5tupleIS2_S2_S5_S6_S6_S6_S6_S6_S6_S6_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EENS0_20dereference_iterator5applyESC_Lj3EE27do_it_on_the_host_or_deviceERKSB_SC_ = comdat any $_ZN6thrust3getILi1ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPNS_4pairIssEEEEEENS1_5applyIT_E4typeERKS9_ = comdat any $_ZN6thrust5tupleIRsS1_RNS_4pairIssEENS_9null_typeES5_S5_S5_S5_S5_S5_EC2ES1_S1_S4_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPsEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIssEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPsEES6_NS0_4consINS4_IPNS_4pairIssEEEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPNS_4pairIssEEEEEENT_9referenceERKS8_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E11dereferenceEv = comdat any $_ZN6thrust6detail4consIRsNS1_IS2_NS1_IRNS_4pairIssEENS_9null_typeEEEEEEC2IssS4_KS6_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRsNS1_IRNS_4pairIssEENS_9null_typeEEEEC2IsS4_KS6_SA_SA_SA_SA_SA_SA_SA_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRNS_4pairIssEENS_9null_typeEEC2IS3_EERT_RKS5_SB_SB_SB_SB_SB_SB_SB_SB_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EENS0_18increment_iteratorEEET0_RT_SE_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_IS4_NS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPsEENS3_INS4_IPNS_4pairIssEEEENS_9null_typeEEEEENS0_18increment_iteratorEEET0_RT_SF_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_IS4_NS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEE8get_tailEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SC_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPNS_4pairIssEEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPNS_4pairIssEEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E9incrementEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEC2ESB_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEENS_9null_typeES9_S9_S9_S9_S9_S9_EC2ERKS4_SC_RKS8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_IS4_NS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEC2IKS4_SE_KS8_KS9_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEC2IKS4_KS8_KS9_SF_SF_SF_SF_SF_SF_SF_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEEC2IKS6_EERT_RKS7_SE_SE_SE_SE_SE_SE_SE_SE_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorIPNS_4pairIssEEEENS4_IPsEENS0_4consISC_NSD_IS8_NS_9null_typeEEEEEEET_RKNSD_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPNS_4pairIssEEEENS4_IPsEENS0_4consIS8_NS_9null_typeEEEEET_RKNSD_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPNS_4pairIssEEEES8_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail18contiguous_storageIsSaIsEE5beginEv = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPsEEEEvRT_NS6_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEEC2IsSaIsEEERKNS1_IT_T0_EE = comdat any $_ZN6thrust23device_malloc_allocatorIsEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEEC2ERKS3_ = comdat any $_ZN6thrust23device_malloc_allocatorIsED2Ev = comdat any $_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE10range_initINS0_15normal_iteratorIPKsEEEEvT_SA_ = comdat any $_ZNK6thrust6detail11vector_baseIsSaIsEE5beginEv = comdat any $_ZNK6thrust6detail11vector_baseIsSaIsEE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEED2Ev = comdat any $_ZN6thrust23device_malloc_allocatorIsEC2ERKS1_ = comdat any $_ZN6thrust10device_ptrIsEC2IsEEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_10device_ptrIsEEEC2ES3_ = comdat any $_ZN6thrust7pointerIsNS_6system4cuda6detail3tagENS_16device_referenceIsEENS_10device_ptrIsEEEC2IsEEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEC2ERKS3_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_ = comdat any $_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE10range_initINS0_15normal_iteratorIPKsEEEEvT_SA_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorIPKsEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_ = comdat any $_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE17allocate_and_copyINS0_15normal_iteratorIPKsEEEEvmT_SA_RNS0_18contiguous_storageIsS3_EE = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKsEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKsEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_sS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKsEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKsEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv = comdat any $_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE10deallocateEv = comdat any $_ZNK6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE8capacityEv = comdat any $_ZNK6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE8max_sizeEv = comdat any $_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE18uninitialized_copyINS0_15normal_iteratorIPKsEEEENS6_INS_10device_ptrIsEEEET_SD_SC_ = comdat any $_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE5beginEv = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE7destroyENS0_15normal_iteratorINS_10device_ptrIsEEEES8_ = comdat any $_ZNK6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE10deallocateERS3_NS_10device_ptrIsEEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE10deallocateERS3_NS_10device_ptrIsEEmEN19workaround_warnings10deallocateES5_S7_m = comdat any $_ZN6thrust23device_malloc_allocatorIsE10deallocateENS_10device_ptrIsEEm = comdat any $_ZN6thrust10device_ptrIvEC2IsEERKNS0_IT_EE = comdat any $_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_IsEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISC_S9_vE4typeE = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrIsEEE3getES3_ = comdat any $_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_16device_referenceIsEENS_10device_ptrIsEEE3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE4baseEv = comdat any $_ZNK6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE8max_sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE8max_sizeERKS3_ = comdat any $_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorIsEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS6_E9size_typeEE4typeERKS6_ = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE8allocateERS3_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE8allocateERS3_mEN19workaround_warnings8allocateES5_m = comdat any $_ZN6thrust23device_malloc_allocatorIsE8allocateEmNS_10device_ptrIKsEE = comdat any $_ZN6thrust10device_ptrIKsEC2IsEEPT_ = comdat any $_ZNK6thrust23device_malloc_allocatorIsE8max_sizeEv = comdat any $_ZN6thrust13device_mallocIsEENS_10device_ptrIT_EEm = comdat any $_ZN6thrust6mallocIsNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm = comdat any $_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_ = comdat any $_ZN6thrust6system6detail7generic6mallocIsNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm = comdat any $_ZN6thrust7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IsEEPT_ = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPssS5_NS_27random_access_traversal_tagENS_9referenceIsS7_S6_EElEC2ERKS8_ = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPssS5_NS_27random_access_traversal_tagENS_9referenceIsS7_S6_EElE4baseEv = comdat any $_ZN6thrust7pointerIKsNS_6system4cuda6detail3tagENS_16device_referenceIS1_EENS_10device_ptrIS1_EEEC2IsEEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIKsEEPS2_sNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS2_EElEC2ERKS4_ = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIsEENS0_15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_RNS_16execution_policyIT_EERT0_T1_SL_SE_ = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIsEENS0_15normal_iteratorIPKsEENS_10device_ptrIsEEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESI_E4typeERNS_16execution_policyIT_EERSG_T1_SS_SI_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_RKNS_16execution_policyIT_EERKNSG_IT0_EET1_SP_SF_ = comdat any $_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorIsEEE3getERS3_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET1_RKNSA_21execution_policy_baseIT_EET0_SN_SH_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS8_17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEElNS_10device_ptrIsEEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEET_RKNS_15iterator_facadeISA_T0_T1_T2_T3_T4_EENSA_15difference_typeE = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrIsEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEdeEv = comdat any $_ZNK6thrust9referenceIsNS_10device_ptrIsEENS_16device_referenceIsEEEadEv = comdat any $_ZN6thrust16raw_pointer_castIPKsEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIsEEEENT_9referenceERKS4_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv = comdat any $_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_16device_referenceIsEENS_10device_ptrIsEEE11dereferenceEv = comdat any $_ZN6thrust16device_referenceIsEC2ERKNS_10device_ptrIsEE = comdat any $_ZN6thrust9referenceIsNS_10device_ptrIsEENS_16device_referenceIsEEEC2ERKS2_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKsE3getES3_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKsEEEENT_9referenceERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIsEEEEvRT_NS4_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorIsEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS6_E4typeEE4typeERS6_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl = comdat any $_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorIsEENS_10device_ptrIsEElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElS5_sS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorIsEENS_10device_ptrIsEElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS8_S9_T1_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElS2_sS6_S7_S9_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIsEES3_EENS_6detail20distance_from_resultIT_T0_E4typeERKS6_RKS7_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIsEES3_EENT_15difference_typeERKS4_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE11distance_toIS2_S3_sS7_S8_SA_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust6detail18contiguous_storageIsSaIsEE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorIPKsEC2IPsEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_ = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPKsEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKsEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKsEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKsEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEEC2IS3_SaIS3_EEERKNS1_IT_T0_EE = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIssEEEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEEC2ERKS5_ = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIssEEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_ = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEED2Ev = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIssEEEC2ERKS3_ = comdat any $_ZN6thrust10device_ptrINS_4pairIssEEEC2IS2_EEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEC2ES5_ = comdat any $_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEEC2IS2_EEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEC2ERKS5_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENS_15iterator_traitsIT_E15difference_typeES9_S9_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE17allocate_and_copyINS0_15normal_iteratorIPKS3_EEEEvmT_SC_RNS0_18contiguous_storageIS3_S5_EE = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENS_15iterator_traitsIT_E15difference_typeESC_SC_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIssEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIssEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10deallocateEv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8capacityEv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE18uninitialized_copyINS0_15normal_iteratorIPKS3_EEEENS8_INS_10device_ptrIS3_EEEET_SF_SE_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE7destroyENS0_15normal_iteratorINS_10device_ptrIS3_EEEESA_ = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE10deallocateERS5_NS_10device_ptrIS4_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE10deallocateERS5_NS_10device_ptrIS4_EEmEN19workaround_warnings10deallocateES7_S9_m = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIssEEE10deallocateENS_10device_ptrIS2_EEm = comdat any $_ZN6thrust10device_ptrIvEC2INS_4pairIssEEEERKNS0_IT_EE = comdat any $_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_INS_4pairIssEEEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISE_S9_vE4typeE = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIssEEEEE3getES5_ = comdat any $_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE4baseEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE8max_sizeERKS5_ = comdat any $_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorINS_4pairIssEEEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS8_E9size_typeEE4typeERKS8_ = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE8allocateERS5_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE8allocateERS5_mEN19workaround_warnings8allocateES7_m = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIssEEE8allocateEmNS_10device_ptrIKS2_EE = comdat any $_ZN6thrust10device_ptrIKNS_4pairIssEEEC2IS2_EEPT_ = comdat any $_ZNK6thrust23device_malloc_allocatorINS_4pairIssEEE8max_sizeEv = comdat any $_ZN6thrust13device_mallocINS_4pairIssEEEENS_10device_ptrIT_EEm = comdat any $_ZN6thrust6mallocINS_4pairIssEENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm = comdat any $_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_ = comdat any $_ZN6thrust6system6detail7generic6mallocINS_4pairIssEENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm = comdat any $_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_ = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEE3getESA_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_ = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv = comdat any $_ZN6thrust7pointerIKNS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2IS2_EEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIssEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEC2ERKS6_ = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIssEEEENS0_15normal_iteratorIPKS8_EENS_10device_ptrIS8_EEEET2_RNS_16execution_policyIT_EERT0_T1_SN_SG_ = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIssEEEENS0_15normal_iteratorIPKS9_EENS_10device_ptrIS9_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESK_E4typeERNS_16execution_policyIT_EERSI_T1_SU_SK_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_RKNS_16execution_policyIT_EERKNSI_IT0_EET1_SR_SH_ = comdat any $_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorINS_4pairIssEEEEE3getERS5_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISD_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SP_SJ_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_NS8_17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEElNS_10device_ptrISB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEET_RKNS_15iterator_facadeISC_T0_T1_T2_T3_T4_EENSC_15difference_typeE = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrINS_4pairIssEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEdeEv = comdat any $_ZNK6thrust9referenceINS_4pairIssEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEadEv = comdat any $_ZN6thrust16raw_pointer_castIPKNS_4pairIssEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrINS_4pairIssEEEEEENT_9referenceERKS6_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv = comdat any $_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE11dereferenceEv = comdat any $_ZN6thrust16device_referenceINS_4pairIssEEEC2ERKNS_10device_ptrIS2_EE = comdat any $_ZN6thrust9referenceINS_4pairIssEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEC2ERKS4_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS_4pairIssEEE3getES5_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENT_9referenceERKS9_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E11dereferenceEv = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_10device_ptrINS_4pairIssEEEEEEvRT_NS6_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorINS_4pairIssEEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS8_E4typeEE4typeERS8_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEEEvRT_NS9_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl = comdat any $_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIssEEEENS_10device_ptrIS4_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElS7_S5_SB_SC_SE_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSG_IT5_T6_T7_T8_T9_T10_EEE4typeERKSN_RKSU_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIssEEEENS_10device_ptrIS5_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSA_SB_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_10device_ptrINS_4pairIssEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS9_21execution_policy_baseIT_EESC_T1_T2_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIssEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIssEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_EN10workaround13parallel_pathERNSD_IS4_EES8_lSB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEEjNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KjKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKS5_KS9_KjKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEElNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KlKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKS5_KS9_KlKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElS4_S3_S8_S9_SB_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIssEEEES5_EENS_6detail20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIssEEEES5_EENT_15difference_typeERKS6_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE11distance_toIS4_S5_S3_S9_SA_SC_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorIPKNS_4pairIssEEEC2IPS3_EERKNS1_IT_EEPNS0_21enable_if_convertibleIS9_S5_vE4typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_ = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEEvRT_NS9_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl = comdat any $_ZN6thrust6detail11vector_baseIsSaIsEEC2IbSaIbEEERKNS1_IT_T0_EE = comdat any $_ZN6thrust6detail11vector_baseIsSaIsEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_ = comdat any $_ZN6thrust6detail11vector_baseIsSaIsEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust6detail11vector_baseIsSaIsEE17allocate_and_copyINS0_15normal_iteratorIPKbEEEEvmT_S9_RNS0_18contiguous_storageIsS2_EE = comdat any $_ZNK6thrust6detail11vector_baseIsSaIsEE8capacityEv = comdat any $_ZNK6thrust6detail11vector_baseIsSaIsEE8max_sizeEv = comdat any $_ZN6thrust6detail18contiguous_storageIsSaIsEE18uninitialized_copyINS0_15normal_iteratorIPKbEEEENS5_IPsEET_SB_SA_ = comdat any $_ZN6thrust6detail18contiguous_storageIsSaIsEE7destroyENS0_15normal_iteratorIPsEES6_ = comdat any $_ZNK6thrust6detail18contiguous_storageIsSaIsEE8max_sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIsEE8max_sizeERKS2_ = comdat any $_ZN6thrust6detail23allocator_traits_detail8max_sizeISaIsEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS5_E9size_typeEE4typeERKS5_ = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIsENS0_15normal_iteratorIPKbEEPsEET2_RNS_16execution_policyIT_EERT0_T1_SJ_SC_ = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIsENS0_15normal_iteratorIPKbEEPsEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESG_E4typeERNS_16execution_policyIT_EERSE_T1_SQ_SG_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagES5_NS0_15normal_iteratorIPKbEEPsEET2_RKNS_16execution_policyIT_EERKNSC_IT0_EET1_SL_SB_ = comdat any $_ZN6thrust4copyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPsEET1_RKNS5_21execution_policy_baseIT_EET0_SH_SB_ = comdat any $_ZN6thrust6system6detail10sequential4copyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPsEET1_RNS2_16execution_policyIT_EET0_SI_SD_ = comdat any $_ZN6thrust6system6detail10sequential11copy_detail4copyINS_6detail15normal_iteratorIPKbEEPsEET0_T_SC_SB_NS5_17integral_constantIbLb0EEE = comdat any $_ZN6thrust6system6detail10sequential12general_copyINS_6detail15normal_iteratorIPKbEEPsEET0_T_SB_SA_ = comdat any $_ZN6thrust6system6detail10sequential19general_copy_detail11iter_assignIPsNS_6detail15normal_iteratorIPKbEEEENS6_9enable_ifIXsr23reference_is_assignableIT0_T_EE5valueEvE4typeESD_SC_ = comdat any $_ZN6thrust6detail13destroy_rangeISaIsEPslEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIsEPslEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPsEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPsEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPsEENS6_IPNS_4pairIssEEEESC_SA_NS_8equal_toIsEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SM_T1_SG_T3_T4_T5_ = comdat any $_ZN6thrust6system6detail10sequential21exclusive_scan_by_keyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPsEENS8_IPNS_4pairIssEEEESE_SC_NS_8equal_toIsEE9add_pairsEET2_RNS2_16execution_policyIT_EET0_SN_T1_SI_T3_T4_T5_ = comdat any $_ZN6thrustneINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN9add_pairsclIN6thrust4pairIssEES3_EET_RKS4_RKT0_ = comdat any $_ZNK6thrust8equal_toIsEclERKsS3_ = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS6_INS7_INS_4pairIssEEEEEESD_SB_NS_8equal_toIsEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SN_T1_SH_T3_T4_T5_ = comdat any $_ZN6thrust6system6detail7generic21exclusive_scan_by_keyINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS8_INS9_INS_4pairIssEEEEEESF_SD_NS_8equal_toIsEE9add_pairsEET2_RNS_16execution_policyIT_EET0_SO_T1_SJ_T3_T4_T5_ = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEET_RKNS_15iterator_facadeISF_T0_T1_T2_T3_T4_EENSF_15difference_typeE = comdat any $_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEES9_NS6_INS_7pointerIjS4_NS_11use_defaultESB_EEEENS5_13binary_negateINS_8equal_toIsEEEEEET2_RKNS5_21execution_policy_baseIT_EET0_SO_T1_SI_T3_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEmiEl = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE = comdat any $_ZN6thrust6detail4not2INS_8equal_toIsEEEENS0_13binary_negateIT_EERKS5_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EEm = comdat any $_ZN6thrust15replace_copy_ifINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS_6negateIjEES9_EET2_RKNS5_21execution_policy_baseIT_EET0_SQ_T1_SK_T3_RKT4_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmiEl = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEixEm = comdat any $_ZN6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EaSERKS2_ = comdat any $_ZN6thrust14inclusive_scanINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RKNS7_21execution_policy_baseIT_EET0_S11_SV_T2_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENS_12zip_iteratorIT_EESJ_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESI_SI_SI_SI_SI_SI_SI_E4typeERKSG_RKSH_ = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS_12zip_iteratorIT_EESK_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_E4typeERKSH_RKSI_ = comdat any $_ZN6thrust6system6detail7generic6detail22segmented_scan_functorINS_4pairIssEEj9add_pairsEC2ES7_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIssEENS_6system4cuda6detail3tagEED2Ev = comdat any $_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS6_NS_11use_defaultESD_EEEENS7_13binary_negateINS_8equal_toIsEEEEEET2_RNS_16execution_policyIT_EET0_SP_T1_SK_T3_ = comdat any $_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RKNS7_21execution_policy_baseIT_EESP_SP_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS_12zip_iteratorIT_EESI_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESI_SI_SI_SI_SI_SI_E4typeERKSF_RKSG_RKSH_ = comdat any $_ZN6thrust6detail24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEC2ES5_ = comdat any $_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RNS2_16execution_policyIT_EESP_SP_T1_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_ = comdat any $_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEEEENS_15iterator_traitsIT_E15difference_typeESK_SK_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_EN10workaround13parallel_pathERNSQ_IS4_EESI_lSO_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEC2ERKS7_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIsEEEEEEvEEjSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIsEEEEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIsEEEEEEvEEjSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IjSK_EEEEEEEC2IKS8_KSM_KSU_KjKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IjSG_EEEEEC2IKSI_KSQ_KjKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IjNS_9null_typeEEEEC2IKS9_KjKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIsEEEEEEvEElSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIsEEEEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIsEEEEEEvEElSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IlSK_EEEEEEEC2IKS8_KSM_KSU_KlKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IlSG_EEEEEC2IKSI_KSQ_KlKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IlNS_9null_typeEEEEC2IKS9_KlKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEEEEvRT_NSK_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EENS0_16advance_iteratorIlEEEET0_RT_SK_ = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrIsEEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS3_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SL_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_tailEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESA_NS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EEEEEENS_15iterator_traitsIT_E15difference_typeESM_SM_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEEEENS_15iterator_traitsIT_E15difference_typeESN_SN_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElSI_SJ_SC_SK_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENS4_20distance_from_resultIT_T0_E4typeERKSL_RKSM_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENT_15difference_typeERKSK_RKT0_NS4_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE11distance_toISG_EElRKNS0_IT_EE = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS0_4consIS7_NSA_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeEEEEEEET_RKNSA_IT0_T1_EE = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEC2ESG_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeESE_SE_SE_SE_SE_SE_EC2ERKS5_SH_RKSD_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEEC2IKS5_SJ_KSD_KSE_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEC2IKS5_KSD_KSE_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIsEEEENS0_4consISH_NSI_ISC_NS_9null_typeEEEEEEET_RKNSI_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIsEEEENS0_4consISC_NS_9null_typeEEEEET_RKNSI_IT0_T1_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEmIEl = comdat any $_ZN6thrust6detail13binary_negateINS_8equal_toIsEEEC2ERKS3_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEC2ERKS9_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEC2EmRKSB_ = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev = comdat any $_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_4pairIssEENS0_15temporary_arrayIS4_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERKS8_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEC2ERKSA_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferINS_4pairIssEENS_6system4cuda6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerINS0_IssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIssEENS_6system4cuda6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIssEENS0_4cuda6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_ = comdat any $_ZN6thrust4pairINS_7pointerINS0_IssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl = comdat any $_ZN6thrust9make_pairINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_ = comdat any $_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_4pairIssEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm = comdat any $_ZN6thrust6system6detail7generic15replace_copy_ifINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS_6negateIjEESB_EET2_RNS_16execution_policyIT_EET0_SR_T1_SM_T3_RKT4_ = comdat any $_ZN6thrust6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEES8_EC2ES6_S8_ = comdat any $_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS1_6detail7generic6detail12new_value_ifINS_6negateIjEES9_S9_EEEET2_RKNS5_21execution_policy_baseIT_EET0_SV_T1_SP_T3_ = comdat any $_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS2_6detail12new_value_ifINS_6negateIjEESB_SB_EEEET2_RNS_16execution_policyIT_EET0_SU_T1_SP_T3_ = comdat any $_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESW_SW_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESM_SM_SM_SM_SM_SM_E4typeERKSJ_RKSK_RKSL_ = comdat any $_ZN6thrust6detail24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESA_EEEC2ESB_ = comdat any $_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_SW_T1_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_ = comdat any $_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEEEENS_15iterator_traitsIT_E15difference_typeESO_SO_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_EN10workaround13parallel_pathERNSX_IS4_EESM_lSV_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESB_EEEEvEC2ERKSD_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEET_RKNS_15iterator_facadeISW_T0_T1_T2_T3_T4_EENSW_15difference_typeE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEEjSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEEjSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IjSO_EEEEEEEC2IKS8_KSQ_KS11_KjKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IjSK_EEEEEC2IKSM_KSX_KjKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESC_EEEEvEENS1_IjNS_9null_typeEEEEC2IKSF_KjKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEElSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEElSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IlSO_EEEEEEEC2IKS8_KSQ_KS11_KlKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IlSK_EEEEEC2IKSM_KSX_KlKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESC_EEEEvEENS1_IlNS_9null_typeEEEEC2IKSF_KlKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEEEEvRT_NSO_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EENS0_16advance_iteratorIlEEEET0_RT_SO_ = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS3_INS4_INS5_INS_4pairIssEES9_SA_SA_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SM_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_tailEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIssEES7_S8_S8_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SJ_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIssEES7_S8_S8_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl = comdat any $_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESH_EEEENS7_INSD_ISA_SG_SH_SH_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEEEENS_15iterator_traitsIT_E15difference_typeESQ_SQ_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESI_EEEENS8_INSE_ISB_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEEEENS_15iterator_traitsIT_E15difference_typeESR_SR_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_SV_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSX_IT5_T6_T7_T8_T9_T10_EEE4typeERKS14_RKS1B_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENS4_20distance_from_resultIT_T0_E4typeERKSP_RKSQ_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENT_15difference_typeERKSO_RKT0_NS4_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE11distance_toISK_EElRKNS0_IT_EE = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES9_NS0_4consINS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESI_EEEENSC_INS4_INSD_IS7_SH_SI_SI_EEEENS_9null_typeEEEEEEET_RKNSC_IT0_T1_EE = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EC2ERKS7_RKSF_RKSH_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEEC2IKS7_KSF_KSH_KSI_SQ_SQ_SQ_SQ_SQ_SQ_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIssEES7_S8_S8_EEEENS_9null_typeEEEEC2IKSA_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS_10device_ptrIS7_EEEENS0_4consINS4_INS5_IjSB_SC_SC_EEEENSK_ISE_NS_9null_typeEEEEEEET_RKNSK_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmIEl = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEixEl = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_ = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_E11dereferenceEv = comdat any $_ZN6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_ = comdat any $_ZN6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIPKS2_EEvT_ = comdat any $_ZN6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIS7_NS4_3cpp6detail3tagEPKS2_EEvPT_PT0_T1_ = comdat any $_ZN6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E24strip_const_assign_valueINS6_12cross_systemIS7_NS4_3cpp6detail3tagEEEPKS2_EEvRKT_T0_ = comdat any $_ZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_EN17war_nvbugs_8816319host_pathERNSF_IS4_S7_EESC_SE_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEEPKNS_4pairIssEENS_7pointerISB_S8_NS_11use_defaultESF_EEEET1_RKNS_6detail21execution_policy_baseIT_EET0_SO_SH_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIssEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIssEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIssEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIssEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIssEElNS_7pointerIS9_S7_NS_11use_defaultESD_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE = comdat any $_ZNK6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EadEv = comdat any $_ZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_ = comdat any $_ZZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_EN10workaround13parallel_pathERNSW_IS4_EESJ_SJ_SO_SU_ = comdat any $_ZN6thrust6system4cuda6detail11scan_detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEES5_NS_11use_defaultESD_EEEENS9_INSA_IjS5_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS6_INS7_INS9_INS_10device_ptrISC_EEEESH_SI_SI_SI_SI_SI_SI_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S11_SW_T2_ = comdat any $_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElSJ_SK_SB_SL_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail16accumulate_tilesENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail19inclusive_downsweepENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_T6_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEED2Ev = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEET_RKNS_15iterator_facadeIST_T0_T1_T2_T3_T4_EENST_15difference_typeE = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENS4_20distance_from_resultIT_T0_E4typeERKSM_RKSN_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENT_15difference_typeERKSL_RKT0_NS4_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE11distance_toISH_EElRKNS0_IT_EE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_ = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_4consINS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSD_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS0_4consINS4_INS5_IjSB_SC_SC_EEEENS_9null_typeEEEEET_RKNSH_IT0_T1_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEElNS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEElNS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKlRKSR_RKSX_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_IlNS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KlKSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_IlNS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KlKSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIlNS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEEEC2IKlKSK_KSQ_KSI_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEC2IKSK_KSQ_KSI_SW_SW_SW_SW_SW_SW_SW_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_6system6detail7generic6detail22segmented_scan_functorINS_4pairIssEEj9add_pairsEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSC_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEEC2EmRKSE_ = comdat any $_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev = comdat any $_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS0_15temporary_arrayIS7_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERKSB_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSD_ = comdat any $_ZN6thrust7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEC2ESD_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEC2ERKSD_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_EC2ERKSE_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_mEN19workaround_warnings8allocateESG_m = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferINS_5tupleINS_4pairIssEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS2_INS_7pointerIT_T0_NS_11use_defaultESD_EENSE_15difference_typeEEERKNS_6detail21execution_policy_baseISC_EESF_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IssEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EEmEC2ISB_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS6_SA_NS_11use_defaultESD_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS4_INS_7pointerIS7_SB_NS_11use_defaultESD_EElEEEENS4_INSC_IT_T0_SD_SD_EENSI_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS5_INS_7pointerIT_T0_NS_11use_defaultESF_EENSG_15difference_typeEEERNS_16execution_policyISE_EESH_ = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSF_ = comdat any $_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IssEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EElEC2ERKSB_RKl = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEE3getESD_ = comdat any $_ZNK6thrust7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_E3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE4baseEv = comdat any $_ZN6thrust6mallocINS_5tupleINS_4pairIssEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESD_EERKNS_6detail21execution_policy_baseISC_EEm = comdat any $_ZN6thrust9make_pairINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EElEENS3_IT_T0_EESD_SE_ = comdat any $_ZN6thrust6system6detail7generic6mallocINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESF_EERNS_16execution_policyISE_EEm = comdat any $_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES6_NS_11use_defaultESD_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEmEN19workaround_warnings10deallocateESG_SJ_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS7_SB_NS_11use_defaultESF_EEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16accumulate_tilesENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSX_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KSP_KSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KSL_KSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEC2IKS6_KSH_KSN_KSC_SV_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEC2IKSF_KSL_KS7_SR_SR_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEEEENS4_7closureIT_NSD_IT0_T1_T2_T3_T4_SG_SG_SG_SG_SG_EEEEST_RKSU_RKSV_RKSW_RKSX_RKSY_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchESB_S10_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S10_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_EN10workaround14supported_pathEjjmS15_S12_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS3_3tagENS_11use_defaultESH_EEEElSJ_NS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEEEENS8_17make_tuple_mapperIT_T0_T1_T2_T3_SE_SE_SE_SE_SE_E4typeERKSR_RKSS_RKST_RKSU_RKSV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS8_INS_4pairIssEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEESG_SG_SG_SG_SG_EEEC2ES7_RKSS_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS0_INS_4pairIssEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS3_3tagENS_11use_defaultESG_EEEElSI_NS1_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEESD_SD_SD_SD_SD_EC2ERKS7_RKSI_RKlST_RKSO_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS4_3tagENS_11use_defaultESH_EEEENS1_IlNS1_ISJ_NS1_INS2_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESE_EEEEEEEEEC2IKS8_KSJ_KlSX_KSP_KSE_S10_S10_S10_S10_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_IlNS1_ISF_NS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEEEC2IKSF_KlSR_KSL_KS7_SU_SU_SU_SU_SU_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIlNS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKlKSF_KSL_KS7_ST_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail19inclusive_downsweepENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_T5_SN_SN_SN_SN_EEEES17_RKS18_RKS19_RKS1A_RKS1B_RKS1C_RKS1D_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchESB_S1E_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1E_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_EN10workaround14supported_pathEjjmS1J_S1G_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_T4_SL_SL_SL_SL_E4typeERKS15_RKS16_RKS17_RKS18_RKS19_RKS1A_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_EEEC2ES7_RKS16_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSW_RKS12_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEEEC2IKS8_KSN_KSP_KSS_KSX_KS13_KSL_S1H_S1H_S1H_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEEEC2IKSJ_KSL_KSO_KST_KSZ_KSH_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS_12zip_iteratorINS9_INS7_INS_10device_ptrISB_EEEENS7_INS8_IjSE_SF_SF_EEEESC_SC_SC_SC_SC_SC_SC_SC_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEEEC2IKS6_KSH_KSP_KSV_KSC_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS_12zip_iteratorINS4_INS2_INS_10device_ptrIS6_EEEENS2_INS3_IjSC_SD_SD_EEEES7_S7_S7_S7_S7_S7_S7_S7_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKSF_KSN_KST_KS7_S11_S11_S11_S11_S11_S11_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS6_SC_NS_11use_defaultESI_EEEESK_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS8_SC_NS_11use_defaultESG_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElSF_S8_SC_SG_SI_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSK_IT5_T6_T7_T8_T9_T10_EEE4typeERKSR_RKSY_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS9_SD_NS_11use_defaultESH_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSK_SL_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSD_21execution_policy_baseIT_EESG_T1_T2_ = comdat any $_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE3getERSE_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_EN10workaround13parallel_pathERNSH_IS4_EESC_lSF_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENSC_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENSC_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrustplINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIssEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEEjSF_SF_SF_SF_SF_SF_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIssEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIssEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjSD_EEEEEEEC2IKS8_KSH_KSL_KjKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjS6_EEEEEC2IKSD_KSH_KjKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIssEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEElSF_SF_SF_SF_SF_SF_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIssEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIssEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlSD_EEEEEEEC2IKS8_KSH_KSL_KlKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlS6_EEEEEC2IKSD_KSH_KlKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIssEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIssEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_ = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEvRT_NSE_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIssEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISH_E4typeEE4typeERSH_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENS2_20distance_from_resultIT_T0_E4typeERKSI_RKSJ_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENT_15difference_typeERKSH_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E11distance_toISF_SE_SD_SD_SD_SD_SD_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElSC_S6_SA_SD_SF_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSI_IT5_T6_T7_T8_T9_T10_EEE4typeERKSP_RKSW_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENS_6detail20distance_from_resultIT_T0_E4typeERKSG_RKSH_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENT_15difference_typeERKSE_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE11distance_toISC_SD_S6_SA_SE_SG_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEET_RKNS_15iterator_facadeISJ_T0_T1_T2_T3_T4_EENSJ_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEEEEvRT_NSH_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIssEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E7advanceEl = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEEEEvRT_NSM_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_16advance_iteratorIlEEEET0_RT_SM_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEC2ESH_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKSC_RKSE_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEC2IKSC_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEEEEvRT_NSL_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EENS0_16advance_iteratorIlEEEET0_RT_SL_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEC2ESI_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EC2ERKS7_RKSF_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEC2IKS7_KSF_KSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE3getERSB_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_EN10workaround13parallel_pathERNSE_IS4_EES9_lSC_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEEjNS_9null_typeESN_SN_SN_SN_SN_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIssEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KjKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKSA_KSE_KjKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEElNS_9null_typeESN_SN_SN_SN_SN_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIssEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIssEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KlKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKSA_KSE_KlKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIssEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_ = comdat any $_ZNK6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE4sizeEv = comdat any $_ZN6thrusteqINS_4pairIssEESaIS2_ES2_NS_23device_malloc_allocatorIS2_EEEEbRKNS_6detail11vector_baseIT_T0_EERKNS7_IT1_T2_EE = comdat any $_ZN8unittest9type_nameIN6thrust11host_vectorINS1_4pairIssEESaIS4_EEEEESsv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE4sizeEv = comdat any $_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIssEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_ = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIssEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_NS0_17integral_constantIbLb0EEE = comdat any $_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagESB_EC2ERNS_16execution_policyISB_EESF_S7_S7_ = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEENS_6system4cuda6detail3tagENS9_3cpp6detail3tagEEC2ERNS_16execution_policyISC_EERNSH_ISF_EES8_S8_ = comdat any $_ZN6thrust5equalINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEEbT_SI_T0_ = comdat any $_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEE5beginEv = comdat any $_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIssEENS_6system3cpp6detail3tagEED2Ev = comdat any $_ZN6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEC2INS_16execution_policyISB_EESF_EERKT_RKT0_S7_S7_ = comdat any $_ZN6thrust6detail15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEC2ES7_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lEC2ERKS8_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEEEEvRT_NSA_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E7advanceEl = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIKNS_4pairIssEEEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIssEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7advanceEl = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIssEENS_6system3cpp6detail3tagEEC2INS4_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEERNS_16execution_policyIS7_EERNSI_IT_EET0_SO_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEC2ERNS_16execution_policyIS7_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEC2ERKS9_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEEC2ERKSB_ = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE18uninitialized_copyINS6_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEENSH_INS_7pointerIS3_S9_NS_11use_defaultESN_EEEERNS_16execution_policyIT_EET0_SU_SP_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEC2ERKS8_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEC2ERKSA_ = comdat any $_ZN6thrust7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEC2ESA_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferINS_4pairIssEENS_6system3cpp6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerINS0_IssEENS_6system3cpp6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIssEENS_6system3cpp6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIssEENS0_3cpp6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_ = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_ = comdat any $_ZN6thrust4pairINS_7pointerINS0_IssEENS_6system3cpp6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEE3getESA_ = comdat any $_ZNK6thrust7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES7_E3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv = comdat any $_ZN6thrust6mallocINS_4pairIssEENS_6system3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm = comdat any $_ZN6thrust9make_pairINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_ = comdat any $_ZN6thrust6system6detail7generic6mallocINS_4pairIssEENS0_3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm = comdat any $_ZN6thrust23return_temporary_bufferINS_6system3cpp6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_3cpp6detail3tagENS_7pointerINS_4pairIssEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system3cpp6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail10sequential4freeINS0_3cpp6detail3tagENS_7pointerINS_4pairIssEES6_NS_11use_defaultESA_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEEEENS_15iterator_traitsIT_E15difference_typeESE_SE_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElS8_S5_SC_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES9_EENS2_20distance_from_resultIT_T0_E4typeERKSB_RKSC_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES9_EENT_15difference_typeERKSA_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11distance_toIS8_S7_S9_S9_S9_S9_S9_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_10device_ptrIKNS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElS5_S3_S9_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E4baseEv = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIssEEEES6_EENS_6detail20distance_from_resultIT_T0_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIssEEEES6_EENT_15difference_typeERKS7_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIssEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE11distance_toIS5_S6_S3_SA_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIssEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE4baseEv = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS2_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKS9_EEEENS_7pointerIS9_SC_NS_11use_defaultESL_EEEET2_RNS_16execution_policyIT_EERT0_T1_SU_SN_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS3_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKSA_EEEENS_7pointerISA_SD_NS_11use_defaultESM_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESR_E4typeERNS_16execution_policyIT_EERSP_T1_S11_SR_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system4cuda6detail3tagENS2_3cpp6detail3tagENS0_15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEENS_7pointerISC_S8_NS_11use_defaultESH_EEEET2_RKNS_16execution_policyIT_EERKNSK_IT0_EET1_ST_SJ_ = comdat any $_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEEE3getERSB_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS3_3tagENS1_3cpp6detail3tagEEENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEENS_7pointerISE_S8_NS_11use_defaultESJ_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SR_SL_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_NS8_17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEElNS_7pointerISC_S7_NS_11use_defaultESH_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv = comdat any $_ZNK6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EadEv = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrIKNS_4pairIssEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS8_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEdeEv = comdat any $_ZNK6thrust9referenceIKNS_4pairIssEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEadEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_ = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZNK6thrust7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES7_E11dereferenceEv = comdat any $_ZN6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_ = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrIKNS_4pairIssEEEEE3getES6_ = comdat any $_ZNK6thrust7pointerIKNS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE3getEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEEEENT_9referenceERKSA_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIKNS_4pairIssEEEEEENT_9referenceERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv = comdat any $_ZNK6thrust7pointerIKNS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE11dereferenceEv = comdat any $_ZN6thrust16device_referenceIKNS_4pairIssEEEC2ERKNS_10device_ptrIS3_EE = comdat any $_ZN6thrust9referenceIKNS_4pairIssEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEC2ERKS5_ = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm = comdat any $_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIssEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEEEEbRKNS5_21execution_policy_baseIT_EET0_SN_T1_ = comdat any $_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIssEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEEEEbRNS_16execution_policyIT_EET0_SO_T1_ = comdat any $_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIssEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEEbRKNS5_21execution_policy_baseIT_EET0_SP_T1_T2_ = comdat any $_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIssEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEEbRNS_16execution_policyIT_EET0_SQ_T1_T2_ = comdat any $_ZN6thrusteqINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lSD_S5_SC_SE_SF_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSG_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN6thrust8mismatchINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIssEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEENS8_IT0_T1_EERKNS5_21execution_policy_baseIT_EESK_SK_SL_T2_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEESE_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE5equalISD_S8_S5_SC_SE_SF_lEEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrusteqINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSE_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE4baseEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPKNS_4pairIssEEEES8_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E5equalIS7_S6_S8_S8_S8_S8_S8_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6system6detail7generic8mismatchINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIssEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEENSA_IT0_T1_EERNS_16execution_policyIT_EESM_SM_SN_T2_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_ = comdat any $_ZN6thrust10make_tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESL_SL_SL_SL_SL_SL_SL_E4typeERKSJ_RKSK_ = comdat any $_ZN6thrust11find_if_notINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIssEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESR_SR_T1_ = comdat any $_ZN6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIssEEEEEC2ERKS5_ = comdat any $_ZN6thrust9make_pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS4_IT_T0_EESI_SJ_ = comdat any $_ZN6thrust3getILi0ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust3getILi1ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_ = comdat any $_ZN6thrust5tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EC2ERKSD_RKSH_ = comdat any $_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEEC2IKSD_KSH_KSI_SO_SO_SO_SO_SO_SO_SO_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_ = comdat any $_ZN6thrust6system6detail7generic11find_if_notINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIssEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEET0_RNS_16execution_policyIT_EEST_ST_T1_ = comdat any $_ZN6thrust7find_ifINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIssEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_12unary_negateINS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEEEET0_RKNS7_21execution_policy_baseIT_EEST_ST_T1_ = comdat any $_ZN6thrust6detail4not1INS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIssEEEEEEEENS0_12unary_negateIT_EERKS9_ = comdat any $_ZN6thrust6system6detail10sequential7find_ifINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIssEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_12unary_negateINS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEEEET0_RNS2_16execution_policyIT_EESV_SV_T1_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIssEEEEEEEEbEC2ERKS9_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_ST_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSU_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIssEEEEEEEEbEclINS0_28tuple_of_iterator_referencesIRKS6_NS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESL_EESL_EENS_9null_typeESO_SO_SO_SO_SO_SO_SO_EEEEbRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEppEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEESN_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE5equalISK_EEbRKNS0_IT_EE = comdat any $_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIssEEEEEEEclINS0_28tuple_of_iterator_referencesIRKS5_RS5_NS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEEbRKT_ = comdat any $_ZN6thrust18raw_reference_castIRKNS_4pairIssEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS_6detail21enable_if_unwrappableINSF_28tuple_of_iterator_referencesIT_T0_T1_T2_T3_T4_T5_T6_T7_T8_EENSF_13raw_referenceISS_E4typeEE4typeESS_ = comdat any $_ZNK6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIssEEEEEclINS0_28tuple_of_iterator_referencesIRKS4_RS4_NS_9null_typeESC_SC_SC_SC_SC_SC_SC_EEEEbRKT_ = comdat any $_ZNK6thrust6detail8equal_toINS_4pairIssEEEclIS3_EEbRKS3_RKT_ = comdat any $_ZN6thrust3getILi0ERKNS_4pairIssEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_ = comdat any $_ZN6thrust3getILi1ERKNS_4pairIssEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_ = comdat any $_ZN6thrusteqIssEEbRKNS_4pairIT_T0_EES6_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIssEES7_NS0_4consIRS5_NS_9null_typeEEEEET_RKNS8_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIssEERKS5_NS0_4consIS6_NS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIssEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20raw_reference_detail26raw_reference_tuple_helperENS0_28tuple_of_iterator_referencesIRKNS_4pairIssEENS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_20raw_reference_casterEEENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISM_EE5valueEE4typeERKSM_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIssEERS3_NS_9null_typeES7_S7_S7_S7_S7_S7_S7_EC2ERKNS_5tupleIS5_S6_S7_S7_S7_S7_S7_S7_S7_S7_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS0_28tuple_of_iterator_referencesIRKNS_4pairIssEENS_9referenceIS4_NS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS0_20raw_reference_detail26raw_reference_tuple_helperENS0_20raw_reference_casterELj2EE27do_it_on_the_host_or_deviceERKSH_SK_ = comdat any $_ZN6thrust6detail20raw_reference_casterclINS_4pairIssEEEENS0_13raw_referenceIKT_E4typeERS7_ = comdat any $_ZN6thrust3getILi0ERKNS_4pairIssEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZN6thrust6detail20raw_reference_casterclINS_9referenceINS_4pairIssEENS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EEEENS0_13raw_referenceIKT_E4typeERSG_ = comdat any $_ZN6thrust3getILi1ERKNS_4pairIssEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZN6thrust5tupleIRKNS_4pairIssEERS2_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EC2ES4_S5_ = comdat any $_ZN6thrust18raw_reference_castINS_4pairIssEEEENS_6detail13raw_referenceIKT_E4typeERS6_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIssEES7_NS0_4consINS_9referenceIS5_NS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeEEEEET_RKNS8_IT0_T1_EE = comdat any $_ZN6thrust18raw_reference_castINS_9referenceINS_4pairIssEENS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultES9_EES9_EEEENS_6detail13raw_referenceIKT_E4typeERSF_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS_9referenceINS_4pairIssEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EERKS6_NS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_9referenceINS_4pairIssEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail4consIRKNS_4pairIssEENS1_IRS3_NS_9null_typeEEEEC2IS4_S3_KS7_SB_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEENT_9referenceERKSO_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISO_EE5valueEE4typeERKSO_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIssEENS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKNS_5tupleIS5_SE_SF_SF_SF_SF_SF_SF_SF_SF_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EENS0_20dereference_iterator5applyESL_Lj2EE27do_it_on_the_host_or_deviceERKSK_SL_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEEEENS1_5applyIT_E4typeERKSG_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENS1_5applyIT_E4typeERKSF_ = comdat any $_ZN6thrust5tupleIRKNS_4pairIssEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EC2ES4_RKSD_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEEEENT_9referenceERKSF_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv = comdat any $_ZN6thrust6detail4consIRKNS_4pairIssEENS1_INS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeEEEEC2IS4_KSE_KSF_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_9referenceINS_4pairIssEENS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESA_EESA_EENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EENS0_18increment_iteratorEEET0_RT_SN_ = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SI_ = comdat any $_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE9incrementEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEEvRT_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E9incrementEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E9incrementEv = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE9incrementEv = comdat any $_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIssEEEEEEEC2ERKS7_ = comdat any $_ZN6thrust4pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS0_IssEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS4_SB_NS_11use_defaultESE_EEEEEC2ERKSC_RKSG_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIssEEEENS_6system3cpp6detail3tagEEESF_NS0_4consINS5_INS_7pointerIS7_SE_NS_11use_defaultESK_EEEENS_9null_typeEEEEET_RKNSI_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS0_15tagged_iteratorINS4_IPKS7_EESB_EENS0_4consISE_NS_9null_typeEEEEET_RKNSM_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system3cpp6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagENS_7pointerINS_4pairIssEES6_NS_11use_defaultESA_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESF_T1_T2_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_9referenceINS_4pairIssEENS_7pointerIS8_NS_6system3cpp6detail3tagENS_11use_defaultESE_EESE_EEEEvRKT_ = comdat any $_ZN6thrust6detail23allocator_traits_detail5gozerclINS_4pairIssEEEEvRT_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEC2INS2_IS4_EEEERKNS1_IT_EEPNS0_21enable_if_convertibleISA_S6_vE4typeE = comdat any $_ZN6thrust10device_ptrIKNS_4pairIssEEEC2IS2_EERKNS0_IT_EE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIssEEEEEES7_NS_11use_defaultES9_S9_S9_S9_EC2ERKS7_ = comdat any $_ZN6thrust7pointerIKNS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2INSA_IS2_EEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISF_SC_vE4typeE = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE7destroyENS0_15normal_iteratorIPS3_EES8_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeISaINS_4pairIssEEEPS3_lEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lS6_S4_SA_SB_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaINS_4pairIssEEEPS4_lEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERS8_S9_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIssEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS8_21execution_policy_baseIT_EESB_T1_T2_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIssEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_4pairIssEEEEvRT_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIssEEEES7_EENS2_20distance_from_resultIT_T0_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIssEEEES7_EENT_15difference_typeERKS8_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E11distance_toIS6_S5_S7_S7_S7_S7_S7_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPNS_4pairIssEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPNS_4pairIssEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPNS_4pairIssEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPNS_4pairIssEEEEEEvRT_NS8_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E7advanceEl = comdat any $_ZN17TestPairScanByKeyIiEclEm = comdat any $_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeyS2_Lj3EEclImEEvT_ = comdat any $_ZN8unittest15random_integersIiEEN6thrust11host_vectorIT_SaIS3_EEEm = comdat any $_ZN6thrust11host_vectorINS_4pairIiiEESaIS2_EEC2Em = comdat any $_ZN6thrust9transformINS_6detail15normal_iteratorIPiEES4_NS2_IPNS_4pairIiiEEEE17make_pair_functorEET1_T_SB_T0_SA_T2_ = comdat any $_ZN6thrust6detail11vector_baseIiSaIiEE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIiSaIiEE3endEv = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EE5beginEv = comdat any $_ZN6thrust13device_vectorIiNS_23device_malloc_allocatorIiEEEC2IiSaIiEEERKNS_11host_vectorIT_T0_EE = comdat any $_ZN6thrust13device_vectorINS_4pairIiiEENS_23device_malloc_allocatorIS2_EEEC2IS2_SaIS2_EEERKNS_11host_vectorIT_T0_EE = comdat any $_ZN6thrust11host_vectorIiSaIiEEC2IbSaIbEEERKNS0_IT_T0_EE = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorIPiEENS2_IPNS_4pairIiiEEEES8_S6_NS_8equal_toIiEE9add_pairsEET1_T_SD_T0_SC_T2_T3_T4_ = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorINS_10device_ptrIiEEEENS2_INS3_INS_4pairIiiEEEEEES9_S7_NS_8equal_toIiEE9add_pairsEET1_T_SE_T0_SD_T2_T3_T4_ = comdat any $_ZN6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEE3endEv = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN8unittest18assert_equal_quietIN6thrust11host_vectorINS1_4pairIiiEESaIS4_EEENS1_13device_vectorIS4_NS1_23device_malloc_allocatorIS4_EEEEEEvRKT_RKT0_RKSsi = comdat any $_ZN6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEED2Ev = comdat any $_ZN6thrust6detail11vector_baseIiSaIiEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EED2Ev = comdat any $_ZN6thrust11host_vectorIiSaIiEEC2Em = comdat any $_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPiEEN8unittest14random_integerIiLb0EEEEET0_T_SC_SB_T1_ = comdat any $_ZN6thrust6detail11vector_baseIiSaIiEEC2Em = comdat any $_ZNSaIiEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageIiSaIiEEC2ERKS2_ = comdat any $_ZN9__gnu_cxx13new_allocatorIiED2Ev = comdat any $_ZN6thrust6detail11vector_baseIiSaIiEE12default_initEm = comdat any $_ZN6thrust6detail18contiguous_storageIiSaIiEED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIiEC2Ev = comdat any $_ZNSaIiEC2ERKS_ = comdat any $_ZN6thrust6detail15normal_iteratorIPiEC2ES2_ = comdat any $_ZN9__gnu_cxx13new_allocatorIiEC2ERKS1_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPiEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_ = comdat any $_ZN6thrust6detail18contiguous_storageIiSaIiEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageIiSaIiEE19default_construct_nENS0_15normal_iteratorIPiEEm = comdat any $_ZNK6thrust6detail11vector_baseIiSaIiEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIiEE8allocateERS2_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaIiEE8allocateERS2_mEN19workaround_warnings8allocateES4_m = comdat any $_ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv = comdat any $_ZN6thrust6detail23default_construct_rangeISaIiEPimEEvRT_T0_T1_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPiEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIiEPimEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_ = comdat any $_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPimiEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_ = comdat any $_ZN6thrust6detail16allocator_systemISaIiEE3getERS2_ = comdat any $_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPimiEET0_RNS_16execution_policyIT_EES8_T1_RKT2_ = comdat any $_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPimiEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPimiEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_ = comdat any $_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPimiEET0_RNS_16execution_policyIT_EES8_T1_RKT2_ = comdat any $_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPimNS_6detail12fill_functorIiEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_ = comdat any $_ZN6thrust6detail12fill_functorIiEC2ERKi = comdat any $_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPimNS_6detail12fill_functorIiEEEET0_RNS_16execution_policyIT_EESB_T1_T2_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPimNS_6detail21host_generate_functorINS6_12fill_functorIiEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_ = comdat any $_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIiEEEC2ES3_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPimNS_6detail21host_generate_functorINS8_12fill_functorIiEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIiEEEEvEC2ERKS5_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIiEEEEvEclIiEEvRT_ = comdat any $_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIiEEEclIiEEvRKT_ = comdat any $_ZN6thrust18raw_reference_castIiEENS_6detail13raw_referenceIT_E4typeERS3_ = comdat any $_ZNK6thrust6detail12fill_functorIiEclEv = comdat any $_ZN6thrust16raw_pointer_castIPiEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_ = comdat any $_ZN6thrust6detail14pointer_traitsIPiE3getES2_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemISaIiEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_ = comdat any $_ZN6thrust6detail18contiguous_storageIiSaIiEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageIiSaIiEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIiEE10deallocateERS2_Pim = comdat any $_ZZN6thrust6detail16allocator_traitsISaIiEE10deallocateERS2_PimEN19workaround_warnings10deallocateES4_S5_m = comdat any $_ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim = comdat any $_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPiEEN8unittest14random_integerIiLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_ = comdat any $_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPiEEN8unittest14random_integerIiLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_ = comdat any $_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPiEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIiLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPiEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_ = comdat any $_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPiEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIiLb0EEEEC2ES4_ = comdat any $_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPiEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPiEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPiEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIiLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPiEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIiLb0EEEEEvEC2ERKS6_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPiEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImiSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRiSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIiLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRiNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPiEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImiSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRiSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPiEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImiSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRiSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPiEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPiEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPiEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE = comdat any $_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPiEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPiEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIiLb0EEEEclINS0_28tuple_of_iterator_referencesImRiNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_ = comdat any $_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRiNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_ = comdat any $_ZNK8unittest14random_integerIiLb0EEclEj = comdat any $_ZN6thrust3getILi0EmNS_6detail4consIRiNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_ = comdat any $_ZN6thrust3getILi1EmNS_6detail4consIRiNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_ = comdat any $_ZN6thrust6random24uniform_int_distributionIiEC2Eii = comdat any $_ZN6thrust6random24uniform_int_distributionIiEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEiRT_ = comdat any $_ZN6thrust6random24uniform_int_distributionIiEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEiRT_RKNS_4pairIiiEE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRiNS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRimNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRiS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE = comdat any $_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRiNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRiNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPiEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPiEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImiSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRiSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPiEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPiEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesImRiNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPiEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPiEEEENS1_5applyIT_E4typeERKS7_ = comdat any $_ZN6thrust5tupleImRiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERilEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPiEEEENT_9referenceERKS6_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERilE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPiEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv = comdat any $_ZN6thrust6detail4consImNS1_IRiNS_9null_typeEEEEC2IKmiKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPiEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPiEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImiSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRiSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPiEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPiEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPiEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPiEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPiEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPiEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPiEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPiEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERilEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPiEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERilE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPiEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPiEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPiEENS_9null_typeEEEEC2ERKSA_ = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPiEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPiEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_ = comdat any $_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPiEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_ = comdat any $_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPiEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPiEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPiEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPiEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EEC2Em = comdat any $_ZNSaIN6thrust4pairIiiEEEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEESaIS3_EEC2ERKS4_ = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIiiEEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EE12default_initEm = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEESaIS3_EED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIiiEEEC2Ev = comdat any $_ZNSaIN6thrust4pairIiiEEEC2ERKS2_ = comdat any $_ZN6thrust6detail15normal_iteratorIPNS_4pairIiiEEEC2ES4_ = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIiiEEEC2ERKS4_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIiiEEEES5_NS_11use_defaultES7_S7_S7_S7_EC2ERKS5_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEESaIS3_EE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEESaIS3_EE19default_construct_nENS0_15normal_iteratorIPS3_EEm = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaINS_4pairIiiEEEE8allocateERS4_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaINS_4pairIiiEEEE8allocateERS4_mEN19workaround_warnings8allocateES6_m = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIiiEEE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorIN6thrust4pairIiiEEE8max_sizeEv = comdat any $_ZN6thrust6detail23default_construct_rangeISaINS_4pairIiiEEEPS3_mEEvRT_T0_T1_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIiiEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaINS_4pairIiiEEEPS4_mEENS0_9enable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS8_SA_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIiiEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS6_EEEEET0_RKNS8_21execution_policy_baseIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16allocator_systemISaINS_4pairIiiEEEE3getERS4_ = comdat any $_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIiiEEEEC2ERS5_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIiiEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS8_EEEEET0_RNS2_16execution_policyIT_EESF_T1_T2_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIiiEEEEEvEC2ERKS7_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIiiEEEEEvEclIS5_EEvRT_ = comdat any $_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIiiEEEEclIS4_EEvRT_ = comdat any $_ZN6thrust18raw_reference_castINS_4pairIiiEEEENS_6detail13raw_referenceIT_E4typeERS5_ = comdat any $_ZN6thrust6detail16allocator_traitsISaINS_4pairIiiEEEE9constructIS3_EEvRS4_PT_ = comdat any $_ZN6thrust6detail23allocator_traits_detail9constructISaINS_4pairIiiEEES4_EENS0_9enable_ifIXsr21has_member_construct1IT_T0_EE5valueEvE4typeERS7_PS8_ = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIiiEEE9constructIS3_JEEEvPT_DpOT0_ = comdat any $_ZN6thrust4pairIiiEC2Ev = comdat any $_ZN6thrust16raw_pointer_castIPNS_4pairIiiEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS6_ = comdat any $_ZN6thrust6detail14pointer_traitsIPNS_4pairIiiEEE3getES4_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemISaINS_4pairIiiEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS7_E4typeEE4typeERS7_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEESaIS3_EE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIiiEESaIS3_EE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaINS_4pairIiiEEEE10deallocateERS4_PS3_m = comdat any $_ZZN6thrust6detail16allocator_traitsISaINS_4pairIiiEEEE10deallocateERS4_PS3_mEN19workaround_warnings10deallocateES6_S7_m = comdat any $_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIiiEEE10deallocateEPS3_m = comdat any $_ZN6thrust9transformINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPiEES8_NS6_IPNS_4pairIiiEEEE17make_pair_functorEET2_RKNS5_21execution_policy_baseIT_EET0_SK_T1_SE_T3_ = comdat any $_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPiEESA_NS8_IPNS_4pairIiiEEEE17make_pair_functorEET2_RNS_16execution_policyIT_EET0_SL_T1_SG_T3_ = comdat any $_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEESA_NS8_IPNS_4pairIiiEEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS7_24binary_transform_functorI17make_pair_functorEEEET0_RKNS7_21execution_policy_baseIT_EESL_SL_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES5_NS3_IPNS_4pairIiiEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS_12zip_iteratorIT_EESD_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorIPiEES4_NS2_IPNS_4pairIiiEEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESD_SD_SD_SD_SD_SD_E4typeERKSA_RKSB_RKSC_ = comdat any $_ZN6thrust3getILi2ENS_6detail15normal_iteratorIPiEENS1_4consIS4_NS5_INS2_IPNS_4pairIiiEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES5_NS3_IPNS_4pairIiiEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEESC_NSA_IPNS_4pairIiiEEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEENS9_24binary_transform_functorI17make_pair_functorEEEET0_RNS2_16execution_policyIT_EESN_SN_T1_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES6_NS4_IPNS_4pairIiiEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IiiS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRiSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElSD_SE_SI_SJ_SN_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSO_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEclINS0_28tuple_of_iterator_referencesIRiS8_RNS_4pairIiiEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEvRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES6_NS4_IPNS_4pairIiiEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IiiS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRiSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES6_NS4_IPNS_4pairIiiEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IiiS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRiSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEppEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES7_NS5_IPNS_4pairIiiEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEESE_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES5_NS3_IPNS_4pairIiiEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE5equalISB_EEbRKNS0_IT_EE = comdat any $_ZN6thrusteqINS_6detail15normal_iteratorIPiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERilS4_iS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPiEENS1_4consIS4_NS5_INS2_IPNS_4pairIiiEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPiEES5_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPiEES3_NS_11use_defaultES5_S5_S5_S5_E5equalIS4_S3_S5_S5_S5_S5_S5_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPiEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIiiEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEclINS0_28tuple_of_iterator_referencesIRiS6_RNS_4pairIiiEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi2ET_E4typeEE4typeESE_ = comdat any $_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesIRiS3_RNS_4pairIiiEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_13raw_referenceIKT_E4typeERSB_ = comdat any $_ZN6thrust3getILi2ERiNS_6detail4consIS1_NS3_IRNS_4pairIiiEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_ = comdat any $_ZN17make_pair_functorclIiiEEN6thrust4pairIT_T0_EERKS3_RKS4_ = comdat any $_ZN6thrust3getILi0ERiNS_6detail4consIS1_NS3_IRNS_4pairIiiEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_ = comdat any $_ZN6thrust3getILi1ERiNS_6detail4consIS1_NS3_IRNS_4pairIiiEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRNS_4pairIiiEERiNS0_4consIS7_NS8_IS6_NS_9null_typeEEEEEEET_RNS8_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIiiEERiNS0_4consIS6_NS_9null_typeEEEEET_RNS8_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIiiEES6_NS_9null_typeEEET_RNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRiS4_NS0_4consIS4_NS5_IRNS_4pairIiiEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRiS4_NS0_4consIS4_NS5_IRNS_4pairIiiEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRiS4_NS0_4consIRNS_4pairIiiEENS_9null_typeEEEEET_RNS5_IT0_T1_EE = comdat any $_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesIRiS3_RNS_4pairIiiEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_14pointer_traitsIT_E11raw_pointerERKSC_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesIRiS3_RNS_4pairIiiEENS_9null_typeES7_S7_S7_S7_S7_S7_EEE3getESA_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES7_NS5_IPNS_4pairIiiEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEENT_9referenceERKSF_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES6_NS4_IPNS_4pairIiiEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IiiS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRiSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES5_NS3_IPNS_4pairIiiEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15normal_iteratorIPiEES7_NS5_IPNS_4pairIiiEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISF_EE5valueEE4typeERKSF_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesIRiS2_RNS_4pairIiiEENS_9null_typeES6_S6_S6_S6_S6_S6_EC2ERKNS_5tupleIS2_S2_S5_S6_S6_S6_S6_S6_S6_S6_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15normal_iteratorIPiEES5_NS3_IPNS_4pairIiiEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EENS0_20dereference_iterator5applyESC_Lj3EE27do_it_on_the_host_or_deviceERKSB_SC_ = comdat any $_ZN6thrust3getILi1ENS_6detail15normal_iteratorIPiEENS1_4consIS4_NS5_INS2_IPNS_4pairIiiEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPNS_4pairIiiEEEEEENS1_5applyIT_E4typeERKS9_ = comdat any $_ZN6thrust5tupleIRiS1_RNS_4pairIiiEENS_9null_typeES5_S5_S5_S5_S5_S5_EC2ES1_S1_S4_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPiEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIiiEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPiEES6_NS0_4consINS4_IPNS_4pairIiiEEEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPNS_4pairIiiEEEEEENT_9referenceERKS8_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIiiEEEES5_NS_11use_defaultES7_S7_S7_S7_E11dereferenceEv = comdat any $_ZN6thrust6detail4consIRiNS1_IS2_NS1_IRNS_4pairIiiEENS_9null_typeEEEEEEC2IiiS4_KS6_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRiNS1_IRNS_4pairIiiEENS_9null_typeEEEEC2IiS4_KS6_SA_SA_SA_SA_SA_SA_SA_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIRNS_4pairIiiEENS_9null_typeEEC2IS3_EERT_RKS5_SB_SB_SB_SB_SB_SB_SB_SB_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES7_NS5_IPNS_4pairIiiEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES6_NS4_IPNS_4pairIiiEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IiiS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRiSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES5_NS3_IPNS_4pairIiiEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorIPiEES6_NS4_IPNS_4pairIiiEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EENS0_18increment_iteratorEEET0_RT_SE_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPiEENS1_IS4_NS1_INS2_IPNS_4pairIiiEEEENS_9null_typeEEEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPiEENS3_INS4_IPNS_4pairIiiEEEENS_9null_typeEEEEENS0_18increment_iteratorEEET0_RT_SF_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPiEENS1_IS4_NS1_INS2_IPNS_4pairIiiEEEENS_9null_typeEEEEEE8get_tailEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPiEENS1_INS2_IPNS_4pairIiiEEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPNS_4pairIiiEEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SC_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPiEENS1_INS2_IPNS_4pairIiiEEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPNS_4pairIiiEEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIiiEEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIiiEEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPNS_4pairIiiEEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIiiEEEES5_NS_11use_defaultES7_S7_S7_S7_E9incrementEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPiEES5_NS3_IPNS_4pairIiiEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEC2ESB_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorIPiEES4_NS2_IPNS_4pairIiiEEEENS_9null_typeES9_S9_S9_S9_S9_S9_EC2ERKS4_SC_RKS8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPiEENS1_IS4_NS1_INS2_IPNS_4pairIiiEEEENS_9null_typeEEEEEEC2IKS4_SE_KS8_KS9_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPiEENS1_INS2_IPNS_4pairIiiEEEENS_9null_typeEEEEC2IKS4_KS8_KS9_SF_SF_SF_SF_SF_SF_SF_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIiiEEEENS_9null_typeEEC2IKS6_EERT_RKS7_SE_SE_SE_SE_SE_SE_SE_SE_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorIPNS_4pairIiiEEEENS4_IPiEENS0_4consISC_NSD_IS8_NS_9null_typeEEEEEEET_RKNSD_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPNS_4pairIiiEEEENS4_IPiEENS0_4consIS8_NS_9null_typeEEEEET_RKNSD_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPNS_4pairIiiEEEES8_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail18contiguous_storageIiSaIiEE5beginEv = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPiEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPiEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPiEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERilEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPiEEEEvRT_NS6_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPiEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEESaIS3_EE5beginEv = comdat any $_ZN6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEEC2IiSaIiEEERKNS1_IT_T0_EE = comdat any $_ZN6thrust23device_malloc_allocatorIiEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageIiNS_23device_malloc_allocatorIiEEEC2ERKS3_ = comdat any $_ZN6thrust23device_malloc_allocatorIiED2Ev = comdat any $_ZN6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEE10range_initINS0_15normal_iteratorIPKiEEEEvT_SA_ = comdat any $_ZNK6thrust6detail11vector_baseIiSaIiEE5beginEv = comdat any $_ZNK6thrust6detail11vector_baseIiSaIiEE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageIiNS_23device_malloc_allocatorIiEEED2Ev = comdat any $_ZN6thrust23device_malloc_allocatorIiEC2ERKS1_ = comdat any $_ZN6thrust10device_ptrIiEC2IiEEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_10device_ptrIiEEEC2ES3_ = comdat any $_ZN6thrust7pointerIiNS_6system4cuda6detail3tagENS_16device_referenceIiEENS_10device_ptrIiEEEC2IiEEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIiEEPiiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElEC2ERKS3_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIiEEEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_ = comdat any $_ZN6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEE10range_initINS0_15normal_iteratorIPKiEEEEvT_SA_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorIPKiEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_ = comdat any $_ZN6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEE17allocate_and_copyINS0_15normal_iteratorIPKiEEEEvmT_SA_RNS0_18contiguous_storageIiS3_EE = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKiEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKiEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPKiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_iS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKiEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKiEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKiEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKiEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv = comdat any $_ZN6thrust6detail18contiguous_storageIiNS_23device_malloc_allocatorIiEEE10deallocateEv = comdat any $_ZNK6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEE8capacityEv = comdat any $_ZNK6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEE8max_sizeEv = comdat any $_ZN6thrust6detail18contiguous_storageIiNS_23device_malloc_allocatorIiEEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageIiNS_23device_malloc_allocatorIiEEE18uninitialized_copyINS0_15normal_iteratorIPKiEEEENS6_INS_10device_ptrIiEEEET_SD_SC_ = comdat any $_ZN6thrust6detail18contiguous_storageIiNS_23device_malloc_allocatorIiEEE5beginEv = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrIiEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6detail18contiguous_storageIiNS_23device_malloc_allocatorIiEEE7destroyENS0_15normal_iteratorINS_10device_ptrIiEEEES8_ = comdat any $_ZNK6thrust6detail18contiguous_storageIiNS_23device_malloc_allocatorIiEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIiEEE10deallocateERS3_NS_10device_ptrIiEEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIiEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIiEEE10deallocateERS3_NS_10device_ptrIiEEmEN19workaround_warnings10deallocateES5_S7_m = comdat any $_ZN6thrust23device_malloc_allocatorIiE10deallocateENS_10device_ptrIiEEm = comdat any $_ZN6thrust10device_ptrIvEC2IiEERKNS0_IT_EE = comdat any $_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_IiEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISC_S9_vE4typeE = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrIiEEE3getES3_ = comdat any $_ZNK6thrust7pointerIiNS_6system4cuda6detail3tagENS_16device_referenceIiEENS_10device_ptrIiEEE3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIiEEPiiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElE4baseEv = comdat any $_ZNK6thrust6detail18contiguous_storageIiNS_23device_malloc_allocatorIiEEE8max_sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIiEEE8max_sizeERKS3_ = comdat any $_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorIiEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS6_E9size_typeEE4typeERKS6_ = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIiEEE8allocateERS3_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIiEEE8allocateERS3_mEN19workaround_warnings8allocateES5_m = comdat any $_ZN6thrust23device_malloc_allocatorIiE8allocateEmNS_10device_ptrIKiEE = comdat any $_ZN6thrust10device_ptrIKiEC2IiEEPT_ = comdat any $_ZNK6thrust23device_malloc_allocatorIiE8max_sizeEv = comdat any $_ZN6thrust13device_mallocIiEENS_10device_ptrIT_EEm = comdat any $_ZN6thrust6mallocIiNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm = comdat any $_ZNK6thrust7pointerIiNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerIiNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_ = comdat any $_ZN6thrust6system6detail7generic6mallocIiNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm = comdat any $_ZN6thrust7pointerIiNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IiEEPT_ = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerIiNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerIiNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPiiS5_NS_27random_access_traversal_tagENS_9referenceIiS7_S6_EElEC2ERKS8_ = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerIiNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPiiS5_NS_27random_access_traversal_tagENS_9referenceIiS7_S6_EElE4baseEv = comdat any $_ZN6thrust7pointerIKiNS_6system4cuda6detail3tagENS_16device_referenceIS1_EENS_10device_ptrIS1_EEEC2IiEEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIKiEEPS2_iNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS2_EElEC2ERKS4_ = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIiEENS0_15normal_iteratorIPKiEENS_10device_ptrIiEEEET2_RNS_16execution_policyIT_EERT0_T1_SL_SE_ = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIiEENS0_15normal_iteratorIPKiEENS_10device_ptrIiEEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESI_E4typeERNS_16execution_policyIT_EERSG_T1_SS_SI_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKiEENS_10device_ptrIiEEEET2_RKNS_16execution_policyIT_EERKNSG_IT0_EET1_SP_SF_ = comdat any $_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorIiEEE3getERS3_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKiEENS_10device_ptrIiEEEET1_RKNSA_21execution_policy_baseIT_EET0_SN_SH_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKiEENS_10device_ptrIiEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKiEENS_10device_ptrIiEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKiEENS_10device_ptrIiEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKiEENS_10device_ptrIiEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS8_17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKiEElNS_10device_ptrIiEEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_10device_ptrIiEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElEET_RKNS_15iterator_facadeISA_T0_T1_T2_T3_T4_EENSA_15difference_typeE = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrIiEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIiEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElEdeEv = comdat any $_ZNK6thrust9referenceIiNS_10device_ptrIiEENS_16device_referenceIiEEEadEv = comdat any $_ZN6thrust16raw_pointer_castIPKiEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIiEEEENT_9referenceERKS4_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIiEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElE7derivedEv = comdat any $_ZNK6thrust7pointerIiNS_6system4cuda6detail3tagENS_16device_referenceIiEENS_10device_ptrIiEEE11dereferenceEv = comdat any $_ZN6thrust16device_referenceIiEC2ERKNS_10device_ptrIiEE = comdat any $_ZN6thrust9referenceIiNS_10device_ptrIiEENS_16device_referenceIiEEEC2ERKS2_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKiE3getES3_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKiEEEENT_9referenceERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKiEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIiEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIiEEEEvRT_NS4_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIiEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIiEEPiiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorIiEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS6_E4typeEE4typeERS6_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrIiEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrIiEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIiEEEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIiEEEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIiEEEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIiEEEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl = comdat any $_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorIiEENS_10device_ptrIiEElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIiEEEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElS5_iS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorIiEENS_10device_ptrIiEElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS8_S9_T1_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIiEEEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIiEEEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIiEEEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_10device_ptrIiEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElS2_iS6_S7_S9_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIiEES3_EENS_6detail20distance_from_resultIT_T0_E4typeERKS6_RKS7_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIiEES3_EENT_15difference_typeERKS4_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIiEEPiiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElE11distance_toIS2_S3_iS7_S8_SA_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust6detail18contiguous_storageIiSaIiEE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorIPKiEC2IPiEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKiEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_ = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPKiEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKiEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKiEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKiEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKiEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEEC2IS3_SaIS3_EEERKNS1_IT_T0_EE = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIiiEEEC2Ev = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEEC2ERKS5_ = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIiiEEED2Ev = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_ = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EE5beginEv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEED2Ev = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIiiEEEC2ERKS3_ = comdat any $_ZN6thrust10device_ptrINS_4pairIiiEEEC2IS2_EEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEC2ES5_ = comdat any $_ZN6thrust7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEEC2IS2_EEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIiiEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEC2ERKS5_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorIPKNS_4pairIiiEEEEEENS_15iterator_traitsIT_E15difference_typeES9_S9_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE17allocate_and_copyINS0_15normal_iteratorIPKS3_EEEEvmT_SC_RNS0_18contiguous_storageIS3_S5_EE = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKNS_4pairIiiEEEEEENS_15iterator_traitsIT_E15difference_typeESC_SC_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKNS_4pairIiiEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE10deallocateEv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE8capacityEv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE8allocateEm = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE18uninitialized_copyINS0_15normal_iteratorIPKS3_EEEENS8_INS_10device_ptrIS3_EEEET_SF_SE_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE7destroyENS0_15normal_iteratorINS_10device_ptrIS3_EEEESA_ = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIiiEEEEE10deallocateERS5_NS_10device_ptrIS4_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIiiEEEEE10deallocateERS5_NS_10device_ptrIS4_EEmEN19workaround_warnings10deallocateES7_S9_m = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIiiEEE10deallocateENS_10device_ptrIS2_EEm = comdat any $_ZN6thrust10device_ptrIvEC2INS_4pairIiiEEEERKNS0_IT_EE = comdat any $_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_INS_4pairIiiEEEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISE_S9_vE4typeE = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIiiEEEEE3getES5_ = comdat any $_ZNK6thrust7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIiiEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE4baseEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIiiEEEEE8max_sizeERKS5_ = comdat any $_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorINS_4pairIiiEEEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS8_E9size_typeEE4typeERKS8_ = comdat any $_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIiiEEEEE8allocateERS5_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIiiEEEEE8allocateERS5_mEN19workaround_warnings8allocateES7_m = comdat any $_ZN6thrust23device_malloc_allocatorINS_4pairIiiEEE8allocateEmNS_10device_ptrIKS2_EE = comdat any $_ZN6thrust10device_ptrIKNS_4pairIiiEEEC2IS2_EEPT_ = comdat any $_ZNK6thrust23device_malloc_allocatorINS_4pairIiiEEE8max_sizeEv = comdat any $_ZN6thrust13device_mallocINS_4pairIiiEEEENS_10device_ptrIT_EEm = comdat any $_ZN6thrust6mallocINS_4pairIiiEENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm = comdat any $_ZNK6thrust7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_ = comdat any $_ZN6thrust6system6detail7generic6mallocINS_4pairIiiEENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm = comdat any $_ZN6thrust7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_ = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEE3getESA_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_ = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv = comdat any $_ZN6thrust7pointerIKNS_4pairIiiEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2IS2_EEPT_ = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIiiEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEC2ERKS6_ = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIiiEEEENS0_15normal_iteratorIPKS8_EENS_10device_ptrIS8_EEEET2_RNS_16execution_policyIT_EERT0_T1_SN_SG_ = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIiiEEEENS0_15normal_iteratorIPKS9_EENS_10device_ptrIS9_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESK_E4typeERNS_16execution_policyIT_EERSI_T1_SU_SK_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKNS_4pairIiiEEEENS_10device_ptrISB_EEEET2_RKNS_16execution_policyIT_EERKNSI_IT0_EET1_SR_SH_ = comdat any $_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorINS_4pairIiiEEEEE3getERS5_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKNS_4pairIiiEEEENS_10device_ptrISD_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SP_SJ_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIiiEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIiiEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIiiEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIiiEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_NS8_17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIiiEEEElNS_10device_ptrISB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_10device_ptrINS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEET_RKNS_15iterator_facadeISC_T0_T1_T2_T3_T4_EENSC_15difference_typeE = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrINS_4pairIiiEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEdeEv = comdat any $_ZNK6thrust9referenceINS_4pairIiiEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEadEv = comdat any $_ZN6thrust16raw_pointer_castIPKNS_4pairIiiEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrINS_4pairIiiEEEEEENT_9referenceERKS6_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv = comdat any $_ZNK6thrust7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE11dereferenceEv = comdat any $_ZN6thrust16device_referenceINS_4pairIiiEEEC2ERKNS_10device_ptrIS2_EE = comdat any $_ZN6thrust9referenceINS_4pairIiiEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEC2ERKS4_ = comdat any $_ZN6thrust6detail14pointer_traitsIPKNS_4pairIiiEEE3getES5_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKNS_4pairIiiEEEEEENT_9referenceERKS9_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES6_NS_11use_defaultES8_S8_S8_S8_E11dereferenceEv = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_10device_ptrINS_4pairIiiEEEEEEvRT_NS6_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIiiEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorINS_4pairIiiEEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS8_E4typeEE4typeERS8_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEEEEvRT_NS9_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl = comdat any $_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIiiEEEENS_10device_ptrIS4_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElS7_S5_SB_SC_SE_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSG_IT5_T6_T7_T8_T9_T10_EEE4typeERKSN_RKSU_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIiiEEEENS_10device_ptrIS5_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSA_SB_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_10device_ptrINS_4pairIiiEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS9_21execution_policy_baseIT_EESC_T1_T2_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIiiEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIiiEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_EN10workaround13parallel_pathERNSD_IS4_EES8_lSB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEESC_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEESC_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjNS_9null_typeESL_SL_SL_SL_SL_EEEEEESE_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEEjNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIiiEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KjKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_10device_ptrINS_4pairIiiEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKS5_KS9_KjKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElNS_9null_typeESL_SL_SL_SL_SL_EEEEEESE_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEElNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIiiEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KlKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_10device_ptrINS_4pairIiiEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKS5_KS9_KlKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIiiEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_10device_ptrINS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElS4_S3_S8_S9_SB_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIiiEEEES5_EENS_6detail20distance_from_resultIT_T0_E4typeERKS8_RKS9_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIiiEEEES5_EENT_15difference_typeERKS6_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIiiEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE11distance_toIS4_S5_S3_S9_SA_SC_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIiiEESaIS3_EE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorIPKNS_4pairIiiEEEC2IPS3_EERKNS1_IT_EEPNS0_21enable_if_convertibleIS9_S5_vE4typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_ = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPKNS_4pairIiiEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKNS_4pairIiiEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKNS_4pairIiiEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKNS_4pairIiiEEEEEEvRT_NS9_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl = comdat any $_ZN6thrust6detail11vector_baseIiSaIiEEC2IbSaIbEEERKNS1_IT_T0_EE = comdat any $_ZN6thrust6detail11vector_baseIiSaIiEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_ = comdat any $_ZN6thrust6detail11vector_baseIiSaIiEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust6detail11vector_baseIiSaIiEE17allocate_and_copyINS0_15normal_iteratorIPKbEEEEvmT_S9_RNS0_18contiguous_storageIiS2_EE = comdat any $_ZNK6thrust6detail11vector_baseIiSaIiEE8capacityEv = comdat any $_ZNK6thrust6detail11vector_baseIiSaIiEE8max_sizeEv = comdat any $_ZN6thrust6detail18contiguous_storageIiSaIiEE18uninitialized_copyINS0_15normal_iteratorIPKbEEEENS5_IPiEET_SB_SA_ = comdat any $_ZN6thrust6detail18contiguous_storageIiSaIiEE7destroyENS0_15normal_iteratorIPiEES6_ = comdat any $_ZNK6thrust6detail18contiguous_storageIiSaIiEE8max_sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsISaIiEE8max_sizeERKS2_ = comdat any $_ZN6thrust6detail23allocator_traits_detail8max_sizeISaIiEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS5_E9size_typeEE4typeERKS5_ = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIiENS0_15normal_iteratorIPKbEEPiEET2_RNS_16execution_policyIT_EERT0_T1_SJ_SC_ = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIiENS0_15normal_iteratorIPKbEEPiEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESG_E4typeERNS_16execution_policyIT_EERSE_T1_SQ_SG_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagES5_NS0_15normal_iteratorIPKbEEPiEET2_RKNS_16execution_policyIT_EERKNSC_IT0_EET1_SL_SB_ = comdat any $_ZN6thrust4copyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPiEET1_RKNS5_21execution_policy_baseIT_EET0_SH_SB_ = comdat any $_ZN6thrust6system6detail10sequential4copyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPiEET1_RNS2_16execution_policyIT_EET0_SI_SD_ = comdat any $_ZN6thrust6system6detail10sequential11copy_detail4copyINS_6detail15normal_iteratorIPKbEEPiEET0_T_SC_SB_NS5_17integral_constantIbLb0EEE = comdat any $_ZN6thrust6system6detail10sequential12general_copyINS_6detail15normal_iteratorIPKbEEPiEET0_T_SB_SA_ = comdat any $_ZN6thrust6system6detail10sequential19general_copy_detail11iter_assignIPiNS_6detail15normal_iteratorIPKbEEEENS6_9enable_ifIXsr23reference_is_assignableIT0_T_EE5valueEvE4typeESD_SC_ = comdat any $_ZN6thrust6detail13destroy_rangeISaIiEPilEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERilS4_iS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIiEPilEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPiEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPiEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPiEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPiEENS6_IPNS_4pairIiiEEEESC_SA_NS_8equal_toIiEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SM_T1_SG_T3_T4_T5_ = comdat any $_ZN6thrust6system6detail10sequential21exclusive_scan_by_keyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPiEENS8_IPNS_4pairIiiEEEESE_SC_NS_8equal_toIiEE9add_pairsEET2_RNS2_16execution_policyIT_EET0_SN_T1_SI_T3_T4_T5_ = comdat any $_ZN6thrustneINS_6detail15normal_iteratorIPiEEiNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERilS4_iS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN9add_pairsclIN6thrust4pairIiiEES3_EET_RKS4_RKT0_ = comdat any $_ZNK6thrust8equal_toIiEclERKiS3_ = comdat any $_ZN6thrust21exclusive_scan_by_keyINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIiEEEENS6_INS7_INS_4pairIiiEEEEEESD_SB_NS_8equal_toIiEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SN_T1_SH_T3_T4_T5_ = comdat any $_ZN6thrust6system6detail7generic21exclusive_scan_by_keyINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIiEEEENS8_INS9_INS_4pairIiiEEEEEESF_SD_NS_8equal_toIiEE9add_pairsEET2_RNS_16execution_policyIT_EET0_SO_T1_SJ_T3_T4_T5_ = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEET_RKNS_15iterator_facadeISF_T0_T1_T2_T3_T4_EENSF_15difference_typeE = comdat any $_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIiEEEES9_NS6_INS_7pointerIjS4_NS_11use_defaultESB_EEEENS5_13binary_negateINS_8equal_toIiEEEEEET2_RKNS5_21execution_policy_baseIT_EET0_SO_T1_SI_T3_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIiEEEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElEmiEl = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIiEEEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE = comdat any $_ZN6thrust6detail4not2INS_8equal_toIiEEEENS0_13binary_negateIT_EERKS5_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIiiEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EEm = comdat any $_ZN6thrust15replace_copy_ifINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS_6negateIjEES9_EET2_RKNS5_21execution_policy_baseIT_EET0_SQ_T1_SK_T3_RKT4_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmiEl = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEixEm = comdat any $_ZN6thrust9referenceINS_4pairIiiEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EaSERKS2_ = comdat any $_ZN6thrust14inclusive_scanINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RKNS7_21execution_policy_baseIT_EET0_S11_SV_T2_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENS_12zip_iteratorIT_EESJ_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESI_SI_SI_SI_SI_SI_SI_E4typeERKSG_RKSH_ = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS_12zip_iteratorIT_EESK_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_E4typeERKSH_RKSI_ = comdat any $_ZN6thrust6system6detail7generic6detail22segmented_scan_functorINS_4pairIiiEEj9add_pairsEC2ES7_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIiiEENS_6system4cuda6detail3tagEED2Ev = comdat any $_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIiEEEESB_NS8_INS_7pointerIjS6_NS_11use_defaultESD_EEEENS7_13binary_negateINS_8equal_toIiEEEEEET2_RNS_16execution_policyIT_EET0_SP_T1_SK_T3_ = comdat any $_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIiEEEEEEEET0_RKNS7_21execution_policy_baseIT_EESP_SP_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS_12zip_iteratorIT_EESI_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESI_SI_SI_SI_SI_SI_E4typeERKSF_RKSG_RKSH_ = comdat any $_ZN6thrust6detail24binary_transform_functorINS0_13binary_negateINS_8equal_toIiEEEEEC2ES5_ = comdat any $_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrIiEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIiEEEEEEEET0_RNS2_16execution_policyIT_EESP_SP_T1_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIiEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_ = comdat any $_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEEEENS_15iterator_traitsIT_E15difference_typeESK_SK_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIiEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_EN10workaround13parallel_pathERNSQ_IS4_EESI_lSO_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIiEEEEEEvEC2ERKS7_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIiEEEEEEvEEjEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIiEEEEEEvEElEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IiijSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIiEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIiEEEEEEvEEjSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIiEEEEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIiEEEEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIiEEEEEEvEEjSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIiEEEEEEvEEjSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIiEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIiEEEEEEvEENS1_IjSK_EEEEEEEC2IKS8_KSM_KSU_KjKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIiEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIiEEEEEEvEENS1_IjSG_EEEEEC2IKSI_KSQ_KjKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIiEEEEEEvEENS1_IjNS_9null_typeEEEEC2IKS9_KjKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIiEEEEEEvEElSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIiEEEEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIiEEEEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIiEEEEEEvEElSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIiEEEEEEvEElSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIiEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIiEEEEEEvEENS1_IlSK_EEEEEEEC2IKS8_KSM_KSU_KlKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIiEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIiEEEEEEvEENS1_IlSG_EEEEEC2IKSI_KSQ_KlKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIiEEEEEEvEENS1_IlNS_9null_typeEEEEC2IKS9_KlKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIiEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIiEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIiEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IiijSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIiEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEEEEvRT_NSK_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IiijSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIiEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrIiEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EENS0_16advance_iteratorIlEEEET0_RT_SK_ = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrIiEEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIiEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_10device_ptrIiEEEENS3_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SL_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIiEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_tailEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIiEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIiEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESA_NS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EEEEEENS_15iterator_traitsIT_E15difference_typeESM_SM_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESB_NS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEEEENS_15iterator_traitsIT_E15difference_typeESN_SN_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IiijSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIiEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElSI_SJ_SC_SK_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENS4_20distance_from_resultIT_T0_E4typeERKSL_RKSM_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENT_15difference_typeERKSK_RKT0_NS4_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE11distance_toISG_EElRKNS0_IT_EE = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrIiEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrIiEEEES7_NS0_4consIS7_NSA_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeEEEEEEET_RKNSA_IT0_T1_EE = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEC2ESG_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeESE_SE_SE_SE_SE_SE_EC2ERKS5_SH_RKSD_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIiEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEEC2IKS5_SJ_KSD_KSE_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIiEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEC2IKS5_KSD_KSE_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIiEEEENS0_4consISH_NSI_ISC_NS_9null_typeEEEEEEET_RKNSI_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIiEEEENS0_4consISC_NS_9null_typeEEEEET_RKNSI_IT0_T1_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIiEEEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElE7derivedEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIiEEEEiNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIiEElEmIEl = comdat any $_ZN6thrust6detail13binary_negateINS_8equal_toIiEEEC2ERKS3_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEC2ERKS9_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEC2EmRKSB_ = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev = comdat any $_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_4pairIiiEENS0_15temporary_arrayIS4_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEC2ERKS8_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEC2ERKSA_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferINS_4pairIiiEENS_6system4cuda6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerINS0_IiiEENS_6system4cuda6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIiiEENS_6system4cuda6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIiiEENS0_4cuda6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_ = comdat any $_ZN6thrust4pairINS_7pointerINS0_IiiEENS_6system4cuda6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl = comdat any $_ZN6thrust9make_pairINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_ = comdat any $_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_4pairIiiEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultES8_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm = comdat any $_ZN6thrust6system6detail7generic15replace_copy_ifINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS_6negateIjEESB_EET2_RNS_16execution_policyIT_EET0_SR_T1_SM_T3_RKT4_ = comdat any $_ZN6thrust6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIiiEES8_EC2ES6_S8_ = comdat any $_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS1_6detail7generic6detail12new_value_ifINS_6negateIjEES9_S9_EEEET2_RKNS5_21execution_policy_baseIT_EET0_SV_T1_SP_T3_ = comdat any $_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS2_6detail12new_value_ifINS_6negateIjEESB_SB_EEEET2_RNS_16execution_policyIT_EET0_SU_T1_SP_T3_ = comdat any $_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESW_SW_T1_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_ = comdat any $_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESM_SM_SM_SM_SM_SM_E4typeERKSJ_RKSK_RKSL_ = comdat any $_ZN6thrust6detail24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIiiEESA_EEEC2ESB_ = comdat any $_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_SW_T1_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_ = comdat any $_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEEEENS_15iterator_traitsIT_E15difference_typeESO_SO_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_EN10workaround13parallel_pathERNSX_IS4_EESM_lSV_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIiiEESB_EEEEvEC2ERKSD_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEESG_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEESG_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEET_RKNS_15iterator_facadeISW_T0_T1_T2_T3_T4_EENSW_15difference_typeE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEEjSR_SR_SR_SR_SR_SR_EEEEEESH_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEEjSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IjSO_EEEEEEEC2IKS8_KSQ_KS11_KjKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IjSK_EEEEEC2IKSM_KSX_KjKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIiiEESC_EEEEvEENS1_IjNS_9null_typeEEEEC2IKSF_KjKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEElSR_SR_SR_SR_SR_SR_EEEEEESH_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEElSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IlSO_EEEEEEEC2IKS8_KSQ_KS11_KlKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IlSK_EEEEEC2IKSM_KSX_KlKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIiiEESC_EEEEvEENS1_IlNS_9null_typeEEEEC2IKSF_KlKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEEEEvRT_NSO_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EENS0_16advance_iteratorIlEEEET0_RT_SO_ = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS3_INS4_INS5_INS_4pairIiiEES9_SA_SA_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SM_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_tailEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIiiEES7_S8_S8_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SJ_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIiiEES7_S8_S8_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl = comdat any $_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESH_EEEENS7_INSD_ISA_SG_SH_SH_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEEEENS_15iterator_traitsIT_E15difference_typeESQ_SQ_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESI_EEEENS8_INSE_ISB_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEEEENS_15iterator_traitsIT_E15difference_typeESR_SR_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_SV_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSX_IT5_T6_T7_T8_T9_T10_EEE4typeERKS14_RKS1B_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENS4_20distance_from_resultIT_T0_E4typeERKSP_RKSQ_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENT_15difference_typeERKSO_RKT0_NS4_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE11distance_toISK_EElRKNS0_IT_EE = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES9_NS0_4consINS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESI_EEEENSC_INS4_INSD_IS7_SH_SI_SI_EEEENS_9null_typeEEEEEEET_RKNSC_IT0_T1_EE = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EC2ERKS7_RKSF_RKSH_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEEC2IKS7_KSF_KSH_KSI_SQ_SQ_SQ_SQ_SQ_SQ_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIiiEES7_S8_S8_EEEENS_9null_typeEEEEC2IKSA_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_ = comdat any $_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS_10device_ptrIS7_EEEENS0_4consINS4_INS5_IjSB_SC_SC_EEEENSK_ISE_NS_9null_typeEEEEEEET_RKNSK_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmIEl = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEixEl = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_ = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZNK6thrust7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES7_E11dereferenceEv = comdat any $_ZN6thrust9referenceINS_4pairIiiEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_ = comdat any $_ZN6thrust9referenceINS_4pairIiiEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIPKS2_EEvT_ = comdat any $_ZN6thrust9referenceINS_4pairIiiEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIS7_NS4_3cpp6detail3tagEPKS2_EEvPT_PT0_T1_ = comdat any $_ZN6thrust9referenceINS_4pairIiiEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E24strip_const_assign_valueINS6_12cross_systemIS7_NS4_3cpp6detail3tagEEEPKS2_EEvRKT_T0_ = comdat any $_ZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_EN17war_nvbugs_8816319host_pathERNSF_IS4_S7_EESC_SE_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEEPKNS_4pairIiiEENS_7pointerISB_S8_NS_11use_defaultESF_EEEET1_RKNS_6detail21execution_policy_baseIT_EET0_SO_SH_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIiiEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIiiEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIiiEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIiiEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIiiEElNS_7pointerIS9_S7_NS_11use_defaultESD_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE = comdat any $_ZNK6thrust9referenceINS_4pairIiiEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EadEv = comdat any $_ZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_ = comdat any $_ZZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_EN10workaround13parallel_pathERNSW_IS4_EESJ_SJ_SO_SU_ = comdat any $_ZN6thrust6system4cuda6detail11scan_detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEES5_NS_11use_defaultESD_EEEENS9_INSA_IjS5_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS6_INS7_INS9_INS_10device_ptrISC_EEEESH_SI_SI_SI_SI_SI_SI_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S11_SW_T2_ = comdat any $_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElSJ_SK_SB_SL_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail16accumulate_tilesENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_4gridILm128ELm3EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail19inclusive_downsweepENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_T6_ = comdat any $_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEED2Ev = comdat any $_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEET_RKNS_15iterator_facadeIST_T0_T1_T2_T3_T4_EENST_15difference_typeE = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENS4_20distance_from_resultIT_T0_E4typeERKSM_RKSN_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENT_15difference_typeERKSL_RKT0_NS4_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE11distance_toISH_EElRKNS0_IT_EE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_ = comdat any $_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_4consINS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSD_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS0_4consINS4_INS5_IjSB_SC_SC_EEEENS_9null_typeEEEEET_RKNSH_IT0_T1_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEElNS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEElNS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKlRKSR_RKSX_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_IlNS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KlKSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_IlNS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KlKSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIlNS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEEEC2IKlKSK_KSQ_KSI_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEC2IKSK_KSQ_KSI_SW_SW_SW_SW_SW_SW_SW_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_6system6detail7generic6detail22segmented_scan_functorINS_4pairIiiEEj9add_pairsEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSC_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEEC2EmRKSE_ = comdat any $_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev = comdat any $_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS0_15temporary_arrayIS7_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERKSB_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSD_ = comdat any $_ZN6thrust7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEC2ESD_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEC2ERKSD_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_EC2ERKSE_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_mEN19workaround_warnings8allocateESG_m = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferINS_5tupleINS_4pairIiiEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS2_INS_7pointerIT_T0_NS_11use_defaultESD_EENSE_15difference_typeEEERKNS_6detail21execution_policy_baseISC_EESF_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IiiEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EEmEC2ISB_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS6_SA_NS_11use_defaultESD_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS4_INS_7pointerIS7_SB_NS_11use_defaultESD_EElEEEENS4_INSC_IT_T0_SD_SD_EENSI_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS5_INS_7pointerIT_T0_NS_11use_defaultESF_EENSG_15difference_typeEEERNS_16execution_policyISE_EESH_ = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSF_ = comdat any $_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IiiEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EElEC2ERKSB_RKl = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEE3getESD_ = comdat any $_ZNK6thrust7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_E3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE4baseEv = comdat any $_ZN6thrust6mallocINS_5tupleINS_4pairIiiEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESD_EERKNS_6detail21execution_policy_baseISC_EEm = comdat any $_ZN6thrust9make_pairINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EElEENS3_IT_T0_EESD_SE_ = comdat any $_ZN6thrust6system6detail7generic6mallocINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESF_EERNS_16execution_policyISE_EEm = comdat any $_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES6_NS_11use_defaultESD_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEm = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E4baseEv = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEmEN19workaround_warnings10deallocateESG_SJ_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS7_SB_NS_11use_defaultESF_EEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16accumulate_tilesENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSX_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KSP_KSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KSL_KSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEC2IKS6_KSH_KSN_KSC_SV_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEC2IKSF_KSL_KS7_SR_SR_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEEEENS4_7closureIT_NSD_IT0_T1_T2_T3_T4_SG_SG_SG_SG_SG_EEEEST_RKSU_RKSV_RKSW_RKSX_RKSY_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEEE15is_stream_validEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEEE4execEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEEE6streamEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEEE12before_eventEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchESB_S10_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE9configureESB_ = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EE4sizeEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm128EE4sizeEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm128EE9heap_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S10_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm3EEELm128EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEEE4makeEiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEC2EiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEC2EiSA_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm3EEELm128EEEE4makeEiiS8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm128EEC2EiS6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm3EEELm128EEC2ES6_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm128EEC2ES8_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_EN10workaround14supported_pathEjjmS15_S12_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS3_3tagENS_11use_defaultESH_EEEElSJ_NS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEEEENS8_17make_tuple_mapperIT_T0_T1_T2_T3_SE_SE_SE_SE_SE_E4typeERKSR_RKSS_RKST_RKSU_RKSV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS8_INS_4pairIiiEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEESG_SG_SG_SG_SG_EEEC2ES7_RKSS_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS0_INS_4pairIiiEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS3_3tagENS_11use_defaultESG_EEEElSI_NS1_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEESD_SD_SD_SD_SD_EC2ERKS7_RKSI_RKlST_RKSO_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS4_3tagENS_11use_defaultESH_EEEENS1_IlNS1_ISJ_NS1_INS2_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESE_EEEEEEEEEC2IKS8_KSJ_KlSX_KSP_KSE_S10_S10_S10_S10_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_IlNS1_ISF_NS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEEEC2IKSF_KlSR_KSL_KS7_SU_SU_SU_SU_SU_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consIlNS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKlKSF_KSL_KS7_ST_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm128EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_3conILm128ELm3EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm = comdat any $_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm128EEEEENS3_14parallel_groupIT_Lm0EEESA_m = comdat any $_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm128EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail19inclusive_downsweepENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_T5_SN_SN_SN_SN_EEEES17_RKS18_RKS19_RKS1A_RKS1B_RKS1C_RKS1D_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchESB_S1E_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1E_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_EN10workaround14supported_pathEjjmS1J_S1G_ = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_T4_SL_SL_SL_SL_E4typeERKS15_RKS16_RKS17_RKS18_RKS19_RKS1A_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_EEEC2ES7_RKS16_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSW_RKS12_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEEEC2IKS8_KSN_KSP_KSS_KSX_KS13_KSL_S1H_S1H_S1H_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEEEC2IKSJ_KSL_KSO_KST_KSZ_KSH_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS_12zip_iteratorINS9_INS7_INS_10device_ptrISB_EEEENS7_INS8_IjSE_SF_SF_EEEESC_SC_SC_SC_SC_SC_SC_SC_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEEEC2IKS6_KSH_KSP_KSV_KSC_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS_12zip_iteratorINS4_INS2_INS_10device_ptrIS6_EEEENS2_INS3_IjSC_SD_SD_EEEES7_S7_S7_S7_S7_S7_S7_S7_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKSF_KSN_KST_KS7_S11_S11_S11_S11_S11_S11_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS6_SC_NS_11use_defaultESI_EEEESK_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS8_SC_NS_11use_defaultESG_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElSF_S8_SC_SG_SI_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSK_IT5_T6_T7_T8_T9_T10_EEE4typeERKSR_RKSY_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS9_SD_NS_11use_defaultESH_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSK_SL_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSD_21execution_policy_baseIT_EESG_T1_T2_ = comdat any $_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE3getERSE_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_EN10workaround13parallel_pathERNSH_IS4_EESC_lSF_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEESD_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEESD_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrustplINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIiiEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEEjSF_SF_SF_SF_SF_SF_EEEEEESE_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIiiEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIiiEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjSD_EEEEEEEC2IKS8_KSH_KSL_KjKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjS6_EEEEEC2IKSD_KSH_KjKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIiiEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEElSF_SF_SF_SF_SF_SF_EEEEEESE_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIiiEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIiiEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlSD_EEEEEEEC2IKS8_KSH_KSL_KlKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlS6_EEEEEC2IKSD_KSH_KlKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIiiEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIiiEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_ = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEvRT_NSE_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIiiEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISH_E4typeEE4typeERSH_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENS2_20distance_from_resultIT_T0_E4typeERKSI_RKSJ_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENT_15difference_typeERKSH_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E11distance_toISF_SE_SD_SD_SD_SD_SD_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElSC_S6_SA_SD_SF_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSI_IT5_T6_T7_T8_T9_T10_EEE4typeERKSP_RKSW_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENS_6detail20distance_from_resultIT_T0_E4typeERKSG_RKSH_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENT_15difference_typeERKSE_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE11distance_toISC_SD_S6_SA_SE_SG_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEET_RKNS_15iterator_facadeISJ_T0_T1_T2_T3_T4_EENSJ_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEEEEvRT_NSH_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIiiEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E7advanceEl = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEEEEvRT_NSM_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_16advance_iteratorIlEEEET0_RT_SM_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEC2ESH_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKSC_RKSE_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEC2IKSC_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEEEEvRT_NSL_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE7advanceEl = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EENS0_16advance_iteratorIlEEEET0_RT_SL_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEC2ESI_ = comdat any $_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EC2ERKS7_RKSF_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIiiEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEC2IKS7_KSF_KSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_ = comdat any $_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEEE3getERSB_ = comdat any $_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_EN10workaround13parallel_pathERNSE_IS4_EES9_lSC_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEESC_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEESC_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEEjNS_9null_typeESN_SN_SN_SN_SN_EEEEEESE_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKj = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIiiEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KjKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKSA_KSE_KjKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEElNS_9null_typeESN_SN_SN_SN_SN_EEEEEESE_NS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv = comdat any $_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv = comdat any $_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_ = comdat any $_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIiiEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKl = comdat any $_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIiiEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KlKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_7pointerINS_4pairIiiEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKSA_KSE_KlKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_ = comdat any $_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_ = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIiiEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_ = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_ = comdat any $_ZNK6thrust6detail11vector_baseIiNS_23device_malloc_allocatorIiEEE4sizeEv = comdat any $_ZN6thrusteqINS_4pairIiiEESaIS2_ES2_NS_23device_malloc_allocatorIS2_EEEEbRKNS_6detail11vector_baseIT_T0_EERKNS7_IT1_T2_EE = comdat any $_ZN8unittest9type_nameIN6thrust11host_vectorINS1_4pairIiiEESaIS4_EEEEESsv = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE4sizeEv = comdat any $_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIiiEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_ = comdat any $_ZNK6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIiiEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_NS0_17integral_constantIbLb0EEE = comdat any $_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagESB_EC2ERNS_16execution_policyISB_EESF_S7_S7_ = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEENS_6system4cuda6detail3tagENS9_3cpp6detail3tagEEC2ERNS_16execution_policyISC_EERNSH_ISF_EES8_S8_ = comdat any $_ZN6thrust5equalINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEEbT_SI_T0_ = comdat any $_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEE5beginEv = comdat any $_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE5beginEv = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIiiEENS_6system3cpp6detail3tagEED2Ev = comdat any $_ZN6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEC2INS_16execution_policyISB_EESF_EERKT_RKT0_S7_S7_ = comdat any $_ZN6thrust6detail15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEC2ES7_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lEC2ERKS8_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEEEEvRT_NSA_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E7advanceEl = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIKNS_4pairIiiEEEEEEvRT_NS7_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIiiEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7advanceEl = comdat any $_ZN6thrust6detail15temporary_arrayINS_4pairIiiEENS_6system3cpp6detail3tagEEC2INS4_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEERNS_16execution_policyIS7_EERNSI_IT_EET0_SO_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEC2ERNS_16execution_policyIS7_EE = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEC2ERKS9_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEEC2ERKSB_ = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE8allocateEm = comdat any $_ZN6thrust8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE18uninitialized_copyINS6_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEENSH_INS_7pointerIS3_S9_NS_11use_defaultESN_EEEERNS_16execution_policyIT_EET0_SU_SP_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEED2Ev = comdat any $_ZN6thrust6detail16tagged_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEC2ERKS8_ = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEC2ERKSA_ = comdat any $_ZN6thrust7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_ = comdat any $_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEC2ESA_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_ = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_m = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEE8allocateEm = comdat any $_ZN6thrust20get_temporary_bufferINS_4pairIiiEENS_6system3cpp6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_ = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEE6systemEv = comdat any $_ZN6thrust4pairINS_7pointerINS0_IiiEENS_6system3cpp6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE = comdat any $_ZN6thrust6detail19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm = comdat any $_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIiiEENS_6system3cpp6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_ = comdat any $_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIiiEENS0_3cpp6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_ = comdat any $_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_ = comdat any $_ZN6thrust4pairINS_7pointerINS0_IiiEENS_6system3cpp6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl = comdat any $_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEE3getESA_ = comdat any $_ZNK6thrust7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES7_E3getEv = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv = comdat any $_ZN6thrust6mallocINS_4pairIiiEENS_6system3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm = comdat any $_ZN6thrust9make_pairINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_ = comdat any $_ZN6thrust6system6detail7generic6mallocINS_4pairIiiEENS0_3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm = comdat any $_ZN6thrust23return_temporary_bufferINS_6system3cpp6detail3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_3cpp6detail3tagENS_7pointerINS_4pairIiiEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_ = comdat any $_ZN6thrust4freeINS_6system3cpp6detail3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_ = comdat any $_ZN6thrust6system6detail10sequential4freeINS0_3cpp6detail3tagENS_7pointerINS_4pairIiiEES6_NS_11use_defaultESA_EEEEvRNS2_16execution_policyIT_EET0_ = comdat any $_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_ = comdat any $_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEEEENS_15iterator_traitsIT_E15difference_typeESE_SE_NS_27random_access_traversal_tagE = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElS8_S5_SC_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES9_EENS2_20distance_from_resultIT_T0_E4typeERKSB_RKSC_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES9_EENT_15difference_typeERKSA_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11distance_toIS8_S7_S9_S9_S9_S9_S9_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_10device_ptrIKNS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElS5_S3_S9_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E4baseEv = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIiiEEEES6_EENS_6detail20distance_from_resultIT_T0_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIiiEEEES6_EENT_15difference_typeERKS7_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIiiEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE11distance_toIS5_S6_S3_SA_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIiiEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE4baseEv = comdat any $_ZN6thrust6detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS2_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKS9_EEEENS_7pointerIS9_SC_NS_11use_defaultESL_EEEET2_RNS_16execution_policyIT_EERT0_T1_SU_SN_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv = comdat any $_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS3_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKSA_EEEENS_7pointerISA_SD_NS_11use_defaultESM_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESR_E4typeERNS_16execution_policyIT_EERSP_T1_S11_SR_ = comdat any $_ZN6thrust6detail15two_system_copyINS_6system4cuda6detail3tagENS2_3cpp6detail3tagENS0_15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEENS_7pointerISC_S8_NS_11use_defaultESH_EEEET2_RKNS_16execution_policyIT_EERKNSK_IT0_EET1_ST_SJ_ = comdat any $_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEEE3getERSB_ = comdat any $_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS3_3tagENS1_3cpp6detail3tagEEENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEENS_7pointerISE_S8_NS_11use_defaultESJ_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SR_SL_ = comdat any $_ZN6thrust6system4cuda6detail4copyINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_ = comdat any $_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_NS8_17integral_constantIbLb1EEE = comdat any $_ZN6thrust6system4cuda6detail14trivial_copy_nINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEElNS_7pointerISC_S7_NS_11use_defaultESH_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_ = comdat any $_ZN6thrustplINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv = comdat any $_ZNK6thrust9referenceINS_4pairIiiEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EadEv = comdat any $_ZN6thrust16raw_pointer_castINS_10device_ptrIKNS_4pairIiiEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS8_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEdeEv = comdat any $_ZNK6thrust9referenceIKNS_4pairIiiEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEadEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_ = comdat any $_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZNK6thrust7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES7_E11dereferenceEv = comdat any $_ZN6thrust9referenceINS_4pairIiiEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_ = comdat any $_ZN6thrust6detail14pointer_traitsINS_10device_ptrIKNS_4pairIiiEEEEE3getES6_ = comdat any $_ZNK6thrust7pointerIKNS_4pairIiiEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE3getEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEEEENT_9referenceERKSA_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIKNS_4pairIiiEEEEEENT_9referenceERKS7_ = comdat any $_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIiiEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv = comdat any $_ZNK6thrust7pointerIKNS_4pairIiiEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE11dereferenceEv = comdat any $_ZN6thrust16device_referenceIKNS_4pairIiiEEEC2ERKNS_10device_ptrIS3_EE = comdat any $_ZN6thrust9referenceIKNS_4pairIiiEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEC2ERKS5_ = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl = comdat any $_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE10deallocateEv = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE4sizeEv = comdat any $_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm = comdat any $_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m = comdat any $_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm = comdat any $_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIiiEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEEEEbRKNS5_21execution_policy_baseIT_EET0_SN_T1_ = comdat any $_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIiiEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEEEEbRNS_16execution_policyIT_EET0_SO_T1_ = comdat any $_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIiiEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEEbRKNS5_21execution_policy_baseIT_EET0_SP_T1_T2_ = comdat any $_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIiiEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEEbRNS_16execution_policyIT_EET0_SQ_T1_T2_ = comdat any $_ZN6thrusteqINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lSD_S5_SC_SE_SF_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSG_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZN6thrust8mismatchINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIiiEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEENS8_IT0_T1_EERKNS5_21execution_policy_baseIT_EESK_SK_SL_T2_ = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEESE_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE5equalISD_S8_S5_SC_SE_SF_lEEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrusteqINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSE_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE4baseEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES8_EEbRKT_RKT0_ = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES6_NS_11use_defaultES8_S8_S8_S8_E5equalIS7_S6_S8_S8_S8_S8_S8_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust6system6detail7generic8mismatchINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIiiEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEENSA_IT0_T1_EERNS_16execution_policyIT_EESM_SM_SN_T2_ = comdat any $_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_ = comdat any $_ZN6thrust10make_tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESL_SL_SL_SL_SL_SL_SL_E4typeERKSJ_RKSK_ = comdat any $_ZN6thrust11find_if_notINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIiiEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESR_SR_T1_ = comdat any $_ZN6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIiiEEEEEC2ERKS5_ = comdat any $_ZN6thrust9make_pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS4_IT_T0_EESI_SJ_ = comdat any $_ZN6thrust3getILi0ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv = comdat any $_ZN6thrust3getILi1ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_ = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_ = comdat any $_ZN6thrust5tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EC2ERKSD_RKSH_ = comdat any $_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEEC2IKSD_KSH_KSI_SO_SO_SO_SO_SO_SO_SO_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_ = comdat any $_ZN6thrust6system6detail7generic11find_if_notINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIiiEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEET0_RNS_16execution_policyIT_EEST_ST_T1_ = comdat any $_ZN6thrust7find_ifINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIiiEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_12unary_negateINS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEEEET0_RKNS7_21execution_policy_baseIT_EEST_ST_T1_ = comdat any $_ZN6thrust6detail4not1INS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIiiEEEEEEEENS0_12unary_negateIT_EERKS9_ = comdat any $_ZN6thrust6system6detail10sequential7find_ifINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIiiEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_12unary_negateINS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEEEET0_RNS2_16execution_policyIT_EESV_SV_T1_ = comdat any $_ZN6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIiiEEEEEEEEbEC2ERKS9_ = comdat any $_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_ST_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSU_IT5_T6_T7_T8_T9_T10_EE = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIiiEEEEEEEEbEclINS0_28tuple_of_iterator_referencesIRKS6_NS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESL_EESL_EENS_9null_typeESO_SO_SO_SO_SO_SO_SO_EEEEbRKT_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEdeEv = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEppEv = comdat any $_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEESN_EEbRKT_RKT0_ = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE5equalISK_EEbRKNS0_IT_EE = comdat any $_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIiiEEEEEEEclINS0_28tuple_of_iterator_referencesIRKS5_RS5_NS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEEbRKT_ = comdat any $_ZN6thrust18raw_reference_castIRKNS_4pairIiiEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS_6detail21enable_if_unwrappableINSF_28tuple_of_iterator_referencesIT_T0_T1_T2_T3_T4_T5_T6_T7_T8_EENSF_13raw_referenceISS_E4typeEE4typeESS_ = comdat any $_ZNK6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIiiEEEEEclINS0_28tuple_of_iterator_referencesIRKS4_RS4_NS_9null_typeESC_SC_SC_SC_SC_SC_SC_EEEEbRKT_ = comdat any $_ZNK6thrust6detail8equal_toINS_4pairIiiEEEclIS3_EEbRKS3_RKT_ = comdat any $_ZN6thrust3getILi0ERKNS_4pairIiiEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_ = comdat any $_ZN6thrust3getILi1ERKNS_4pairIiiEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_ = comdat any $_ZN6thrusteqIiiEEbRKNS_4pairIT_T0_EES6_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIiiEES7_NS0_4consIRS5_NS_9null_typeEEEEET_RKNS8_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIiiEERKS5_NS0_4consIS6_NS_9null_typeEEEEET_RKNS9_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIiiEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20raw_reference_detail26raw_reference_tuple_helperENS0_28tuple_of_iterator_referencesIRKNS_4pairIiiEENS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_20raw_reference_casterEEENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISM_EE5valueEE4typeERKSM_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIiiEERS3_NS_9null_typeES7_S7_S7_S7_S7_S7_S7_EC2ERKNS_5tupleIS5_S6_S7_S7_S7_S7_S7_S7_S7_S7_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS0_28tuple_of_iterator_referencesIRKNS_4pairIiiEENS_9referenceIS4_NS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS0_20raw_reference_detail26raw_reference_tuple_helperENS0_20raw_reference_casterELj2EE27do_it_on_the_host_or_deviceERKSH_SK_ = comdat any $_ZN6thrust6detail20raw_reference_casterclINS_4pairIiiEEEENS0_13raw_referenceIKT_E4typeERS7_ = comdat any $_ZN6thrust3getILi0ERKNS_4pairIiiEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZN6thrust6detail20raw_reference_casterclINS_9referenceINS_4pairIiiEENS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EEEENS0_13raw_referenceIKT_E4typeERSG_ = comdat any $_ZN6thrust3getILi1ERKNS_4pairIiiEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_ = comdat any $_ZN6thrust5tupleIRKNS_4pairIiiEERS2_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EC2ES4_S5_ = comdat any $_ZN6thrust18raw_reference_castINS_4pairIiiEEEENS_6detail13raw_referenceIKT_E4typeERS6_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIiiEES7_NS0_4consINS_9referenceIS5_NS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeEEEEET_RKNS8_IT0_T1_EE = comdat any $_ZN6thrust18raw_reference_castINS_9referenceINS_4pairIiiEENS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultES9_EES9_EEEENS_6detail13raw_referenceIKT_E4typeERSF_ = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS_9referenceINS_4pairIiiEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EERKS6_NS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS_9referenceINS_4pairIiiEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail4consIRKNS_4pairIiiEENS1_IRS3_NS_9null_typeEEEEC2IS4_S3_KS7_SB_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEENT_9referenceERKSO_ = comdat any $_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv = comdat any $_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE11dereferenceEv = comdat any $_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISO_EE5valueEE4typeERKSO_T1_ = comdat any $_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIiiEENS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKNS_5tupleIS5_SE_SF_SF_SF_SF_SF_SF_SF_SF_EE = comdat any $_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EENS0_20dereference_iterator5applyESL_Lj2EE27do_it_on_the_host_or_deviceERKSK_SL_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEEEENS1_5applyIT_E4typeERKSG_ = comdat any $_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENS1_5applyIT_E4typeERKSF_ = comdat any $_ZN6thrust5tupleIRKNS_4pairIiiEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EC2ES4_RKSD_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEEEENT_9referenceERKSF_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE11dereferenceEv = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv = comdat any $_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_ = comdat any $_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv = comdat any $_ZN6thrust6detail4consIRKNS_4pairIiiEENS1_INS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeEEEEC2IS4_KSE_KSF_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_ = comdat any $_ZN6thrust6detail4consINS_9referenceINS_4pairIiiEENS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESA_EESA_EENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_ = comdat any $_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv = comdat any $_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE9incrementEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EENS0_18increment_iteratorEEET0_RT_SN_ = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_headEv = comdat any $_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SI_ = comdat any $_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE9incrementEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPKNS_4pairIiiEEEEEEvRT_ = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIiiEEEES6_NS_11use_defaultES8_S8_S8_S8_E9incrementEv = comdat any $_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_ = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv = comdat any $_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_ = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E9incrementEv = comdat any $_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEppEv = comdat any $_ZN6thrust20iterator_core_access9incrementINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_ = comdat any $_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE9incrementEv = comdat any $_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIiiEEEEEEEC2ERKS7_ = comdat any $_ZN6thrust4pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS0_IiiEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS4_SB_NS_11use_defaultESE_EEEEEC2ERKSC_RKSG_ = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIiiEEEENS_6system3cpp6detail3tagEEESF_NS0_4consINS5_INS_7pointerIS7_SE_NS_11use_defaultESK_EEEENS_9null_typeEEEEET_RKNSI_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS0_15tagged_iteratorINS4_IPKS7_EESB_EENS0_4consISE_NS_9null_typeEEEEET_RKNSM_IT0_T1_EE = comdat any $_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_ = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIiiEENS_6system3cpp6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagENS_7pointerINS_4pairIiiEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagENS_7pointerINS_4pairIiiEES6_NS_11use_defaultESA_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESF_T1_T2_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_9referenceINS_4pairIiiEENS_7pointerIS8_NS_6system3cpp6detail3tagENS_11use_defaultESE_EESE_EEEEvRKT_ = comdat any $_ZN6thrust6detail23allocator_traits_detail5gozerclINS_4pairIiiEEEEvRT_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustmiINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIiiEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl = comdat any $_ZNK6thrust6detail18contiguous_storageINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE5beginEv = comdat any $_ZN6thrust6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEC2INS2_IS4_EEEERKNS1_IT_EEPNS0_21enable_if_convertibleISA_S6_vE4typeE = comdat any $_ZN6thrust10device_ptrIKNS_4pairIiiEEEC2IS2_EERKNS0_IT_EE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIiiEEEEEES7_NS_11use_defaultES9_S9_S9_S9_EC2ERKS7_ = comdat any $_ZN6thrust7pointerIKNS_4pairIiiEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2INSA_IS2_EEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISF_SC_vE4typeE = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEENS_23device_malloc_allocatorIS3_EEE3endEv = comdat any $_ZN6thrust6detail18contiguous_storageINS_4pairIiiEESaIS3_EE7destroyENS0_15normal_iteratorIPS3_EES8_ = comdat any $_ZN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EE3endEv = comdat any $_ZN6thrust6detail13destroy_rangeISaINS_4pairIiiEEEPS3_lEEvRT_T0_T1_ = comdat any $_ZN6thrustmiINS_6detail15normal_iteratorIPNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lS6_S4_SA_SB_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_ = comdat any $_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaINS_4pairIiiEEEPS4_lEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERS8_S9_T1_ = comdat any $_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIiiEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS8_21execution_policy_baseIT_EESB_T1_T2_ = comdat any $_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIiiEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_ = comdat any $_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_4pairIiiEEEEvRT_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIiiEEEES7_EENS2_20distance_from_resultIT_T0_E4typeERKS9_RKSA_ = comdat any $_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIiiEEEES7_EENT_15difference_typeERKS8_RKT0_NS2_17integral_constantIbLb1EEE = comdat any $_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIiiEEEES5_NS_11use_defaultES7_S7_S7_S7_E11distance_toIS6_S5_S7_S7_S7_S7_S7_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE = comdat any $_ZN6thrust7advanceINS_6detail15normal_iteratorIPNS_4pairIiiEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPNS_4pairIiiEEEEmEEvRT_T0_ = comdat any $_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPNS_4pairIiiEEEEmEEvRT_T0_NS_27random_access_traversal_tagE = comdat any $_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIiiEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEpLEl = comdat any $_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPNS_4pairIiiEEEEEEvRT_NS8_15difference_typeE = comdat any $_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIiiEEEES5_NS_11use_defaultES7_S7_S7_S7_E7advanceEl = comdat any $_ZSt8_DestroyIPmmEvT_S1_RSaIT0_E = comdat any $_ZNSt12_Vector_baseImSaImEE19_M_get_Tp_allocatorEv = comdat any $_ZNSt12_Vector_baseImSaImEED2Ev = comdat any $_ZSt8_DestroyIPmEvT_S1_ = comdat any $_ZNSt12_Destroy_auxILb1EE9__destroyIPmEEvT_S3_ = comdat any $_ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm = comdat any $_ZN9__gnu_cxx13new_allocatorImED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorImE10deallocateEPmm = comdat any $_ZTV8UnitTest = comdat any $_ZTS8UnitTest = comdat any $_ZTI8UnitTest = comdat any $_ZTV16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE = comdat any $_ZTS16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE = comdat any $_ZTI16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE = comdat any $_ZTS17TestPairScanByKeyIiE = comdat any $_ZTI17TestPairScanByKeyIiE = comdat any $_ZTSN6thrust6system12system_errorE = comdat any $_ZTIN6thrust6system12system_errorE = comdat any $_ZZN6thrust6system13cuda_categoryEvE6result = comdat any $_ZGVZN6thrust6system13cuda_categoryEvE6result = comdat any $_ZTVN6thrust6system4cuda6detail19cuda_error_categoryE = comdat any $_ZTSN6thrust6system4cuda6detail19cuda_error_categoryE = comdat any $_ZTSN6thrust6system14error_categoryE = comdat any $_ZTIN6thrust6system14error_categoryE = comdat any $_ZTIN6thrust6system4cuda6detail19cuda_error_categoryE = comdat any $_ZTVN6thrust6system14error_categoryE = comdat any $_ZZN6thrust6system15system_categoryEvE6result = comdat any $_ZGVZN6thrust6system15system_categoryEvE6result = comdat any $_ZTVN6thrust6system6detail21system_error_categoryE = comdat any $_ZTSN6thrust6system6detail21system_error_categoryE = comdat any $_ZTIN6thrust6system6detail21system_error_categoryE = comdat any $_ZZN6thrust6system16generic_categoryEvE6result = comdat any $_ZGVZN6thrust6system16generic_categoryEvE6result = comdat any $_ZTVN6thrust6system6detail22generic_error_categoryE = comdat any $_ZTSN6thrust6system6detail22generic_error_categoryE = comdat any $_ZTIN6thrust6system6detail22generic_error_categoryE = comdat any $_ZZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err = comdat any $_ZGVZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err = comdat any $_ZZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err = comdat any $_ZGVZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err = comdat any $_ZTVN6thrust6system12system_errorE = comdat any $_ZTSN6thrust6system6detail9bad_allocE = comdat any $_ZTIN6thrust6system6detail9bad_allocE = comdat any $_ZTVN6thrust6system6detail9bad_allocE = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE15max_num_devices = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE16properties_exist = comdat any $_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE17device_properties = comdat any $_ZTSN8unittest15UnitTestFailureE = comdat any $_ZTSN8unittest17UnitTestExceptionE = comdat any $_ZTIN8unittest17UnitTestExceptionE = comdat any $_ZTIN8unittest15UnitTestFailureE = comdat any $_ZTSN6thrust11host_vectorINS_4pairIaaEESaIS2_EEE = comdat any $_ZTSN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEE = comdat any $_ZTIN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEE = comdat any $_ZTIN6thrust11host_vectorINS_4pairIaaEESaIS2_EEE = comdat any $_ZTSN6thrust11host_vectorINS_4pairIssEESaIS2_EEE = comdat any $_ZTSN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEE = comdat any $_ZTIN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEE = comdat any $_ZTIN6thrust11host_vectorINS_4pairIssEESaIS2_EEE = comdat any $_ZTSN6thrust11host_vectorINS_4pairIiiEESaIS2_EEE = comdat any $_ZTSN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EEE = comdat any $_ZTIN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EEE = comdat any $_ZTIN6thrust11host_vectorINS_4pairIiiEESaIS2_EEE = comdat any @_ZN6thrust6system6detail10sequentialL3seqE = internal global %"struct.thrust::system::detail::sequential::tag" zeroinitializer, align 1 @_ZN6thrust12placeholdersL2_1E = internal global %"struct.thrust::detail::functional::actor" zeroinitializer, align 1 @_ZN6thrust12placeholdersL2_2E = internal global %"struct.thrust::detail::functional::actor.0" zeroinitializer, align 1 @_ZN6thrust12placeholdersL2_3E = internal global %"struct.thrust::detail::functional::actor.3" zeroinitializer, align 1 @_ZN6thrust12placeholdersL2_4E = internal global %"struct.thrust::detail::functional::actor.6" zeroinitializer, align 1 @_ZN6thrust12placeholdersL2_5E = internal global %"struct.thrust::detail::functional::actor.9" zeroinitializer, align 1 @_ZN6thrust12placeholdersL2_6E = internal global %"struct.thrust::detail::functional::actor.12" zeroinitializer, align 1 @_ZN6thrust12placeholdersL2_7E = internal global %"struct.thrust::detail::functional::actor.15" zeroinitializer, align 1 @_ZN6thrust12placeholdersL2_8E = internal global %"struct.thrust::detail::functional::actor.18" zeroinitializer, align 1 @_ZN6thrust12placeholdersL2_9E = internal global %"struct.thrust::detail::functional::actor.21" zeroinitializer, align 1 @_ZN6thrust12placeholdersL3_10E = internal global %"struct.thrust::detail::functional::actor.24" zeroinitializer, align 1 @_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 @__dso_handle = external global i8 @_ZN6thrust6system4cuda6detail5bulk_L4rootE = internal global %"struct.thrust::system::cuda::detail::bulk_::detail::cursor" zeroinitializer, align 1 @_ZN6thrustL3seqE = internal global %"struct.thrust::detail::seq_t" zeroinitializer, align 1 @_ZN6thrust6system3cppL3parE = internal global %"struct.thrust::system::cpp::detail::par_t" zeroinitializer, align 1 @_ZN6thrust6system4cudaL3parE = internal global %"struct.thrust::system::cuda::detail::par_t" zeroinitializer, align 1 @_ZN6thrustL4hostE = internal global %"struct.thrust::system::cpp::detail::par_t" zeroinitializer, align 1 @_ZN6thrustL6deviceE = internal global %"struct.thrust::system::cuda::detail::par_t" zeroinitializer, align 1 @TestPairScanByKeyInstance = global %class.VariableUnitTest zeroinitializer, align 8 @_ZTV8UnitTest = linkonce_odr unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI8UnitTest to i8*), i8* bitcast (void (%class.UnitTest*)* @_ZN8UnitTestD2Ev to i8*), i8* bitcast (void (%class.UnitTest*)* @_ZN8UnitTestD0Ev to i8*), i8* bitcast (void (%class.UnitTest*)* @_ZN8UnitTest3runEv to i8*)], comdat, align 8 @_ZTVN10__cxxabiv117__class_type_infoE = external global i8* @_ZTS8UnitTest = linkonce_odr constant [10 x i8] c"8UnitTest\00", comdat @_ZTI8UnitTest = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @_ZTS8UnitTest, i32 0, i32 0) }, comdat @_ZNSs4_Rep20_S_empty_rep_storageE = external global [0 x i64], align 8 @_ZZL18__gthread_active_pvE20__gthread_active_ptr = internal constant i8* bitcast (i32 (i32*, void (i8*)*)* @__pthread_key_create to i8*), align 8 @_ZTV16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE = linkonce_odr unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTI16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE to i8*), i8* bitcast (void (%class.UnitTest*)* @_ZN8UnitTestD2Ev to i8*), i8* bitcast (void (%class.VariableUnitTest*)* @_ZN16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEED0Ev to i8*), i8* bitcast (void (%class.VariableUnitTest*)* @_ZN16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE3runEv to i8*)], comdat, align 8 @_ZTVN10__cxxabiv120__si_class_type_infoE = external global i8* @_ZTS16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE = linkonce_odr constant [129 x i8] c"16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE\00", comdat @_ZTI16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([129 x i8], [129 x i8]* @_ZTS16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTI8UnitTest to i8*) }, comdat @.str = private unnamed_addr constant [8 x i8] c"struct \00", align 1 @.str.19 = private unnamed_addr constant [7 x i8] c"class \00", align 1 @.str.20 = private unnamed_addr constant [2 x i8] c"<\00", align 1 @.str.21 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @_ZTS17TestPairScanByKeyIiE = linkonce_odr constant [23 x i8] c"17TestPairScanByKeyIiE\00", comdat @_ZTI17TestPairScanByKeyIiE = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @_ZTS17TestPairScanByKeyIiE, i32 0, i32 0) }, comdat @.str.22 = private unnamed_addr constant [28 x i8] c"testing/pair_scan_by_key.cu\00", align 1 @.str.23 = private unnamed_addr constant [31 x i8] c"assignment exceeds max_size().\00", align 1 @_ZTISt12length_error = external constant i8* @.str.24 = private unnamed_addr constant [17 x i8] c"cudaFree in free\00", align 1 @_ZTSN6thrust6system12system_errorE = linkonce_odr constant [31 x i8] c"N6thrust6system12system_errorE\00", comdat @_ZTISt13runtime_error = external constant i8* @_ZTIN6thrust6system12system_errorE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @_ZTSN6thrust6system12system_errorE, i32 0, i32 0), i8* bitcast (i8** @_ZTISt13runtime_error to i8*) }, comdat @_ZZN6thrust6system13cuda_categoryEvE6result = linkonce_odr global %"class.thrust::system::cuda::detail::cuda_error_category" zeroinitializer, comdat, align 8 @_ZGVZN6thrust6system13cuda_categoryEvE6result = linkonce_odr global i64 0, comdat, align 8 @_ZTVN6thrust6system4cuda6detail19cuda_error_categoryE = linkonce_odr unnamed_addr constant [9 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system4cuda6detail19cuda_error_categoryE to i8*), i8* bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to i8*), i8* bitcast (void (%"class.thrust::system::cuda::detail::cuda_error_category"*)* @_ZN6thrust6system4cuda6detail19cuda_error_categoryD0Ev to i8*), i8* bitcast (i8* (%"class.thrust::system::cuda::detail::cuda_error_category"*)* @_ZNK6thrust6system4cuda6detail19cuda_error_category4nameEv to i8*), i8* bitcast ({ i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::cuda::detail::cuda_error_category"*, i32)* @_ZNK6thrust6system4cuda6detail19cuda_error_category23default_error_conditionEi to i8*), i8* bitcast (i1 (%"class.thrust::system::error_category"*, i32, %"class.thrust::system::error_condition"*)* @_ZNK6thrust6system14error_category10equivalentEiRKNS0_15error_conditionE to i8*), i8* bitcast (i1 (%"class.thrust::system::error_category"*, %"class.thrust::system::error_code"*, i32)* @_ZNK6thrust6system14error_category10equivalentERKNS0_10error_codeEi to i8*), i8* bitcast (void (%"class.std::basic_string"*, %"class.thrust::system::cuda::detail::cuda_error_category"*, i32)* @_ZNK6thrust6system4cuda6detail19cuda_error_category7messageEi to i8*)], comdat, align 8 @_ZTSN6thrust6system4cuda6detail19cuda_error_categoryE = linkonce_odr constant [50 x i8] c"N6thrust6system4cuda6detail19cuda_error_categoryE\00", comdat @_ZTSN6thrust6system14error_categoryE = linkonce_odr constant [33 x i8] c"N6thrust6system14error_categoryE\00", comdat @_ZTIN6thrust6system14error_categoryE = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @_ZTSN6thrust6system14error_categoryE, i32 0, i32 0) }, comdat @_ZTIN6thrust6system4cuda6detail19cuda_error_categoryE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([50 x i8], [50 x i8]* @_ZTSN6thrust6system4cuda6detail19cuda_error_categoryE, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTIN6thrust6system14error_categoryE to i8*) }, comdat @_ZTVN6thrust6system14error_categoryE = linkonce_odr unnamed_addr constant [9 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTIN6thrust6system14error_categoryE to i8*), i8* bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to i8*), i8* bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD0Ev to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast ({ i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)* @_ZNK6thrust6system14error_category23default_error_conditionEi to i8*), i8* bitcast (i1 (%"class.thrust::system::error_category"*, i32, %"class.thrust::system::error_condition"*)* @_ZNK6thrust6system14error_category10equivalentEiRKNS0_15error_conditionE to i8*), i8* bitcast (i1 (%"class.thrust::system::error_category"*, %"class.thrust::system::error_code"*, i32)* @_ZNK6thrust6system14error_category10equivalentERKNS0_10error_codeEi to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*)], comdat, align 8 @.str.25 = private unnamed_addr constant [5 x i8] c"cuda\00", align 1 @_ZZN6thrust6system15system_categoryEvE6result = linkonce_odr global %"class.thrust::system::detail::system_error_category" zeroinitializer, comdat, align 8 @_ZGVZN6thrust6system15system_categoryEvE6result = linkonce_odr global i64 0, comdat, align 8 @_ZTVN6thrust6system6detail21system_error_categoryE = linkonce_odr unnamed_addr constant [9 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system6detail21system_error_categoryE to i8*), i8* bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to i8*), i8* bitcast (void (%"class.thrust::system::detail::system_error_category"*)* @_ZN6thrust6system6detail21system_error_categoryD0Ev to i8*), i8* bitcast (i8* (%"class.thrust::system::detail::system_error_category"*)* @_ZNK6thrust6system6detail21system_error_category4nameEv to i8*), i8* bitcast ({ i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::detail::system_error_category"*, i32)* @_ZNK6thrust6system6detail21system_error_category23default_error_conditionEi to i8*), i8* bitcast (i1 (%"class.thrust::system::error_category"*, i32, %"class.thrust::system::error_condition"*)* @_ZNK6thrust6system14error_category10equivalentEiRKNS0_15error_conditionE to i8*), i8* bitcast (i1 (%"class.thrust::system::error_category"*, %"class.thrust::system::error_code"*, i32)* @_ZNK6thrust6system14error_category10equivalentERKNS0_10error_codeEi to i8*), i8* bitcast (void (%"class.std::basic_string"*, %"class.thrust::system::detail::system_error_category"*, i32)* @_ZNK6thrust6system6detail21system_error_category7messageEi to i8*)], comdat, align 8 @_ZTSN6thrust6system6detail21system_error_categoryE = linkonce_odr constant [47 x i8] c"N6thrust6system6detail21system_error_categoryE\00", comdat @_ZTIN6thrust6system6detail21system_error_categoryE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([47 x i8], [47 x i8]* @_ZTSN6thrust6system6detail21system_error_categoryE, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTIN6thrust6system14error_categoryE to i8*) }, comdat @.str.26 = private unnamed_addr constant [7 x i8] c"system\00", align 1 @_ZZN6thrust6system16generic_categoryEvE6result = linkonce_odr global %"class.thrust::system::detail::generic_error_category" zeroinitializer, comdat, align 8 @_ZGVZN6thrust6system16generic_categoryEvE6result = linkonce_odr global i64 0, comdat, align 8 @_ZTVN6thrust6system6detail22generic_error_categoryE = linkonce_odr unnamed_addr constant [9 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system6detail22generic_error_categoryE to i8*), i8* bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to i8*), i8* bitcast (void (%"class.thrust::system::detail::generic_error_category"*)* @_ZN6thrust6system6detail22generic_error_categoryD0Ev to i8*), i8* bitcast (i8* (%"class.thrust::system::detail::generic_error_category"*)* @_ZNK6thrust6system6detail22generic_error_category4nameEv to i8*), i8* bitcast ({ i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)* @_ZNK6thrust6system14error_category23default_error_conditionEi to i8*), i8* bitcast (i1 (%"class.thrust::system::error_category"*, i32, %"class.thrust::system::error_condition"*)* @_ZNK6thrust6system14error_category10equivalentEiRKNS0_15error_conditionE to i8*), i8* bitcast (i1 (%"class.thrust::system::error_category"*, %"class.thrust::system::error_code"*, i32)* @_ZNK6thrust6system14error_category10equivalentERKNS0_10error_codeEi to i8*), i8* bitcast (void (%"class.std::basic_string"*, %"class.thrust::system::detail::generic_error_category"*, i32)* @_ZNK6thrust6system6detail22generic_error_category7messageEi to i8*)], comdat, align 8 @_ZTSN6thrust6system6detail22generic_error_categoryE = linkonce_odr constant [48 x i8] c"N6thrust6system6detail22generic_error_categoryE\00", comdat @_ZTIN6thrust6system6detail22generic_error_categoryE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([48 x i8], [48 x i8]* @_ZTSN6thrust6system6detail22generic_error_categoryE, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTIN6thrust6system14error_categoryE to i8*) }, comdat @.str.27 = private unnamed_addr constant [8 x i8] c"generic\00", align 1 @_ZZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err = linkonce_odr global %"class.std::basic_string" zeroinitializer, comdat, align 8 @_ZGVZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err = linkonce_odr global i64 0, comdat, align 8 @.str.28 = private unnamed_addr constant [14 x i8] c"Unknown error\00", align 1 @_ZZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err = linkonce_odr global %"class.std::basic_string" zeroinitializer, comdat, align 8 @_ZGVZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err = linkonce_odr global i64 0, comdat, align 8 @_ZTVN6thrust6system12system_errorE = linkonce_odr unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system12system_errorE to i8*), i8* bitcast (void (%"class.thrust::system::system_error"*)* @_ZN6thrust6system12system_errorD2Ev to i8*), i8* bitcast (void (%"class.thrust::system::system_error"*)* @_ZN6thrust6system12system_errorD0Ev to i8*), i8* bitcast (i8* (%"class.thrust::system::system_error"*)* @_ZNK6thrust6system12system_error4whatEv to i8*)], comdat, align 8 @.str.29 = private unnamed_addr constant [3 x i8] c": \00", align 1 @_ZTISt9bad_alloc = external constant i8* @_ZTVSt9bad_alloc = available_externally unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast (i8** @_ZTISt9bad_alloc to i8*), i8* bitcast (void (%"class.std::bad_alloc"*)* @_ZNSt9bad_allocD1Ev to i8*), i8* bitcast (void (%"class.std::bad_alloc"*)* @_ZNSt9bad_allocD0Ev to i8*), i8* bitcast (i8* (%"class.std::bad_alloc"*)* @_ZNKSt9bad_alloc4whatEv to i8*)], align 8 @_ZTVSt9exception = available_externally unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast (i8** @_ZTISt9exception to i8*), i8* bitcast (void (%"class.std::exception"*)* @_ZNSt9exceptionD1Ev to i8*), i8* bitcast (void (%"class.std::exception"*)* @_ZNSt9exceptionD0Ev to i8*), i8* bitcast (i8* (%"class.std::exception"*)* @_ZNKSt9exception4whatEv to i8*)], align 8 @_ZTISt9exception = external constant i8* @_ZTSN6thrust6system6detail9bad_allocE = linkonce_odr constant [34 x i8] c"N6thrust6system6detail9bad_allocE\00", comdat @_ZTIN6thrust6system6detail9bad_allocE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @_ZTSN6thrust6system6detail9bad_allocE, i32 0, i32 0), i8* bitcast (i8** @_ZTISt9bad_alloc to i8*) }, comdat @_ZTVN6thrust6system6detail9bad_allocE = linkonce_odr unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system6detail9bad_allocE to i8*), i8* bitcast (void (%"class.thrust::system::detail::bad_alloc"*)* @_ZN6thrust6system6detail9bad_allocD2Ev to i8*), i8* bitcast (void (%"class.thrust::system::detail::bad_alloc"*)* @_ZN6thrust6system6detail9bad_allocD0Ev to i8*), i8* bitcast (i8* (%"class.thrust::system::detail::bad_alloc"*)* @_ZNK6thrust6system6detail9bad_alloc4whatEv to i8*)], comdat, align 8 @.str.30 = private unnamed_addr constant [67 x i8] c"failed synchronize in thrust::system::cuda::detail::trivial_copy_n\00", align 1 @stderr = external global %struct._IO_FILE*, align 8 @.str.31 = private unnamed_addr constant [31 x i8] c" clang WAR failed. Terminate.\0A\00", align 1 @_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE15max_num_devices = linkonce_odr constant i32 16, comdat, align 4 @_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE16properties_exist = linkonce_odr global [16 x i8] zeroinitializer, comdat, align 16 @_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE17device_properties = linkonce_odr global [16 x %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"] zeroinitializer, comdat, align 16 @.str.32 = private unnamed_addr constant [47 x i8] c"cudaDeviceGetProperty in get_device_properties\00", align 1 @.str.33 = private unnamed_addr constant [38 x i8] c"current_device(): after cudaGetDevice\00", align 1 @.str.34 = private unnamed_addr constant [51 x i8] c"function_attributes(): after cudaFuncGetAttributes\00", align 1 @.str.35 = private unnamed_addr constant [39 x i8] c"cudaStreamWaitEvent in async_in_stream\00", align 1 @.str.36 = private unnamed_addr constant [21 x i8] c"bulk_kernel_by_value\00", align 1 @.str.37 = private unnamed_addr constant [54 x i8] c"after cudaLaunch in triple_chevron_launcher::launch()\00", align 1 @.str.38 = private unnamed_addr constant [40 x i8] c"cudaEventCreateWithFlags in future ctor\00", align 1 @.str.39 = private unnamed_addr constant [31 x i8] c"cudaEventRecord in future ctor\00", align 1 @.str.40 = private unnamed_addr constant [40 x i8] c"cudaStreamCreate in bulk::detail::async\00", align 1 @.str.41 = private unnamed_addr constant [43 x i8] c"cudaStreamWaitEvent in bulk::detail::async\00", align 1 @.str.42 = private unnamed_addr constant [53 x i8] c"CUDA error after cudaEventDestroy in future dtor: %s\00", align 1 @.str.43 = private unnamed_addr constant [54 x i8] c"CUDA error after cudaStreamDestroy in future dtor: %s\00", align 1 @.str.44 = private unnamed_addr constant [56 x i8] c"temporary_buffer::allocate: get_temporary_buffer failed\00", align 1 @.str.45 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @.str.46 = private unnamed_addr constant [2 x i8] c":\00", align 1 @.str.47 = private unnamed_addr constant [3 x i8] c"] \00", align 1 @.str.48 = private unnamed_addr constant [22 x i8] c"values are not equal.\00", align 1 @.str.49 = private unnamed_addr constant [9 x i8] c" [type='\00", align 1 @.str.50 = private unnamed_addr constant [3 x i8] c"']\00", align 1 @_ZTSN8unittest15UnitTestFailureE = linkonce_odr constant [29 x i8] c"N8unittest15UnitTestFailureE\00", comdat @_ZTSN8unittest17UnitTestExceptionE = linkonce_odr constant [31 x i8] c"N8unittest17UnitTestExceptionE\00", comdat @_ZTIN8unittest17UnitTestExceptionE = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @_ZTSN8unittest17UnitTestExceptionE, i32 0, i32 0) }, comdat @_ZTIN8unittest15UnitTestFailureE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([29 x i8], [29 x i8]* @_ZTSN8unittest15UnitTestFailureE, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTIN8unittest17UnitTestExceptionE to i8*) }, comdat @_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE = external unnamed_addr constant [10 x i8*] @_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE = external unnamed_addr constant [4 x i8*] @_ZTVSt9basic_iosIcSt11char_traitsIcEE = external unnamed_addr constant [4 x i8*] @_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE = external unnamed_addr constant [16 x i8*] @_ZTVSt15basic_streambufIcSt11char_traitsIcEE = external unnamed_addr constant [16 x i8*] @.str.51 = private unnamed_addr constant [42 x i8] c"basic_string::_S_construct null not valid\00", align 1 @_ZNSs4_Rep11_S_terminalE = external constant i8, align 1 @_ZTSN6thrust11host_vectorINS_4pairIaaEESaIS2_EEE = linkonce_odr constant [45 x i8] c"N6thrust11host_vectorINS_4pairIaaEESaIS2_EEE\00", comdat @_ZTSN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEE = linkonce_odr constant [52 x i8] c"N6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEE\00", comdat @_ZTIN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEE = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([52 x i8], [52 x i8]* @_ZTSN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEE, i32 0, i32 0) }, comdat @_ZTIN6thrust11host_vectorINS_4pairIaaEESaIS2_EEE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([45 x i8], [45 x i8]* @_ZTSN6thrust11host_vectorINS_4pairIaaEESaIS2_EEE, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTIN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEE to i8*) }, comdat @_ZTSN6thrust11host_vectorINS_4pairIssEESaIS2_EEE = linkonce_odr constant [45 x i8] c"N6thrust11host_vectorINS_4pairIssEESaIS2_EEE\00", comdat @_ZTSN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEE = linkonce_odr constant [52 x i8] c"N6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEE\00", comdat @_ZTIN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEE = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([52 x i8], [52 x i8]* @_ZTSN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEE, i32 0, i32 0) }, comdat @_ZTIN6thrust11host_vectorINS_4pairIssEESaIS2_EEE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([45 x i8], [45 x i8]* @_ZTSN6thrust11host_vectorINS_4pairIssEESaIS2_EEE, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTIN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEE to i8*) }, comdat @_ZTSN6thrust11host_vectorINS_4pairIiiEESaIS2_EEE = linkonce_odr constant [45 x i8] c"N6thrust11host_vectorINS_4pairIiiEESaIS2_EEE\00", comdat @_ZTSN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EEE = linkonce_odr constant [52 x i8] c"N6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EEE\00", comdat @_ZTIN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EEE = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([52 x i8], [52 x i8]* @_ZTSN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EEE, i32 0, i32 0) }, comdat @_ZTIN6thrust11host_vectorINS_4pairIiiEESaIS2_EEE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([45 x i8], [45 x i8]* @_ZTSN6thrust11host_vectorINS_4pairIiiEESaIS2_EEE, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTIN6thrust6detail11vector_baseINS_4pairIiiEESaIS3_EEE to i8*) }, comdat @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_pair_scan_by_key.cui, i8* null }] ; Function Attrs: uwtable define internal void @__cxx_global_var_init() #0 section ".text.startup" { entry: call void @_ZN6thrust6system6detail10sequential3tagC2Ev(%"struct.thrust::system::detail::sequential::tag"* @_ZN6thrust6system6detail10sequentialL3seqE) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::system::detail::sequential::tag", %"struct.thrust::system::detail::sequential::tag"* @_ZN6thrust6system6detail10sequentialL3seqE, i32 0, i32 0)) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail10sequential3tagC2Ev(%"struct.thrust::system::detail::sequential::tag"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::detail::sequential::tag"*, align 8 store %"struct.thrust::system::detail::sequential::tag"* %this, %"struct.thrust::system::detail::sequential::tag"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::detail::sequential::tag"*, %"struct.thrust::system::detail::sequential::tag"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::detail::sequential::tag"* %this1 to %"struct.thrust::system::detail::sequential::execution_policy"* ret void } ; Function Attrs: argmemonly nounwind declare {}* @llvm.invariant.start(i64, i8* nocapture) #2 ; Function Attrs: uwtable define internal void @__cxx_global_var_init.1() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj0EEEEC2Ev(%"struct.thrust::detail::functional::actor"* @_ZN6thrust12placeholdersL2_1E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor", %"struct.thrust::detail::functional::actor"* @_ZN6thrust12placeholdersL2_1E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj0EEEEC2Ev(%"struct.thrust::detail::functional::actor"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor"*, align 8 store %"struct.thrust::detail::functional::actor"* %this, %"struct.thrust::detail::functional::actor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor"*, %"struct.thrust::detail::functional::actor"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor"* %this1 to %"class.thrust::detail::functional::argument"* call void @_ZN6thrust6detail10functional8argumentILj0EEC2Ev(%"class.thrust::detail::functional::argument"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.2() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj1EEEEC2Ev(%"struct.thrust::detail::functional::actor.0"* @_ZN6thrust12placeholdersL2_2E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor.0", %"struct.thrust::detail::functional::actor.0"* @_ZN6thrust12placeholdersL2_2E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj1EEEEC2Ev(%"struct.thrust::detail::functional::actor.0"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor.0"*, align 8 store %"struct.thrust::detail::functional::actor.0"* %this, %"struct.thrust::detail::functional::actor.0"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor.0"*, %"struct.thrust::detail::functional::actor.0"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor.0"* %this1 to %"class.thrust::detail::functional::argument.1"* call void @_ZN6thrust6detail10functional8argumentILj1EEC2Ev(%"class.thrust::detail::functional::argument.1"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.3() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj2EEEEC2Ev(%"struct.thrust::detail::functional::actor.3"* @_ZN6thrust12placeholdersL2_3E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor.3", %"struct.thrust::detail::functional::actor.3"* @_ZN6thrust12placeholdersL2_3E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj2EEEEC2Ev(%"struct.thrust::detail::functional::actor.3"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor.3"*, align 8 store %"struct.thrust::detail::functional::actor.3"* %this, %"struct.thrust::detail::functional::actor.3"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor.3"*, %"struct.thrust::detail::functional::actor.3"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor.3"* %this1 to %"class.thrust::detail::functional::argument.4"* call void @_ZN6thrust6detail10functional8argumentILj2EEC2Ev(%"class.thrust::detail::functional::argument.4"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.4() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj3EEEEC2Ev(%"struct.thrust::detail::functional::actor.6"* @_ZN6thrust12placeholdersL2_4E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor.6", %"struct.thrust::detail::functional::actor.6"* @_ZN6thrust12placeholdersL2_4E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj3EEEEC2Ev(%"struct.thrust::detail::functional::actor.6"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor.6"*, align 8 store %"struct.thrust::detail::functional::actor.6"* %this, %"struct.thrust::detail::functional::actor.6"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor.6"*, %"struct.thrust::detail::functional::actor.6"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor.6"* %this1 to %"class.thrust::detail::functional::argument.7"* call void @_ZN6thrust6detail10functional8argumentILj3EEC2Ev(%"class.thrust::detail::functional::argument.7"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.5() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj4EEEEC2Ev(%"struct.thrust::detail::functional::actor.9"* @_ZN6thrust12placeholdersL2_5E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor.9", %"struct.thrust::detail::functional::actor.9"* @_ZN6thrust12placeholdersL2_5E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj4EEEEC2Ev(%"struct.thrust::detail::functional::actor.9"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor.9"*, align 8 store %"struct.thrust::detail::functional::actor.9"* %this, %"struct.thrust::detail::functional::actor.9"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor.9"*, %"struct.thrust::detail::functional::actor.9"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor.9"* %this1 to %"class.thrust::detail::functional::argument.10"* call void @_ZN6thrust6detail10functional8argumentILj4EEC2Ev(%"class.thrust::detail::functional::argument.10"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.6() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj5EEEEC2Ev(%"struct.thrust::detail::functional::actor.12"* @_ZN6thrust12placeholdersL2_6E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor.12", %"struct.thrust::detail::functional::actor.12"* @_ZN6thrust12placeholdersL2_6E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj5EEEEC2Ev(%"struct.thrust::detail::functional::actor.12"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor.12"*, align 8 store %"struct.thrust::detail::functional::actor.12"* %this, %"struct.thrust::detail::functional::actor.12"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor.12"*, %"struct.thrust::detail::functional::actor.12"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor.12"* %this1 to %"class.thrust::detail::functional::argument.13"* call void @_ZN6thrust6detail10functional8argumentILj5EEC2Ev(%"class.thrust::detail::functional::argument.13"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.7() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj6EEEEC2Ev(%"struct.thrust::detail::functional::actor.15"* @_ZN6thrust12placeholdersL2_7E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor.15", %"struct.thrust::detail::functional::actor.15"* @_ZN6thrust12placeholdersL2_7E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj6EEEEC2Ev(%"struct.thrust::detail::functional::actor.15"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor.15"*, align 8 store %"struct.thrust::detail::functional::actor.15"* %this, %"struct.thrust::detail::functional::actor.15"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor.15"*, %"struct.thrust::detail::functional::actor.15"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor.15"* %this1 to %"class.thrust::detail::functional::argument.16"* call void @_ZN6thrust6detail10functional8argumentILj6EEC2Ev(%"class.thrust::detail::functional::argument.16"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.8() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj7EEEEC2Ev(%"struct.thrust::detail::functional::actor.18"* @_ZN6thrust12placeholdersL2_8E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor.18", %"struct.thrust::detail::functional::actor.18"* @_ZN6thrust12placeholdersL2_8E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj7EEEEC2Ev(%"struct.thrust::detail::functional::actor.18"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor.18"*, align 8 store %"struct.thrust::detail::functional::actor.18"* %this, %"struct.thrust::detail::functional::actor.18"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor.18"*, %"struct.thrust::detail::functional::actor.18"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor.18"* %this1 to %"class.thrust::detail::functional::argument.19"* call void @_ZN6thrust6detail10functional8argumentILj7EEC2Ev(%"class.thrust::detail::functional::argument.19"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.9() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj8EEEEC2Ev(%"struct.thrust::detail::functional::actor.21"* @_ZN6thrust12placeholdersL2_9E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor.21", %"struct.thrust::detail::functional::actor.21"* @_ZN6thrust12placeholdersL2_9E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj8EEEEC2Ev(%"struct.thrust::detail::functional::actor.21"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor.21"*, align 8 store %"struct.thrust::detail::functional::actor.21"* %this, %"struct.thrust::detail::functional::actor.21"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor.21"*, %"struct.thrust::detail::functional::actor.21"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor.21"* %this1 to %"class.thrust::detail::functional::argument.22"* call void @_ZN6thrust6detail10functional8argumentILj8EEC2Ev(%"class.thrust::detail::functional::argument.22"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.10() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail10functional5actorINS1_8argumentILj9EEEEC2Ev(%"struct.thrust::detail::functional::actor.24"* @_ZN6thrust12placeholdersL3_10E) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::functional::actor.24", %"struct.thrust::detail::functional::actor.24"* @_ZN6thrust12placeholdersL3_10E, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail10functional5actorINS1_8argumentILj9EEEEC2Ev(%"struct.thrust::detail::functional::actor.24"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::functional::actor.24"*, align 8 store %"struct.thrust::detail::functional::actor.24"* %this, %"struct.thrust::detail::functional::actor.24"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::functional::actor.24"*, %"struct.thrust::detail::functional::actor.24"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::functional::actor.24"* %this1 to %"class.thrust::detail::functional::argument.25"* call void @_ZN6thrust6detail10functional8argumentILj9EEC2Ev(%"class.thrust::detail::functional::argument.25"* %0) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.11() #0 section ".text.startup" { entry: call void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"* @_ZStL8__ioinit) %0 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.std::ios_base::Init"*)* @_ZNSt8ios_base4InitD1Ev to void (i8*)*), i8* getelementptr inbounds (%"class.std::ios_base::Init", %"class.std::ios_base::Init"* @_ZStL8__ioinit, i32 0, i32 0), i8* @__dso_handle) #5 ret void } declare void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"*) unnamed_addr #3 ; Function Attrs: nounwind declare void @_ZNSt8ios_base4InitD1Ev(%"class.std::ios_base::Init"*) unnamed_addr #4 ; Function Attrs: nounwind declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*) #5 ; Function Attrs: uwtable define internal void @__cxx_global_var_init.12() #0 section ".text.startup" { entry: call void @_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj0EEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj0EEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %this.addr, align 8 %this_exec = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj1EEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %this_exec) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.13() #0 section ".text.startup" { entry: call void @_ZN6thrust6detail5seq_tC2Ev(%"struct.thrust::detail::seq_t"* @_ZN6thrustL3seqE) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::detail::seq_t", %"struct.thrust::detail::seq_t"* @_ZN6thrustL3seqE, i32 0, i32 0)) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail5seq_tC2Ev(%"struct.thrust::detail::seq_t"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::seq_t"*, align 8 store %"struct.thrust::detail::seq_t"* %this, %"struct.thrust::detail::seq_t"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::seq_t"*, %"struct.thrust::detail::seq_t"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::seq_t"* %this1 to %"struct.thrust::system::detail::sequential::execution_policy.30"* ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.14() #0 section ".text.startup" { entry: call void @_ZN6thrust6system3cpp6detail5par_tC2Ev(%"struct.thrust::system::cpp::detail::par_t"* @_ZN6thrust6system3cppL3parE) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::system::cpp::detail::par_t", %"struct.thrust::system::cpp::detail::par_t"* @_ZN6thrust6system3cppL3parE, i32 0, i32 0)) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system3cpp6detail5par_tC2Ev(%"struct.thrust::system::cpp::detail::par_t"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cpp::detail::par_t"*, align 8 store %"struct.thrust::system::cpp::detail::par_t"* %this, %"struct.thrust::system::cpp::detail::par_t"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cpp::detail::par_t"*, %"struct.thrust::system::cpp::detail::par_t"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::par_t"* %this1 to %"struct.thrust::system::cpp::detail::execution_policy"* ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.15() #0 section ".text.startup" { entry: call void @_ZN6thrust6system4cuda6detail5par_tC2Ev(%"struct.thrust::system::cuda::detail::par_t"* @_ZN6thrust6system4cudaL3parE) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::par_t", %"struct.thrust::system::cuda::detail::par_t"* @_ZN6thrust6system4cudaL3parE, i32 0, i32 0)) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5par_tC2Ev(%"struct.thrust::system::cuda::detail::par_t"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::par_t"*, align 8 store %"struct.thrust::system::cuda::detail::par_t"* %this, %"struct.thrust::system::cuda::detail::par_t"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::par_t"*, %"struct.thrust::system::cuda::detail::par_t"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::par_t"* %this1 to %"struct.thrust::system::cuda::detail::execution_policy"* ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.16() #0 section ".text.startup" { entry: call void @_ZN6thrust6system3cpp6detail5par_tC2Ev(%"struct.thrust::system::cpp::detail::par_t"* @_ZN6thrustL4hostE) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::system::cpp::detail::par_t", %"struct.thrust::system::cpp::detail::par_t"* @_ZN6thrustL4hostE, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.17() #0 section ".text.startup" { entry: call void @_ZN6thrust6system4cuda6detail5par_tC2Ev(%"struct.thrust::system::cuda::detail::par_t"* @_ZN6thrustL6deviceE) %0 = call {}* @llvm.invariant.start(i64 1, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::par_t", %"struct.thrust::system::cuda::detail::par_t"* @_ZN6thrustL6deviceE, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define internal void @__cxx_global_var_init.18() #0 section ".text.startup" { entry: call void @_ZN16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEEC2Ev(%class.VariableUnitTest* @TestPairScanByKeyInstance) %0 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%class.UnitTest*)* @_ZN8UnitTestD2Ev to void (i8*)*), i8* bitcast (%class.VariableUnitTest* @TestPairScanByKeyInstance to i8*), i8* @__dso_handle) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEEC2Ev(%class.VariableUnitTest* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %class.VariableUnitTest*, align 8 %temp.lvalue = alloca %"class.std::basic_string", align 8 %ref.tmp = alloca %"class.std::basic_string", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %class.VariableUnitTest* %this, %class.VariableUnitTest** %this.addr, align 8, !tbaa !1 %this1 = load %class.VariableUnitTest*, %class.VariableUnitTest** %this.addr, align 8 %0 = bitcast %class.VariableUnitTest* %this1 to %class.UnitTest* call void @_ZN8unittest9type_nameI17TestPairScanByKeyIiEEESsv(%"class.std::basic_string"* sret %ref.tmp) invoke void @_Z15base_class_nameRKSs(%"class.std::basic_string"* sret %temp.lvalue, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %call = call i8* @_ZNKSs5c_strEv(%"class.std::basic_string"* %temp.lvalue) #5 invoke void @_ZN8UnitTestC2EPKc(%class.UnitTest* %0, i8* %call) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont call void @_ZNSsD2Ev(%"class.std::basic_string"* %temp.lvalue) #5 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 %1 = bitcast %class.VariableUnitTest* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*], [5 x i8*]* @_ZTV16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !5 ret void lpad: ; preds = %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 br label %ehcleanup lpad2: ; preds = %invoke.cont %5 = landingpad { i8*, i32 } cleanup %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %temp.lvalue) #5 br label %ehcleanup ehcleanup: ; preds = %lpad2, %lpad call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val4 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val4 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN8UnitTestD2Ev(%class.UnitTest* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %class.UnitTest*, align 8 store %class.UnitTest* %this, %class.UnitTest** %this.addr, align 8, !tbaa !1 %this1 = load %class.UnitTest*, %class.UnitTest** %this.addr, align 8 %0 = bitcast %class.UnitTest* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*], [5 x i8*]* @_ZTV8UnitTest, i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8, !tbaa !5 %name = getelementptr inbounds %class.UnitTest, %class.UnitTest* %this1, i32 0, i32 1 call void @_ZNSsD2Ev(%"class.std::basic_string"* %name) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj1EEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %this.addr, align 8 %this_exec = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj2EEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28"* %this_exec) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj2EEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28"** %this.addr, align 8 %this_exec = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.28"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj3EEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cursor.29"* %this_exec) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail6cursorILj3EEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cursor.29"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.29"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.29"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.29"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.29"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.29"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSsD2Ev(%"class.std::basic_string"* %this) unnamed_addr #1 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::allocator", align 1 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %call = invoke %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNKSs6_M_repEv(%"class.std::basic_string"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZNKSs13get_allocatorEv(%"class.std::allocator"* sret %ref.tmp, %"class.std::basic_string"* %this1) #5 invoke void @_ZNSs4_Rep10_M_disposeERKSaIcE(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %call, %"class.std::allocator"* dereferenceable(1) %ref.tmp) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 %_M_dataplus = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %this1, i32 0, i32 0 call void bitcast (void (%"class.std::allocator"*)* @_ZNSaIcED2Ev to void (%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*)*)(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %_M_dataplus) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 br label %ehcleanup lpad2: ; preds = %invoke.cont %3 = landingpad { i8*, i32 } catch i8* null %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad2, %lpad %_M_dataplus4 = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %this1, i32 0, i32 0 call void bitcast (void (%"class.std::allocator"*)* @_ZNSaIcED2Ev to void (%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*)*)(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %_M_dataplus4) #5 br label %terminate.handler terminate.handler: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN8UnitTestD0Ev(%class.UnitTest* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %class.UnitTest*, align 8 store %class.UnitTest* %this, %class.UnitTest** %this.addr, align 8, !tbaa !1 %this1 = load %class.UnitTest*, %class.UnitTest** %this.addr, align 8 call void @_ZN8UnitTestD2Ev(%class.UnitTest* %this1) #5 %0 = bitcast %class.UnitTest* %this1 to i8* call void @_ZdlPv(i8* %0) #14 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN8UnitTest3runEv(%class.UnitTest* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %class.UnitTest*, align 8 store %class.UnitTest* %this, %class.UnitTest** %this.addr, align 8, !tbaa !1 %this1 = load %class.UnitTest*, %class.UnitTest** %this.addr, align 8 ret void } ; Function Attrs: uwtable define available_externally %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNKSs6_M_repEv(%"class.std::basic_string"* %this) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %call = call i8* @_ZNKSs7_M_dataEv(%"class.std::basic_string"* %this1) %0 = bitcast i8* %call to %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %arrayidx = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %0, i64 -1 ret %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %arrayidx } declare i32 @__gxx_personality_v0(...) ; Function Attrs: uwtable define available_externally void @_ZNSs4_Rep10_M_disposeERKSaIcE(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this, %"class.std::allocator"* dereferenceable(1) %__a) #0 align 2 { entry: %this.addr = alloca %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 store %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8, !tbaa !7 %this1 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %this.addr, align 8 %call = call dereferenceable(24) %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs4_Rep12_S_empty_repEv() %cmp = icmp ne %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this1, %call %conv = zext i1 %cmp to i64 %expval = call i64 @llvm.expect.i64(i64 %conv, i64 0) %tobool = icmp ne i64 %expval, 0 br i1 %tobool, label %if.then, label %if.end5 if.then: ; preds = %entry %0 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this1 to %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base"* %_M_refcount = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base"* %0, i32 0, i32 2 %call2 = call i32 @_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii(i32* %_M_refcount, i32 -1) %cmp3 = icmp sle i32 %call2, 0 br i1 %cmp3, label %if.then4, label %if.end if.then4: ; preds = %if.then %1 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 call void @_ZNSs4_Rep10_M_destroyERKSaIcE(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this1, %"class.std::allocator"* dereferenceable(1) %1) #5 br label %if.end if.end: ; preds = %if.then4, %if.then br label %if.end5 if.end5: ; preds = %if.end, %entry ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNKSs13get_allocatorEv(%"class.std::allocator"* noalias sret %agg.result, %"class.std::basic_string"* %this) #1 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %_M_dataplus = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %_M_dataplus to %"class.std::allocator"* call void @_ZNSaIcEC2ERKS_(%"class.std::allocator"* %agg.result, %"class.std::allocator"* dereferenceable(1) %0) #5 ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSaIcED2Ev(%"class.std::allocator"* %this) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %this, %"class.std::allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::allocator"*, %"class.std::allocator"** %this.addr, align 8 %0 = bitcast %"class.std::allocator"* %this1 to %"class.__gnu_cxx::new_allocator"* call void @_ZN9__gnu_cxx13new_allocatorIcED2Ev(%"class.__gnu_cxx::new_allocator"* %0) #5 ret void } ; Function Attrs: noinline noreturn nounwind define linkonce_odr hidden void @__clang_call_terminate(i8*) #6 comdat { %2 = call i8* @__cxa_begin_catch(i8* %0) #5 call void @_ZSt9terminatev() #13 unreachable } declare i8* @__cxa_begin_catch(i8*) declare void @_ZSt9terminatev() ; Function Attrs: nounwind uwtable define available_externally i8* @_ZNKSs7_M_dataEv(%"class.std::basic_string"* %this) #1 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %_M_dataplus = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %this1, i32 0, i32 0 %_M_p = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %_M_dataplus, i32 0, i32 0 %0 = load i8*, i8** %_M_p, align 8, !tbaa !8 ret i8* %0 } ; Function Attrs: nounwind uwtable define available_externally dereferenceable(24) %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs4_Rep12_S_empty_repEv() #1 align 2 { entry: %__p = alloca i8*, align 8 %0 = bitcast i8** %__p to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 store i8* bitcast ([0 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE to i8*), i8** %__p, align 8, !tbaa !1 %1 = load i8*, i8** %__p, align 8, !tbaa !1 %2 = bitcast i8* %1 to %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %3 = bitcast i8** %__p to i8* call void @llvm.lifetime.end(i64 8, i8* %3) #5 ret %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %2 } ; Function Attrs: nounwind readnone declare i64 @llvm.expect.i64(i64, i64) #7 ; Function Attrs: inlinehint uwtable define internal i32 @_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii(i32* %__mem, i32 %__val) #8 { entry: %retval = alloca i32, align 4 %__mem.addr = alloca i32*, align 8 %__val.addr = alloca i32, align 4 store i32* %__mem, i32** %__mem.addr, align 8, !tbaa !1 store i32 %__val, i32* %__val.addr, align 4, !tbaa !11 %call = call i32 @_ZL18__gthread_active_pv() %tobool = icmp ne i32 %call, 0 br i1 %tobool, label %if.then, label %if.else if.then: ; preds = %entry %0 = load i32*, i32** %__mem.addr, align 8, !tbaa !1 %1 = load i32, i32* %__val.addr, align 4, !tbaa !11 %call1 = call i32 @_ZN9__gnu_cxxL18__exchange_and_addEPVii(i32* %0, i32 %1) store i32 %call1, i32* %retval, align 4 br label %return if.else: ; preds = %entry %2 = load i32*, i32** %__mem.addr, align 8, !tbaa !1 %3 = load i32, i32* %__val.addr, align 4, !tbaa !11 %call2 = call i32 @_ZN9__gnu_cxxL25__exchange_and_add_singleEPii(i32* %2, i32 %3) store i32 %call2, i32* %retval, align 4 br label %return return: ; preds = %if.else, %if.then %4 = load i32, i32* %retval, align 4 ret i32 %4 } ; Function Attrs: nounwind declare void @_ZNSs4_Rep10_M_destroyERKSaIcE(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, %"class.std::allocator"* dereferenceable(1)) #4 ; Function Attrs: argmemonly nounwind declare void @llvm.lifetime.start(i64, i8* nocapture) #2 ; Function Attrs: argmemonly nounwind declare void @llvm.lifetime.end(i64, i8* nocapture) #2 ; Function Attrs: inlinehint nounwind uwtable define internal i32 @_ZL18__gthread_active_pv() #9 { entry: %0 = load i8*, i8** @_ZZL18__gthread_active_pvE20__gthread_active_ptr, align 8, !tbaa !1 %cmp = icmp ne i8* %0, null %conv = zext i1 %cmp to i32 ret i32 %conv } ; Function Attrs: inlinehint nounwind uwtable define internal i32 @_ZN9__gnu_cxxL18__exchange_and_addEPVii(i32* %__mem, i32 %__val) #9 { entry: %__mem.addr = alloca i32*, align 8 %__val.addr = alloca i32, align 4 %.atomictmp = alloca i32, align 4 %atomic-temp = alloca i32, align 4 store i32* %__mem, i32** %__mem.addr, align 8, !tbaa !1 store i32 %__val, i32* %__val.addr, align 4, !tbaa !11 %0 = load i32*, i32** %__mem.addr, align 8, !tbaa !1 %1 = load i32, i32* %__val.addr, align 4, !tbaa !11 store i32 %1, i32* %.atomictmp, align 4, !tbaa !11 %2 = load i32, i32* %.atomictmp, align 4 %3 = atomicrmw volatile add i32* %0, i32 %2 acq_rel store i32 %3, i32* %atomic-temp, align 4 %4 = load i32, i32* %atomic-temp, align 4, !tbaa !11 ret i32 %4 } ; Function Attrs: inlinehint nounwind uwtable define internal i32 @_ZN9__gnu_cxxL25__exchange_and_add_singleEPii(i32* %__mem, i32 %__val) #9 { entry: %__mem.addr = alloca i32*, align 8 %__val.addr = alloca i32, align 4 %__result = alloca i32, align 4 store i32* %__mem, i32** %__mem.addr, align 8, !tbaa !1 store i32 %__val, i32* %__val.addr, align 4, !tbaa !11 %0 = bitcast i32* %__result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32*, i32** %__mem.addr, align 8, !tbaa !1 %2 = load i32, i32* %1, align 4, !tbaa !11 store i32 %2, i32* %__result, align 4, !tbaa !11 %3 = load i32, i32* %__val.addr, align 4, !tbaa !11 %4 = load i32*, i32** %__mem.addr, align 8, !tbaa !1 %5 = load i32, i32* %4, align 4, !tbaa !11 %add = add nsw i32 %5, %3 store i32 %add, i32* %4, align 4, !tbaa !11 %6 = load i32, i32* %__result, align 4, !tbaa !11 %7 = bitcast i32* %__result to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 ret i32 %6 } ; Function Attrs: nounwind declare extern_weak i32 @__pthread_key_create(i32*, void (i8*)*) #4 ; Function Attrs: nounwind uwtable define available_externally void @_ZNSaIcEC2ERKS_(%"class.std::allocator"* %this, %"class.std::allocator"* dereferenceable(1) %__a) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::allocator"*, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %this, %"class.std::allocator"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8, !tbaa !7 %this1 = load %"class.std::allocator"*, %"class.std::allocator"** %this.addr, align 8 %0 = bitcast %"class.std::allocator"* %this1 to %"class.__gnu_cxx::new_allocator"* %1 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %2 = bitcast %"class.std::allocator"* %1 to %"class.__gnu_cxx::new_allocator"* call void @_ZN9__gnu_cxx13new_allocatorIcEC2ERKS1_(%"class.__gnu_cxx::new_allocator"* %0, %"class.__gnu_cxx::new_allocator"* dereferenceable(1) %2) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIcEC2ERKS1_(%"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"* dereferenceable(1)) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8, !tbaa !1 store %"class.__gnu_cxx::new_allocator"* %0, %"class.__gnu_cxx::new_allocator"** %.addr, align 8, !tbaa !7 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIcED2Ev(%"class.__gnu_cxx::new_allocator"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret void } ; Function Attrs: nobuiltin nounwind declare void @_ZdlPv(i8*) #10 ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj0EEC2Ev(%"class.thrust::detail::functional::argument"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument"*, align 8 store %"class.thrust::detail::functional::argument"* %this, %"class.thrust::detail::functional::argument"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument"*, %"class.thrust::detail::functional::argument"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj1EEC2Ev(%"class.thrust::detail::functional::argument.1"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument.1"*, align 8 store %"class.thrust::detail::functional::argument.1"* %this, %"class.thrust::detail::functional::argument.1"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument.1"*, %"class.thrust::detail::functional::argument.1"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj2EEC2Ev(%"class.thrust::detail::functional::argument.4"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument.4"*, align 8 store %"class.thrust::detail::functional::argument.4"* %this, %"class.thrust::detail::functional::argument.4"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument.4"*, %"class.thrust::detail::functional::argument.4"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj3EEC2Ev(%"class.thrust::detail::functional::argument.7"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument.7"*, align 8 store %"class.thrust::detail::functional::argument.7"* %this, %"class.thrust::detail::functional::argument.7"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument.7"*, %"class.thrust::detail::functional::argument.7"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj4EEC2Ev(%"class.thrust::detail::functional::argument.10"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument.10"*, align 8 store %"class.thrust::detail::functional::argument.10"* %this, %"class.thrust::detail::functional::argument.10"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument.10"*, %"class.thrust::detail::functional::argument.10"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj5EEC2Ev(%"class.thrust::detail::functional::argument.13"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument.13"*, align 8 store %"class.thrust::detail::functional::argument.13"* %this, %"class.thrust::detail::functional::argument.13"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument.13"*, %"class.thrust::detail::functional::argument.13"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj6EEC2Ev(%"class.thrust::detail::functional::argument.16"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument.16"*, align 8 store %"class.thrust::detail::functional::argument.16"* %this, %"class.thrust::detail::functional::argument.16"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument.16"*, %"class.thrust::detail::functional::argument.16"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj7EEC2Ev(%"class.thrust::detail::functional::argument.19"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument.19"*, align 8 store %"class.thrust::detail::functional::argument.19"* %this, %"class.thrust::detail::functional::argument.19"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument.19"*, %"class.thrust::detail::functional::argument.19"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj8EEC2Ev(%"class.thrust::detail::functional::argument.22"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument.22"*, align 8 store %"class.thrust::detail::functional::argument.22"* %this, %"class.thrust::detail::functional::argument.22"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument.22"*, %"class.thrust::detail::functional::argument.22"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail10functional8argumentILj9EEC2Ev(%"class.thrust::detail::functional::argument.25"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::functional::argument.25"*, align 8 store %"class.thrust::detail::functional::argument.25"* %this, %"class.thrust::detail::functional::argument.25"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::functional::argument.25"*, %"class.thrust::detail::functional::argument.25"** %this.addr, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_Z15base_class_nameRKSs(%"class.std::basic_string"* noalias sret %agg.result, %"class.std::basic_string"* dereferenceable(8) %name) #8 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %name.addr = alloca %"class.std::basic_string"*, align 8 %result = alloca %"class.std::basic_string", align 8 %ref.tmp = alloca %"class.std::basic_string", align 8 %ref.tmp1 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp4 = alloca %"class.std::basic_string", align 8 %ref.tmp5 = alloca %"class.std::allocator", align 1 store %"class.std::basic_string"* %name, %"class.std::basic_string"** %name.addr, align 8, !tbaa !7 %0 = bitcast %"class.std::basic_string"* %result to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %name.addr, align 8 call void @_ZNSsC1ERKSs(%"class.std::basic_string"* %result, %"class.std::basic_string"* dereferenceable(8) %1) call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp1) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_Z11chop_prefixRSsRKSs(%"class.std::basic_string"* dereferenceable(8) %result, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp1) #5 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp5) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp4, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.19, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp5) to label %invoke.cont7 unwind label %lpad6 invoke.cont7: ; preds = %invoke.cont3 invoke void @_Z11chop_prefixRSsRKSs(%"class.std::basic_string"* dereferenceable(8) %result, %"class.std::basic_string"* dereferenceable(8) %ref.tmp4) to label %invoke.cont9 unwind label %lpad8 invoke.cont9: ; preds = %invoke.cont7 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp4) #5 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp5) #5 %call = invoke i64 @_ZNKSs13find_first_ofEPKcm(%"class.std::basic_string"* %result, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i32 0, i32 0), i64 0) to label %invoke.cont13 unwind label %lpad12 invoke.cont13: ; preds = %invoke.cont9 %call14 = call i64 @_ZNKSs4sizeEv(%"class.std::basic_string"* %result) #5 %call16 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSs7replaceEmmPKc(%"class.std::basic_string"* %result, i64 %call, i64 %call14, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.21, i32 0, i32 0)) to label %invoke.cont15 unwind label %lpad12 invoke.cont15: ; preds = %invoke.cont13 invoke void @_ZNSsC1ERKSs(%"class.std::basic_string"* %agg.result, %"class.std::basic_string"* dereferenceable(8) %call16) to label %invoke.cont17 unwind label %lpad12 invoke.cont17: ; preds = %invoke.cont15 call void @_ZNSsD2Ev(%"class.std::basic_string"* %result) #5 %2 = bitcast %"class.std::basic_string"* %result to i8* call void @llvm.lifetime.end(i64 8, i8* %2) #5 ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 br label %ehcleanup lpad2: ; preds = %invoke.cont %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad2, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp1) #5 br label %ehcleanup18 lpad6: ; preds = %invoke.cont3 %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 br label %ehcleanup11 lpad8: ; preds = %invoke.cont7 %12 = landingpad { i8*, i32 } cleanup %13 = extractvalue { i8*, i32 } %12, 0 store i8* %13, i8** %exn.slot, align 8 %14 = extractvalue { i8*, i32 } %12, 1 store i32 %14, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp4) #5 br label %ehcleanup11 ehcleanup11: ; preds = %lpad8, %lpad6 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp5) #5 br label %ehcleanup18 lpad12: ; preds = %invoke.cont15, %invoke.cont13, %invoke.cont9 %15 = landingpad { i8*, i32 } cleanup %16 = extractvalue { i8*, i32 } %15, 0 store i8* %16, i8** %exn.slot, align 8 %17 = extractvalue { i8*, i32 } %15, 1 store i32 %17, i32* %ehselector.slot, align 4 br label %ehcleanup18 ehcleanup18: ; preds = %lpad12, %ehcleanup11, %ehcleanup call void @_ZNSsD2Ev(%"class.std::basic_string"* %result) #5 %18 = bitcast %"class.std::basic_string"* %result to i8* call void @llvm.lifetime.end(i64 8, i8* %18) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup18 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val20 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val20 } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest9type_nameI17TestPairScanByKeyIiEEESsv(%"class.std::basic_string"* noalias sret %agg.result) #0 comdat { entry: %call = call i8* @_ZNKSt9type_info4nameEv(%"class.std::type_info"* bitcast ({ i8*, i8* }* @_ZTI17TestPairScanByKeyIiE to %"class.std::type_info"*)) #5 call void @_ZN8unittest8demangleEPKc(%"class.std::basic_string"* sret %agg.result, i8* %call) ret void } ; Function Attrs: nounwind uwtable define available_externally i8* @_ZNKSs5c_strEv(%"class.std::basic_string"* %this) #1 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %call = invoke i8* @_ZNKSs7_M_dataEv(%"class.std::basic_string"* %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry ret i8* %call terminate.lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 call void @__clang_call_terminate(i8* %1) #13 unreachable } declare void @_ZN8UnitTestC2EPKc(%class.UnitTest*, i8*) unnamed_addr #3 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEED0Ev(%class.VariableUnitTest* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %class.VariableUnitTest*, align 8 store %class.VariableUnitTest* %this, %class.VariableUnitTest** %this.addr, align 8, !tbaa !1 %this1 = load %class.VariableUnitTest*, %class.VariableUnitTest** %this.addr, align 8 call void bitcast (void (%class.UnitTest*)* @_ZN8UnitTestD2Ev to void (%class.VariableUnitTest*)*)(%class.VariableUnitTest* %this1) #5 %0 = bitcast %class.VariableUnitTest* %this1 to i8* call void @_ZdlPv(i8* %0) #14 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN16VariableUnitTestI17TestPairScanByKeyN8unittest9type_listIasiNS1_9null_typeES3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_EEE3runEv(%class.VariableUnitTest* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %class.VariableUnitTest*, align 8 %sizes = alloca %"class.std::vector", align 8 %i = alloca i64, align 8 %loop = alloca %"struct.unittest::for_each_type", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %class.VariableUnitTest* %this, %class.VariableUnitTest** %this.addr, align 8, !tbaa !1 %this1 = load %class.VariableUnitTest*, %class.VariableUnitTest** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %sizes to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 call void @_Z14get_test_sizesv(%"class.std::vector"* sret %sizes) %1 = bitcast i64* %i to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 store i64 0, i64* %i, align 8, !tbaa !13 br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = load i64, i64* %i, align 8, !tbaa !13 %call = call i64 @_ZNKSt6vectorImSaImEE4sizeEv(%"class.std::vector"* %sizes) #5 %cmp = icmp ne i64 %2, %call br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %3 = bitcast i64* %i to i8* call void @llvm.lifetime.end(i64 8, i8* %3) #5 br label %for.end for.body: ; preds = %for.cond %4 = bitcast %"struct.unittest::for_each_type"* %loop to i8* call void @llvm.lifetime.start(i64 1, i8* %4) #5 %5 = load i64, i64* %i, align 8, !tbaa !13 %call2 = invoke dereferenceable(8) i64* @_ZNSt6vectorImSaImEEixEm(%"class.std::vector"* %sizes, i64 %5) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %for.body %6 = load i64, i64* %call2, align 8, !tbaa !13 invoke void @_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeyaLj0EEclImEEvT_(%"struct.unittest::for_each_type"* %loop, i64 %6) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont %7 = bitcast %"struct.unittest::for_each_type"* %loop to i8* call void @llvm.lifetime.end(i64 1, i8* %7) #5 br label %for.inc for.inc: ; preds = %invoke.cont3 %8 = load i64, i64* %i, align 8, !tbaa !13 %inc = add i64 %8, 1 store i64 %inc, i64* %i, align 8, !tbaa !13 br label %for.cond lpad: ; preds = %invoke.cont, %for.body %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 %12 = bitcast %"struct.unittest::for_each_type"* %loop to i8* call void @llvm.lifetime.end(i64 1, i8* %12) #5 %13 = bitcast i64* %i to i8* call void @llvm.lifetime.end(i64 8, i8* %13) #5 call void @_ZNSt6vectorImSaImEED2Ev(%"class.std::vector"* %sizes) #5 %14 = bitcast %"class.std::vector"* %sizes to i8* call void @llvm.lifetime.end(i64 24, i8* %14) #5 br label %eh.resume for.end: ; preds = %for.cond.cleanup call void @_ZNSt6vectorImSaImEED2Ev(%"class.std::vector"* %sizes) #5 %15 = bitcast %"class.std::vector"* %sizes to i8* call void @llvm.lifetime.end(i64 24, i8* %15) #5 ret void eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val4 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val4 } declare void @_ZNSsC1ERKSs(%"class.std::basic_string"*, %"class.std::basic_string"* dereferenceable(8)) unnamed_addr #3 ; Function Attrs: inlinehint uwtable define linkonce_odr void @_Z11chop_prefixRSsRKSs(%"class.std::basic_string"* dereferenceable(8) %str, %"class.std::basic_string"* dereferenceable(8) %prefix) #8 comdat { entry: %str.addr = alloca %"class.std::basic_string"*, align 8 %prefix.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %str, %"class.std::basic_string"** %str.addr, align 8, !tbaa !7 store %"class.std::basic_string"* %prefix, %"class.std::basic_string"** %prefix.addr, align 8, !tbaa !7 %0 = load %"class.std::basic_string"*, %"class.std::basic_string"** %str.addr, align 8 %1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %str.addr, align 8 %2 = load %"class.std::basic_string"*, %"class.std::basic_string"** %prefix.addr, align 8 %call = call i64 @_ZNKSs4findERKSsm(%"class.std::basic_string"* %1, %"class.std::basic_string"* dereferenceable(8) %2, i64 0) #5 %cmp = icmp eq i64 %call, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry br label %cond.end cond.false: ; preds = %entry %3 = load %"class.std::basic_string"*, %"class.std::basic_string"** %str.addr, align 8 %call1 = call i64 @_ZNKSs4sizeEv(%"class.std::basic_string"* %3) #5 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ 0, %cond.true ], [ %call1, %cond.false ] %4 = load %"class.std::basic_string"*, %"class.std::basic_string"** %prefix.addr, align 8 %call2 = call i64 @_ZNKSs4sizeEv(%"class.std::basic_string"* %4) #5 %call3 = call dereferenceable(8) %"class.std::basic_string"* @_ZNSs7replaceEmmPKc(%"class.std::basic_string"* %0, i64 %cond, i64 %call2, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.21, i32 0, i32 0)) ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSaIcEC2Ev(%"class.std::allocator"* %this) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %this, %"class.std::allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::allocator"*, %"class.std::allocator"** %this.addr, align 8 %0 = bitcast %"class.std::allocator"* %this1 to %"class.__gnu_cxx::new_allocator"* call void @_ZN9__gnu_cxx13new_allocatorIcEC2Ev(%"class.__gnu_cxx::new_allocator"* %0) #5 ret void } declare void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"*, i8*, %"class.std::allocator"* dereferenceable(1)) unnamed_addr #3 ; Function Attrs: uwtable define available_externally dereferenceable(8) %"class.std::basic_string"* @_ZNSs7replaceEmmPKc(%"class.std::basic_string"* %this, i64 %__pos, i64 %__n1, i8* %__s) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__pos.addr = alloca i64, align 8 %__n1.addr = alloca i64, align 8 %__s.addr = alloca i8*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store i64 %__pos, i64* %__pos.addr, align 8, !tbaa !13 store i64 %__n1, i64* %__n1.addr, align 8, !tbaa !13 store i8* %__s, i8** %__s.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load i64, i64* %__pos.addr, align 8, !tbaa !13 %1 = load i64, i64* %__n1.addr, align 8, !tbaa !13 %2 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %3 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %call = call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %3) %call2 = call dereferenceable(8) %"class.std::basic_string"* @_ZNSs7replaceEmmPKcm(%"class.std::basic_string"* %this1, i64 %0, i64 %1, i8* %2, i64 %call) ret %"class.std::basic_string"* %call2 } ; Function Attrs: uwtable define available_externally i64 @_ZNKSs13find_first_ofEPKcm(%"class.std::basic_string"* %this, i8* %__s, i64 %__pos) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__s.addr = alloca i8*, align 8 %__pos.addr = alloca i64, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store i8* %__s, i8** %__s.addr, align 8, !tbaa !1 store i64 %__pos, i64* %__pos.addr, align 8, !tbaa !13 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %1 = load i64, i64* %__pos.addr, align 8, !tbaa !13 %2 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %call = call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %2) %call2 = call i64 @_ZNKSs13find_first_ofEPKcmm(%"class.std::basic_string"* %this1, i8* %0, i64 %1, i64 %call) ret i64 %call2 } ; Function Attrs: nounwind uwtable define available_externally i64 @_ZNKSs4sizeEv(%"class.std::basic_string"* %this) #1 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %call = invoke %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNKSs6_M_repEv(%"class.std::basic_string"* %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry %0 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %call to %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base"* %_M_length = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base"* %0, i32 0, i32 0 %1 = load i64, i64* %_M_length, align 8, !tbaa !15 ret i64 %1 terminate.lpad: ; preds = %entry %2 = landingpad { i8*, i32 } catch i8* null %3 = extractvalue { i8*, i32 } %2, 0 call void @__clang_call_terminate(i8* %3) #13 unreachable } ; Function Attrs: nounwind uwtable define available_externally i64 @_ZNKSs4findERKSsm(%"class.std::basic_string"* %this, %"class.std::basic_string"* dereferenceable(8) %__str, i64 %__pos) #1 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__str.addr = alloca %"class.std::basic_string"*, align 8 %__pos.addr = alloca i64, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store %"class.std::basic_string"* %__str, %"class.std::basic_string"** %__str.addr, align 8, !tbaa !7 store i64 %__pos, i64* %__pos.addr, align 8, !tbaa !13 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load %"class.std::basic_string"*, %"class.std::basic_string"** %__str.addr, align 8 %call = call i8* @_ZNKSs4dataEv(%"class.std::basic_string"* %0) #5 %1 = load i64, i64* %__pos.addr, align 8, !tbaa !13 %2 = load %"class.std::basic_string"*, %"class.std::basic_string"** %__str.addr, align 8 %call2 = call i64 @_ZNKSs4sizeEv(%"class.std::basic_string"* %2) #5 %call3 = invoke i64 @_ZNKSs4findEPKcmm(%"class.std::basic_string"* %this1, i8* %call, i64 %1, i64 %call2) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry ret i64 %call3 terminate.lpad: ; preds = %entry %3 = landingpad { i8*, i32 } catch i8* null %4 = extractvalue { i8*, i32 } %3, 0 call void @__clang_call_terminate(i8* %4) #13 unreachable } declare i64 @_ZNKSs4findEPKcmm(%"class.std::basic_string"*, i8*, i64, i64) #3 ; Function Attrs: nounwind uwtable define available_externally i8* @_ZNKSs4dataEv(%"class.std::basic_string"* %this) #1 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %call = invoke i8* @_ZNKSs7_M_dataEv(%"class.std::basic_string"* %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry ret i8* %call terminate.lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 call void @__clang_call_terminate(i8* %1) #13 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIcEC2Ev(%"class.__gnu_cxx::new_allocator"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret void } declare dereferenceable(8) %"class.std::basic_string"* @_ZNSs7replaceEmmPKcm(%"class.std::basic_string"*, i64, i64, i8*, i64) #3 ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %__s) #1 comdat align 2 { entry: %__s.addr = alloca i8*, align 8 store i8* %__s, i8** %__s.addr, align 8, !tbaa !1 %0 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %call = call i64 @strlen(i8* %0) #5 ret i64 %call } ; Function Attrs: nounwind declare i64 @strlen(i8*) #4 declare i64 @_ZNKSs13find_first_ofEPKcmm(%"class.std::basic_string"*, i8*, i64, i64) #3 ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN8unittest8demangleEPKc(%"class.std::basic_string"* noalias sret %agg.result, i8* %name) #8 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %name.addr = alloca i8*, align 8 %status = alloca i32, align 4 %realname = alloca i8*, align 8 %nrvo = alloca i1, align 1 %ref.tmp = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store i8* %name, i8** %name.addr, align 8, !tbaa !1 %0 = bitcast i32* %status to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %status, align 4, !tbaa !11 %1 = bitcast i8** %realname to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = load i8*, i8** %name.addr, align 8, !tbaa !1 %call = call i8* @__cxa_demangle(i8* %2, i8* null, i64* null, i32* %status) store i8* %call, i8** %realname, align 8, !tbaa !1 store i1 false, i1* %nrvo, align 1 %3 = load i8*, i8** %realname, align 8, !tbaa !1 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %agg.result, i8* %3, %"class.std::allocator"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 %4 = load i8*, i8** %realname, align 8, !tbaa !1 call void @free(i8* %4) #5 store i1 true, i1* %nrvo, align 1 %nrvo.val = load i1, i1* %nrvo, align 1 br i1 %nrvo.val, label %nrvo.skipdtor, label %nrvo.unused lpad: ; preds = %entry %5 = landingpad { i8*, i32 } cleanup %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 %8 = bitcast i8** %realname to i8* call void @llvm.lifetime.end(i64 8, i8* %8) #5 %9 = bitcast i32* %status to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 br label %eh.resume nrvo.unused: ; preds = %invoke.cont call void @_ZNSsD2Ev(%"class.std::basic_string"* %agg.result) #5 br label %nrvo.skipdtor nrvo.skipdtor: ; preds = %nrvo.unused, %invoke.cont %10 = bitcast i8** %realname to i8* call void @llvm.lifetime.end(i64 8, i8* %10) #5 %11 = bitcast i32* %status to i8* call void @llvm.lifetime.end(i64 4, i8* %11) #5 ret void eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val1 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val1 } ; Function Attrs: nounwind uwtable define linkonce_odr i8* @_ZNKSt9type_info4nameEv(%"class.std::type_info"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.std::type_info"*, align 8 store %"class.std::type_info"* %this, %"class.std::type_info"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::type_info"*, %"class.std::type_info"** %this.addr, align 8 %__name = getelementptr inbounds %"class.std::type_info", %"class.std::type_info"* %this1, i32 0, i32 1 %0 = load i8*, i8** %__name, align 8, !tbaa !17 %arrayidx = getelementptr inbounds i8, i8* %0, i64 0 %1 = load i8, i8* %arrayidx, align 1, !tbaa !7 %conv = sext i8 %1 to i32 %cmp = icmp eq i32 %conv, 42 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %__name2 = getelementptr inbounds %"class.std::type_info", %"class.std::type_info"* %this1, i32 0, i32 1 %2 = load i8*, i8** %__name2, align 8, !tbaa !17 %add.ptr = getelementptr inbounds i8, i8* %2, i64 1 br label %cond.end cond.false: ; preds = %entry %__name3 = getelementptr inbounds %"class.std::type_info", %"class.std::type_info"* %this1, i32 0, i32 1 %3 = load i8*, i8** %__name3, align 8, !tbaa !17 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i8* [ %add.ptr, %cond.true ], [ %3, %cond.false ] ret i8* %cond } declare i8* @__cxa_demangle(i8*, i8*, i64*, i32*) #3 ; Function Attrs: nounwind declare void @free(i8*) #4 declare void @_Z14get_test_sizesv(%"class.std::vector"* sret) #3 ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNKSt6vectorImSaImEE4sizeEv(%"class.std::vector"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl", %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl"* %_M_impl, i32 0, i32 1 %1 = load i64*, i64** %_M_finish, align 8, !tbaa !19 %2 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %2, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl", %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl"* %_M_impl2, i32 0, i32 0 %3 = load i64*, i64** %_M_start, align 8, !tbaa !22 %sub.ptr.lhs.cast = ptrtoint i64* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i64* %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 ret i64 %sub.ptr.div } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeyaLj0EEclImEEvT_(%"struct.unittest::for_each_type"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.unittest::for_each_type"*, align 8 %n.addr = alloca i64, align 8 %f = alloca %struct.TestPairScanByKey, align 1 %loop = alloca %"struct.unittest::for_each_type.41", align 1 store %"struct.unittest::for_each_type"* %this, %"struct.unittest::for_each_type"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"struct.unittest::for_each_type"*, %"struct.unittest::for_each_type"** %this.addr, align 8 %0 = bitcast %struct.TestPairScanByKey* %f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN17TestPairScanByKeyIaEclEm(%struct.TestPairScanByKey* %f, i64 %1) %2 = bitcast %"struct.unittest::for_each_type.41"* %loop to i8* call void @llvm.lifetime.start(i64 1, i8* %2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeysLj1EEclImEEvT_(%"struct.unittest::for_each_type.41"* %loop, i64 %3) %4 = bitcast %"struct.unittest::for_each_type.41"* %loop to i8* call void @llvm.lifetime.end(i64 1, i8* %4) #5 %5 = bitcast %struct.TestPairScanByKey* %f to i8* call void @llvm.lifetime.end(i64 1, i8* %5) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i64* @_ZNSt6vectorImSaImEEixEm(%"class.std::vector"* %this, i64 %__n) #1 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8, !tbaa !1 store i64 %__n, i64* %__n.addr, align 8, !tbaa !13 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl", %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl"* %_M_impl, i32 0, i32 0 %1 = load i64*, i64** %_M_start, align 8, !tbaa !22 %2 = load i64, i64* %__n.addr, align 8, !tbaa !13 %add.ptr = getelementptr inbounds i64, i64* %1, i64 %2 ret i64* %add.ptr } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSt6vectorImSaImEED2Ev(%"class.std::vector"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::vector"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl", %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl"* %_M_impl, i32 0, i32 0 %1 = load i64*, i64** %_M_start, align 8, !tbaa !22 %2 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %2, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl", %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long> >::_Vector_impl"* %_M_impl2, i32 0, i32 1 %3 = load i64*, i64** %_M_finish, align 8, !tbaa !19 %4 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call = call dereferenceable(1) %"class.std::allocator.38"* @_ZNSt12_Vector_baseImSaImEE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %4) #5 invoke void @_ZSt8_DestroyIPmmEvT_S1_RSaIT0_E(i64* %1, i64* %3, %"class.std::allocator.38"* dereferenceable(1) %call) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %5 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* call void @_ZNSt12_Vector_baseImSaImEED2Ev(%"struct.std::_Vector_base"* %5) #5 ret void lpad: ; preds = %entry %6 = landingpad { i8*, i32 } catch i8* null %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 %9 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* call void @_ZNSt12_Vector_baseImSaImEED2Ev(%"struct.std::_Vector_base"* %9) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: uwtable define linkonce_odr void @_ZN17TestPairScanByKeyIaEclEm(%struct.TestPairScanByKey* %this, i64 %n) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %struct.TestPairScanByKey*, align 8 %n.addr = alloca i64, align 8 %h_p1 = alloca %"class.thrust::host_vector", align 8 %h_p2 = alloca %"class.thrust::host_vector", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %h_pairs = alloca %"class.thrust::host_vector.45", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp12 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp17 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp22 = alloca %struct.make_pair_functor, align 1 %coerce = alloca %"class.thrust::detail::normal_iterator.51", align 8 %d_p1 = alloca %"class.thrust::device_vector", align 8 %d_p2 = alloca %"class.thrust::device_vector", align 8 %d_pairs = alloca %"class.thrust::device_vector.61", align 8 %h_keys = alloca %"class.thrust::host_vector", align 8 %ref.tmp = alloca %"class.thrust::host_vector.73", align 8 %d_keys = alloca %"class.thrust::device_vector", align 8 %init = alloca %"struct.thrust::pair", align 1 %ref.tmp46 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp51 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp57 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp62 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp67 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp72 = alloca %"struct.thrust::pair", align 1 %agg.tmp73 = alloca %"struct.thrust::equal_to", align 1 %agg.tmp74 = alloca %struct.add_pairs, align 1 %coerce85 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp88 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp96 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp104 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp112 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp120 = alloca %"struct.thrust::pair", align 1 %agg.tmp121 = alloca %"struct.thrust::equal_to", align 1 %agg.tmp122 = alloca %struct.add_pairs, align 1 %coerce145 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %ref.tmp151 = alloca %"class.std::basic_string", align 8 %ref.tmp152 = alloca %"class.std::allocator", align 1 store %struct.TestPairScanByKey* %this, %struct.TestPairScanByKey** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %struct.TestPairScanByKey*, %struct.TestPairScanByKey** %this.addr, align 8 %0 = bitcast %"class.thrust::host_vector"* %h_p1 to i8* call void @llvm.lifetime.start(i64 32, i8* %0) #5 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN8unittest15random_integersIaEEN6thrust11host_vectorIT_SaIS3_EEEm(%"class.thrust::host_vector"* sret %h_p1, i64 %1) %2 = bitcast %"class.thrust::host_vector"* %h_p2 to i8* call void @llvm.lifetime.start(i64 32, i8* %2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN8unittest15random_integersIaEEN6thrust11host_vectorIT_SaIS3_EEEm(%"class.thrust::host_vector"* sret %h_p2, i64 %3) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %4 = bitcast %"class.thrust::host_vector.45"* %h_pairs to i8* call void @llvm.lifetime.start(i64 32, i8* %4) #5 %5 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust11host_vectorINS_4pairIaaEESaIS2_EEC2Em(%"class.thrust::host_vector.45"* %h_pairs, i64 %5) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont %6 = bitcast %"class.thrust::host_vector"* %h_p1 to %"class.thrust::detail::vector_base"* %call = invoke i8* @_ZN6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %6) to label %invoke.cont5 unwind label %lpad4 invoke.cont5: ; preds = %invoke.cont3 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive6, align 8 %7 = bitcast %"class.thrust::host_vector"* %h_p1 to %"class.thrust::detail::vector_base"* %call9 = invoke i8* @_ZN6thrust6detail11vector_baseIaSaIaEE3endEv(%"class.thrust::detail::vector_base"* %7) to label %invoke.cont8 unwind label %lpad4 invoke.cont8: ; preds = %invoke.cont5 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp7, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive10, i32 0, i32 0 store i8* %call9, i8** %coerce.dive11, align 8 %8 = bitcast %"class.thrust::host_vector"* %h_p2 to %"class.thrust::detail::vector_base"* %call14 = invoke i8* @_ZN6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %8) to label %invoke.cont13 unwind label %lpad4 invoke.cont13: ; preds = %invoke.cont8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp12, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive15, i32 0, i32 0 store i8* %call14, i8** %coerce.dive16, align 8 %9 = bitcast %"class.thrust::host_vector.45"* %h_pairs to %"class.thrust::detail::vector_base.46"* %call19 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %9) to label %invoke.cont18 unwind label %lpad4 invoke.cont18: ; preds = %invoke.cont13 %coerce.dive20 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp17, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive20, i32 0, i32 0 store %"struct.thrust::pair"* %call19, %"struct.thrust::pair"** %coerce.dive21, align 8 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive23, i32 0, i32 0 %10 = load i8*, i8** %coerce.dive24, align 8 %coerce.dive25 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp7, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive25, i32 0, i32 0 %11 = load i8*, i8** %coerce.dive26, align 8 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp12, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive27, i32 0, i32 0 %12 = load i8*, i8** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp17, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive29, i32 0, i32 0 %13 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive30, align 8 %call32 = invoke %"struct.thrust::pair"* @_ZN6thrust9transformINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEE17make_pair_functorEET1_T_SB_T0_SA_T2_(i8* %10, i8* %11, i8* %12, %"struct.thrust::pair"* %13) to label %invoke.cont31 unwind label %lpad4 invoke.cont31: ; preds = %invoke.cont18 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %coerce, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive33, i32 0, i32 0 store %"struct.thrust::pair"* %call32, %"struct.thrust::pair"** %coerce.dive34, align 8 %14 = bitcast %"class.thrust::device_vector"* %d_p1 to i8* call void @llvm.lifetime.start(i64 32, i8* %14) #5 invoke void @_ZN6thrust13device_vectorIaNS_23device_malloc_allocatorIaEEEC2IaSaIaEEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector"* %d_p1, %"class.thrust::host_vector"* dereferenceable(32) %h_p1) to label %invoke.cont35 unwind label %lpad4 invoke.cont35: ; preds = %invoke.cont31 %15 = bitcast %"class.thrust::device_vector"* %d_p2 to i8* call void @llvm.lifetime.start(i64 32, i8* %15) #5 invoke void @_ZN6thrust13device_vectorIaNS_23device_malloc_allocatorIaEEEC2IaSaIaEEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector"* %d_p2, %"class.thrust::host_vector"* dereferenceable(32) %h_p2) to label %invoke.cont37 unwind label %lpad36 invoke.cont37: ; preds = %invoke.cont35 %16 = bitcast %"class.thrust::device_vector.61"* %d_pairs to i8* call void @llvm.lifetime.start(i64 32, i8* %16) #5 invoke void @_ZN6thrust13device_vectorINS_4pairIaaEENS_23device_malloc_allocatorIS2_EEEC2IS2_SaIS2_EEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector.61"* %d_pairs, %"class.thrust::host_vector.45"* dereferenceable(32) %h_pairs) to label %invoke.cont39 unwind label %lpad38 invoke.cont39: ; preds = %invoke.cont37 %17 = bitcast %"class.thrust::host_vector"* %h_keys to i8* call void @llvm.lifetime.start(i64 32, i8* %17) #5 %18 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN8unittest15random_integersIbEEN6thrust11host_vectorIT_SaIS3_EEEm(%"class.thrust::host_vector.73"* sret %ref.tmp, i64 %18) to label %invoke.cont41 unwind label %lpad40 invoke.cont41: ; preds = %invoke.cont39 invoke void @_ZN6thrust11host_vectorIaSaIaEEC2IbSaIbEEERKNS0_IT_T0_EE(%"class.thrust::host_vector"* %h_keys, %"class.thrust::host_vector.73"* dereferenceable(32) %ref.tmp) to label %invoke.cont43 unwind label %lpad42 invoke.cont43: ; preds = %invoke.cont41 call void bitcast (void (%"class.thrust::detail::vector_base.74"*)* @_ZN6thrust6detail11vector_baseIbSaIbEED2Ev to void (%"class.thrust::host_vector.73"*)*)(%"class.thrust::host_vector.73"* %ref.tmp) #5 %19 = bitcast %"class.thrust::device_vector"* %d_keys to i8* call void @llvm.lifetime.start(i64 32, i8* %19) #5 invoke void @_ZN6thrust13device_vectorIaNS_23device_malloc_allocatorIaEEEC2IaSaIaEEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector"* %d_keys, %"class.thrust::host_vector"* dereferenceable(32) %h_keys) to label %invoke.cont45 unwind label %lpad44 invoke.cont45: ; preds = %invoke.cont43 %20 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.lifetime.start(i64 2, i8* %20) #5 %call49 = invoke i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 13, i32 13) to label %invoke.cont48 unwind label %lpad47 invoke.cont48: ; preds = %invoke.cont45 %21 = bitcast %"struct.thrust::pair.82"* %ref.tmp46 to i64* store i64 %call49, i64* %21, align 4 invoke void @_ZN6thrust4pairIaaEC2IiiEERKNS0_IT_T0_EE(%"struct.thrust::pair"* %init, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp46) to label %invoke.cont50 unwind label %lpad47 invoke.cont50: ; preds = %invoke.cont48 %22 = bitcast %"class.thrust::host_vector"* %h_keys to %"class.thrust::detail::vector_base"* %call54 = invoke i8* @_ZN6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %22) to label %invoke.cont53 unwind label %lpad52 invoke.cont53: ; preds = %invoke.cont50 %coerce.dive55 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp51, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive55, i32 0, i32 0 store i8* %call54, i8** %coerce.dive56, align 8 %23 = bitcast %"class.thrust::host_vector"* %h_keys to %"class.thrust::detail::vector_base"* %call59 = invoke i8* @_ZN6thrust6detail11vector_baseIaSaIaEE3endEv(%"class.thrust::detail::vector_base"* %23) to label %invoke.cont58 unwind label %lpad52 invoke.cont58: ; preds = %invoke.cont53 %coerce.dive60 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp57, i32 0, i32 0 %coerce.dive61 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive60, i32 0, i32 0 store i8* %call59, i8** %coerce.dive61, align 8 %24 = bitcast %"class.thrust::host_vector.45"* %h_pairs to %"class.thrust::detail::vector_base.46"* %call64 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %24) to label %invoke.cont63 unwind label %lpad52 invoke.cont63: ; preds = %invoke.cont58 %coerce.dive65 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp62, i32 0, i32 0 %coerce.dive66 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive65, i32 0, i32 0 store %"struct.thrust::pair"* %call64, %"struct.thrust::pair"** %coerce.dive66, align 8 %25 = bitcast %"class.thrust::host_vector.45"* %h_pairs to %"class.thrust::detail::vector_base.46"* %call69 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %25) to label %invoke.cont68 unwind label %lpad52 invoke.cont68: ; preds = %invoke.cont63 %coerce.dive70 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp67, i32 0, i32 0 %coerce.dive71 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive70, i32 0, i32 0 store %"struct.thrust::pair"* %call69, %"struct.thrust::pair"** %coerce.dive71, align 8 %26 = bitcast %"struct.thrust::pair"* %agg.tmp72 to i8* %27 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %26, i8* %27, i64 2, i32 1, i1 false), !tbaa.struct !23 %coerce.dive75 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp51, i32 0, i32 0 %coerce.dive76 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive75, i32 0, i32 0 %28 = load i8*, i8** %coerce.dive76, align 8 %coerce.dive77 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp57, i32 0, i32 0 %coerce.dive78 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive77, i32 0, i32 0 %29 = load i8*, i8** %coerce.dive78, align 8 %coerce.dive79 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp62, i32 0, i32 0 %coerce.dive80 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive79, i32 0, i32 0 %30 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive80, align 8 %coerce.dive81 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp67, i32 0, i32 0 %coerce.dive82 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive81, i32 0, i32 0 %31 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive82, align 8 %32 = bitcast %"struct.thrust::pair"* %agg.tmp72 to i16* %33 = load i16, i16* %32, align 1 %call84 = invoke %"struct.thrust::pair"* @_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorIPaEENS2_IPNS_4pairIaaEEEES8_S6_NS_8equal_toIaEE9add_pairsEET1_T_SD_T0_SC_T2_T3_T4_(i8* %28, i8* %29, %"struct.thrust::pair"* %30, %"struct.thrust::pair"* %31, i16 %33) to label %invoke.cont83 unwind label %lpad52 invoke.cont83: ; preds = %invoke.cont68 %coerce.dive86 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %coerce85, i32 0, i32 0 %coerce.dive87 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive86, i32 0, i32 0 store %"struct.thrust::pair"* %call84, %"struct.thrust::pair"** %coerce.dive87, align 8 %34 = bitcast %"class.thrust::device_vector"* %d_keys to %"class.thrust::detail::vector_base.54"* %call90 = invoke i8* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE5beginEv(%"class.thrust::detail::vector_base.54"* %34) to label %invoke.cont89 unwind label %lpad52 invoke.cont89: ; preds = %invoke.cont83 %coerce.dive91 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp88, i32 0, i32 0 %coerce.dive92 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive91, i32 0, i32 0 %coerce.dive93 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive92, i32 0, i32 0 %coerce.dive94 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive93, i32 0, i32 0 %coerce.dive95 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive94, i32 0, i32 0 store i8* %call90, i8** %coerce.dive95, align 8 %35 = bitcast %"class.thrust::device_vector"* %d_keys to %"class.thrust::detail::vector_base.54"* %call98 = invoke i8* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE3endEv(%"class.thrust::detail::vector_base.54"* %35) to label %invoke.cont97 unwind label %lpad52 invoke.cont97: ; preds = %invoke.cont89 %coerce.dive99 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp96, i32 0, i32 0 %coerce.dive100 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive99, i32 0, i32 0 %coerce.dive101 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive100, i32 0, i32 0 %coerce.dive102 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive101, i32 0, i32 0 %coerce.dive103 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive102, i32 0, i32 0 store i8* %call98, i8** %coerce.dive103, align 8 %36 = bitcast %"class.thrust::device_vector.61"* %d_pairs to %"class.thrust::detail::vector_base.62"* %call106 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.62"* %36) to label %invoke.cont105 unwind label %lpad52 invoke.cont105: ; preds = %invoke.cont97 %coerce.dive107 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp104, i32 0, i32 0 %coerce.dive108 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive107, i32 0, i32 0 %coerce.dive109 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive108, i32 0, i32 0 %coerce.dive110 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive109, i32 0, i32 0 %coerce.dive111 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive110, i32 0, i32 0 store %"struct.thrust::pair"* %call106, %"struct.thrust::pair"** %coerce.dive111, align 8 %37 = bitcast %"class.thrust::device_vector.61"* %d_pairs to %"class.thrust::detail::vector_base.62"* %call114 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.62"* %37) to label %invoke.cont113 unwind label %lpad52 invoke.cont113: ; preds = %invoke.cont105 %coerce.dive115 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp112, i32 0, i32 0 %coerce.dive116 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive115, i32 0, i32 0 %coerce.dive117 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive116, i32 0, i32 0 %coerce.dive118 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive117, i32 0, i32 0 %coerce.dive119 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive118, i32 0, i32 0 store %"struct.thrust::pair"* %call114, %"struct.thrust::pair"** %coerce.dive119, align 8 %38 = bitcast %"struct.thrust::pair"* %agg.tmp120 to i8* %39 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %38, i8* %39, i64 2, i32 1, i1 false), !tbaa.struct !23 %coerce.dive123 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp88, i32 0, i32 0 %coerce.dive124 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive123, i32 0, i32 0 %coerce.dive125 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive124, i32 0, i32 0 %coerce.dive126 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive125, i32 0, i32 0 %coerce.dive127 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive126, i32 0, i32 0 %40 = load i8*, i8** %coerce.dive127, align 8 %coerce.dive128 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp96, i32 0, i32 0 %coerce.dive129 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive128, i32 0, i32 0 %coerce.dive130 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive129, i32 0, i32 0 %coerce.dive131 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive130, i32 0, i32 0 %coerce.dive132 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive131, i32 0, i32 0 %41 = load i8*, i8** %coerce.dive132, align 8 %coerce.dive133 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp104, i32 0, i32 0 %coerce.dive134 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive133, i32 0, i32 0 %coerce.dive135 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive134, i32 0, i32 0 %coerce.dive136 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive135, i32 0, i32 0 %coerce.dive137 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive136, i32 0, i32 0 %42 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive137, align 8 %coerce.dive138 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp112, i32 0, i32 0 %coerce.dive139 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive138, i32 0, i32 0 %coerce.dive140 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive139, i32 0, i32 0 %coerce.dive141 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive140, i32 0, i32 0 %coerce.dive142 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive141, i32 0, i32 0 %43 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive142, align 8 %44 = bitcast %"struct.thrust::pair"* %agg.tmp120 to i16* %45 = load i16, i16* %44, align 1 %call144 = invoke %"struct.thrust::pair"* @_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorINS_10device_ptrIaEEEENS2_INS3_INS_4pairIaaEEEEEES9_S7_NS_8equal_toIaEE9add_pairsEET1_T_SE_T0_SD_T2_T3_T4_(i8* %40, i8* %41, %"struct.thrust::pair"* %42, %"struct.thrust::pair"* %43, i16 %45) to label %invoke.cont143 unwind label %lpad52 invoke.cont143: ; preds = %invoke.cont113 %coerce.dive146 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %coerce145, i32 0, i32 0 %coerce.dive147 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive146, i32 0, i32 0 %coerce.dive148 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive147, i32 0, i32 0 %coerce.dive149 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive148, i32 0, i32 0 %coerce.dive150 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive149, i32 0, i32 0 store %"struct.thrust::pair"* %call144, %"struct.thrust::pair"** %coerce.dive150, align 8 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp152) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp151, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.22, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp152) to label %invoke.cont154 unwind label %lpad153 invoke.cont154: ; preds = %invoke.cont143 invoke void @_ZN8unittest18assert_equal_quietIN6thrust11host_vectorINS1_4pairIaaEESaIS4_EEENS1_13device_vectorIS4_NS1_23device_malloc_allocatorIS4_EEEEEEvRKT_RKT0_RKSsi(%"class.thrust::host_vector.45"* dereferenceable(32) %h_pairs, %"class.thrust::device_vector.61"* dereferenceable(32) %d_pairs, %"class.std::basic_string"* dereferenceable(8) %ref.tmp151, i32 57) to label %invoke.cont156 unwind label %lpad155 invoke.cont156: ; preds = %invoke.cont154 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp151) #5 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp152) #5 %46 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.lifetime.end(i64 2, i8* %46) #5 call void bitcast (void (%"class.thrust::detail::vector_base.54"*)* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEED2Ev to void (%"class.thrust::device_vector"*)*)(%"class.thrust::device_vector"* %d_keys) #5 %47 = bitcast %"class.thrust::device_vector"* %d_keys to i8* call void @llvm.lifetime.end(i64 32, i8* %47) #5 call void bitcast (void (%"class.thrust::detail::vector_base"*)* @_ZN6thrust6detail11vector_baseIaSaIaEED2Ev to void (%"class.thrust::host_vector"*)*)(%"class.thrust::host_vector"* %h_keys) #5 %48 = bitcast %"class.thrust::host_vector"* %h_keys to i8* call void @llvm.lifetime.end(i64 32, i8* %48) #5 call void bitcast (void (%"class.thrust::detail::vector_base.62"*)* @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEED2Ev to void (%"class.thrust::device_vector.61"*)*)(%"class.thrust::device_vector.61"* %d_pairs) #5 %49 = bitcast %"class.thrust::device_vector.61"* %d_pairs to i8* call void @llvm.lifetime.end(i64 32, i8* %49) #5 call void bitcast (void (%"class.thrust::detail::vector_base.54"*)* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEED2Ev to void (%"class.thrust::device_vector"*)*)(%"class.thrust::device_vector"* %d_p2) #5 %50 = bitcast %"class.thrust::device_vector"* %d_p2 to i8* call void @llvm.lifetime.end(i64 32, i8* %50) #5 call void bitcast (void (%"class.thrust::detail::vector_base.54"*)* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEED2Ev to void (%"class.thrust::device_vector"*)*)(%"class.thrust::device_vector"* %d_p1) #5 %51 = bitcast %"class.thrust::device_vector"* %d_p1 to i8* call void @llvm.lifetime.end(i64 32, i8* %51) #5 call void bitcast (void (%"class.thrust::detail::vector_base.46"*)* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EED2Ev to void (%"class.thrust::host_vector.45"*)*)(%"class.thrust::host_vector.45"* %h_pairs) #5 %52 = bitcast %"class.thrust::host_vector.45"* %h_pairs to i8* call void @llvm.lifetime.end(i64 32, i8* %52) #5 call void bitcast (void (%"class.thrust::detail::vector_base"*)* @_ZN6thrust6detail11vector_baseIaSaIaEED2Ev to void (%"class.thrust::host_vector"*)*)(%"class.thrust::host_vector"* %h_p2) #5 %53 = bitcast %"class.thrust::host_vector"* %h_p2 to i8* call void @llvm.lifetime.end(i64 32, i8* %53) #5 call void bitcast (void (%"class.thrust::detail::vector_base"*)* @_ZN6thrust6detail11vector_baseIaSaIaEED2Ev to void (%"class.thrust::host_vector"*)*)(%"class.thrust::host_vector"* %h_p1) #5 %54 = bitcast %"class.thrust::host_vector"* %h_p1 to i8* call void @llvm.lifetime.end(i64 32, i8* %54) #5 ret void lpad: ; preds = %entry %55 = landingpad { i8*, i32 } cleanup %56 = extractvalue { i8*, i32 } %55, 0 store i8* %56, i8** %exn.slot, align 8 %57 = extractvalue { i8*, i32 } %55, 1 store i32 %57, i32* %ehselector.slot, align 4 br label %ehcleanup172 lpad2: ; preds = %invoke.cont %58 = landingpad { i8*, i32 } cleanup %59 = extractvalue { i8*, i32 } %58, 0 store i8* %59, i8** %exn.slot, align 8 %60 = extractvalue { i8*, i32 } %58, 1 store i32 %60, i32* %ehselector.slot, align 4 br label %ehcleanup170 lpad4: ; preds = %invoke.cont31, %invoke.cont18, %invoke.cont13, %invoke.cont8, %invoke.cont5, %invoke.cont3 %61 = landingpad { i8*, i32 } cleanup %62 = extractvalue { i8*, i32 } %61, 0 store i8* %62, i8** %exn.slot, align 8 %63 = extractvalue { i8*, i32 } %61, 1 store i32 %63, i32* %ehselector.slot, align 4 br label %ehcleanup168 lpad36: ; preds = %invoke.cont35 %64 = landingpad { i8*, i32 } cleanup %65 = extractvalue { i8*, i32 } %64, 0 store i8* %65, i8** %exn.slot, align 8 %66 = extractvalue { i8*, i32 } %64, 1 store i32 %66, i32* %ehselector.slot, align 4 br label %ehcleanup166 lpad38: ; preds = %invoke.cont37 %67 = landingpad { i8*, i32 } cleanup %68 = extractvalue { i8*, i32 } %67, 0 store i8* %68, i8** %exn.slot, align 8 %69 = extractvalue { i8*, i32 } %67, 1 store i32 %69, i32* %ehselector.slot, align 4 br label %ehcleanup164 lpad40: ; preds = %invoke.cont39 %70 = landingpad { i8*, i32 } cleanup %71 = extractvalue { i8*, i32 } %70, 0 store i8* %71, i8** %exn.slot, align 8 %72 = extractvalue { i8*, i32 } %70, 1 store i32 %72, i32* %ehselector.slot, align 4 br label %ehcleanup162 lpad42: ; preds = %invoke.cont41 %73 = landingpad { i8*, i32 } cleanup %74 = extractvalue { i8*, i32 } %73, 0 store i8* %74, i8** %exn.slot, align 8 %75 = extractvalue { i8*, i32 } %73, 1 store i32 %75, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::vector_base.74"*)* @_ZN6thrust6detail11vector_baseIbSaIbEED2Ev to void (%"class.thrust::host_vector.73"*)*)(%"class.thrust::host_vector.73"* %ref.tmp) #5 br label %ehcleanup162 lpad44: ; preds = %invoke.cont43 %76 = landingpad { i8*, i32 } cleanup %77 = extractvalue { i8*, i32 } %76, 0 store i8* %77, i8** %exn.slot, align 8 %78 = extractvalue { i8*, i32 } %76, 1 store i32 %78, i32* %ehselector.slot, align 4 br label %ehcleanup160 lpad47: ; preds = %invoke.cont48, %invoke.cont45 %79 = landingpad { i8*, i32 } cleanup %80 = extractvalue { i8*, i32 } %79, 0 store i8* %80, i8** %exn.slot, align 8 %81 = extractvalue { i8*, i32 } %79, 1 store i32 %81, i32* %ehselector.slot, align 4 br label %ehcleanup158 lpad52: ; preds = %invoke.cont113, %invoke.cont105, %invoke.cont97, %invoke.cont89, %invoke.cont83, %invoke.cont68, %invoke.cont63, %invoke.cont58, %invoke.cont53, %invoke.cont50 %82 = landingpad { i8*, i32 } cleanup %83 = extractvalue { i8*, i32 } %82, 0 store i8* %83, i8** %exn.slot, align 8 %84 = extractvalue { i8*, i32 } %82, 1 store i32 %84, i32* %ehselector.slot, align 4 br label %ehcleanup157 lpad153: ; preds = %invoke.cont143 %85 = landingpad { i8*, i32 } cleanup %86 = extractvalue { i8*, i32 } %85, 0 store i8* %86, i8** %exn.slot, align 8 %87 = extractvalue { i8*, i32 } %85, 1 store i32 %87, i32* %ehselector.slot, align 4 br label %ehcleanup lpad155: ; preds = %invoke.cont154 %88 = landingpad { i8*, i32 } cleanup %89 = extractvalue { i8*, i32 } %88, 0 store i8* %89, i8** %exn.slot, align 8 %90 = extractvalue { i8*, i32 } %88, 1 store i32 %90, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp151) #5 br label %ehcleanup ehcleanup: ; preds = %lpad155, %lpad153 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp152) #5 br label %ehcleanup157 ehcleanup157: ; preds = %ehcleanup, %lpad52 %91 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.lifetime.end(i64 2, i8* %91) #5 br label %ehcleanup158 ehcleanup158: ; preds = %ehcleanup157, %lpad47 call void bitcast (void (%"class.thrust::detail::vector_base.54"*)* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEED2Ev to void (%"class.thrust::device_vector"*)*)(%"class.thrust::device_vector"* %d_keys) #5 %92 = bitcast %"class.thrust::device_vector"* %d_keys to i8* call void @llvm.lifetime.end(i64 32, i8* %92) #5 br label %ehcleanup160 ehcleanup160: ; preds = %ehcleanup158, %lpad44 call void bitcast (void (%"class.thrust::detail::vector_base"*)* @_ZN6thrust6detail11vector_baseIaSaIaEED2Ev to void (%"class.thrust::host_vector"*)*)(%"class.thrust::host_vector"* %h_keys) #5 %93 = bitcast %"class.thrust::host_vector"* %h_keys to i8* call void @llvm.lifetime.end(i64 32, i8* %93) #5 br label %ehcleanup162 ehcleanup162: ; preds = %ehcleanup160, %lpad42, %lpad40 call void bitcast (void (%"class.thrust::detail::vector_base.62"*)* @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEED2Ev to void (%"class.thrust::device_vector.61"*)*)(%"class.thrust::device_vector.61"* %d_pairs) #5 %94 = bitcast %"class.thrust::device_vector.61"* %d_pairs to i8* call void @llvm.lifetime.end(i64 32, i8* %94) #5 br label %ehcleanup164 ehcleanup164: ; preds = %ehcleanup162, %lpad38 call void bitcast (void (%"class.thrust::detail::vector_base.54"*)* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEED2Ev to void (%"class.thrust::device_vector"*)*)(%"class.thrust::device_vector"* %d_p2) #5 %95 = bitcast %"class.thrust::device_vector"* %d_p2 to i8* call void @llvm.lifetime.end(i64 32, i8* %95) #5 br label %ehcleanup166 ehcleanup166: ; preds = %ehcleanup164, %lpad36 call void bitcast (void (%"class.thrust::detail::vector_base.54"*)* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEED2Ev to void (%"class.thrust::device_vector"*)*)(%"class.thrust::device_vector"* %d_p1) #5 %96 = bitcast %"class.thrust::device_vector"* %d_p1 to i8* call void @llvm.lifetime.end(i64 32, i8* %96) #5 br label %ehcleanup168 ehcleanup168: ; preds = %ehcleanup166, %lpad4 call void bitcast (void (%"class.thrust::detail::vector_base.46"*)* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EED2Ev to void (%"class.thrust::host_vector.45"*)*)(%"class.thrust::host_vector.45"* %h_pairs) #5 %97 = bitcast %"class.thrust::host_vector.45"* %h_pairs to i8* call void @llvm.lifetime.end(i64 32, i8* %97) #5 br label %ehcleanup170 ehcleanup170: ; preds = %ehcleanup168, %lpad2 call void bitcast (void (%"class.thrust::detail::vector_base"*)* @_ZN6thrust6detail11vector_baseIaSaIaEED2Ev to void (%"class.thrust::host_vector"*)*)(%"class.thrust::host_vector"* %h_p2) #5 %98 = bitcast %"class.thrust::host_vector"* %h_p2 to i8* call void @llvm.lifetime.end(i64 32, i8* %98) #5 br label %ehcleanup172 ehcleanup172: ; preds = %ehcleanup170, %lpad call void bitcast (void (%"class.thrust::detail::vector_base"*)* @_ZN6thrust6detail11vector_baseIaSaIaEED2Ev to void (%"class.thrust::host_vector"*)*)(%"class.thrust::host_vector"* %h_p1) #5 %99 = bitcast %"class.thrust::host_vector"* %h_p1 to i8* call void @llvm.lifetime.end(i64 32, i8* %99) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup172 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val174 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val174 } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeysLj1EEclImEEvT_(%"struct.unittest::for_each_type.41"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.unittest::for_each_type.41"*, align 8 %n.addr = alloca i64, align 8 %f = alloca %struct.TestPairScanByKey.467, align 1 %loop = alloca %"struct.unittest::for_each_type.468", align 1 store %"struct.unittest::for_each_type.41"* %this, %"struct.unittest::for_each_type.41"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"struct.unittest::for_each_type.41"*, %"struct.unittest::for_each_type.41"** %this.addr, align 8 %0 = bitcast %struct.TestPairScanByKey.467* %f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN17TestPairScanByKeyIsEclEm(%struct.TestPairScanByKey.467* %f, i64 %1) %2 = bitcast %"struct.unittest::for_each_type.468"* %loop to i8* call void @llvm.lifetime.start(i64 1, i8* %2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeyiLj2EEclImEEvT_(%"struct.unittest::for_each_type.468"* %loop, i64 %3) %4 = bitcast %"struct.unittest::for_each_type.468"* %loop to i8* call void @llvm.lifetime.end(i64 1, i8* %4) #5 %5 = bitcast %struct.TestPairScanByKey.467* %f to i8* call void @llvm.lifetime.end(i64 1, i8* %5) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest15random_integersIaEEN6thrust11host_vectorIT_SaIS3_EEEm(%"class.thrust::host_vector"* noalias sret %agg.result, i64 %N) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %N.addr = alloca i64, align 8 %nrvo = alloca i1, align 1 %agg.tmp = alloca %"class.thrust::counting_iterator", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp1 = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp6 = alloca %"struct.unittest::random_integer", align 1 %coerce = alloca %"class.thrust::detail::normal_iterator", align 8 store i64 %N, i64* %N.addr, align 8, !tbaa !13 store i1 false, i1* %nrvo, align 1 %0 = load i64, i64* %N.addr, align 8, !tbaa !13 call void @_ZN6thrust11host_vectorIaSaIaEEC2Em(%"class.thrust::host_vector"* %agg.result, i64 %0) invoke void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2Em(%"class.thrust::counting_iterator"* %agg.tmp, i64 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %1 = load i64, i64* %N.addr, align 8, !tbaa !13 invoke void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2Em(%"class.thrust::counting_iterator"* %agg.tmp1, i64 %1) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %2 = bitcast %"class.thrust::host_vector"* %agg.result to %"class.thrust::detail::vector_base"* %call = invoke i8* @_ZN6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont2 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive5, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp3, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive7, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive8, align 8 %call10 = invoke i8* @_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEEN8unittest14random_integerIaLb0EEEEET0_T_SC_SB_T1_(%"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* %agg.tmp1, i8* %3) to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont4 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %coerce, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive11, i32 0, i32 0 store i8* %call10, i8** %coerce.dive12, align 8 store i1 true, i1* %nrvo, align 1 %nrvo.val = load i1, i1* %nrvo, align 1 br i1 %nrvo.val, label %nrvo.skipdtor, label %nrvo.unused lpad: ; preds = %invoke.cont4, %invoke.cont2, %invoke.cont, %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::vector_base"*)* @_ZN6thrust6detail11vector_baseIaSaIaEED2Ev to void (%"class.thrust::host_vector"*)*)(%"class.thrust::host_vector"* %agg.result) #5 br label %eh.resume nrvo.unused: ; preds = %invoke.cont9 call void bitcast (void (%"class.thrust::detail::vector_base"*)* @_ZN6thrust6detail11vector_baseIaSaIaEED2Ev to void (%"class.thrust::host_vector"*)*)(%"class.thrust::host_vector"* %agg.result) #5 br label %nrvo.skipdtor nrvo.skipdtor: ; preds = %nrvo.unused, %invoke.cont9 ret void eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val13 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val13 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust11host_vectorINS_4pairIaaEESaIS2_EEC2Em(%"class.thrust::host_vector.45"* %this, i64 %n) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::host_vector.45"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::host_vector.45"* %this, %"class.thrust::host_vector.45"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::host_vector.45"*, %"class.thrust::host_vector.45"** %this.addr, align 8 %0 = bitcast %"class.thrust::host_vector.45"* %this1 to %"class.thrust::detail::vector_base.46"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEC2Em(%"class.thrust::detail::vector_base.46"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust9transformINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEE17make_pair_functorEET1_T_SB_T0_SA_T2_(i8* %first1.coerce, i8* %last1.coerce, i8* %first2.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.51", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator", align 8 %result = alloca %"class.thrust::detail::normal_iterator.51", align 8 %op = alloca %struct.make_pair_functor, align 1 %system1 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %system2 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %system3 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp11 = alloca %struct.make_pair_functor, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive2, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive4, i32 0, i32 0 store i8* %first2.coerce, i8** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to i8* call void @llvm.lifetime.start(i64 1, i8* %2) #5 %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to %"struct.thrust::execution_policy.88"* %4 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to %"struct.thrust::execution_policy.88"* %5 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to %"struct.thrust::execution_policy.88"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %3, %"struct.thrust::execution_policy.88"* dereferenceable(1) %4, %"struct.thrust::execution_policy.88"* dereferenceable(1) %5) %6 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* %7 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp to i8* %8 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp8 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp9 to i8* %12 = bitcast %"class.thrust::detail::normal_iterator"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %13 = bitcast %"class.thrust::detail::normal_iterator.51"* %agg.tmp10 to i8* %14 = bitcast %"class.thrust::detail::normal_iterator.51"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 8, i32 8, i1 false) %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive12, i32 0, i32 0 %15 = load i8*, i8** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive14, i32 0, i32 0 %16 = load i8*, i8** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive16, i32 0, i32 0 %17 = load i8*, i8** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp10, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive18, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 %call20 = call %"struct.thrust::pair"* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPaEES8_NS6_IPNS_4pairIaaEEEE17make_pair_functorEET2_RKNS5_21execution_policy_baseIT_EET0_SK_T1_SE_T3_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %6, i8* %15, i8* %16, i8* %17, %"struct.thrust::pair"* %18) %coerce.dive21 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive21, i32 0, i32 0 store %"struct.thrust::pair"* %call20, %"struct.thrust::pair"** %coerce.dive22, align 8 %19 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to i8* call void @llvm.lifetime.end(i64 1, i8* %19) #5 %20 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %20) #5 %21 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %21) #5 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive23, i32 0, i32 0 %22 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive24, align 8 ret %"struct.thrust::pair"* %22 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator", align 8 %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 %call = call i8* @_ZN6thrust6detail18contiguous_storageIaSaIaEE5beginEv(%"class.thrust::detail::contiguous_storage"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive3, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive4, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail11vector_baseIaSaIaEE3endEv(%"class.thrust::detail::vector_base"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator", align 8 %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %call = call i8* @_ZN6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %call3 = call i64 @_ZNK6thrust6detail11vector_baseIaSaIaEE4sizeEv(%"class.thrust::detail::vector_base"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %retval, i64 %call3) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive4, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive5, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.51", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 store %"class.thrust::detail::vector_base.46"* %this, %"class.thrust::detail::vector_base.46"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 0 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::contiguous_storage.47"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive3, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust13device_vectorIaNS_23device_malloc_allocatorIaEEEC2IaSaIaEEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector"* %this, %"class.thrust::host_vector"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_vector"*, align 8 %v.addr = alloca %"class.thrust::host_vector"*, align 8 store %"class.thrust::device_vector"* %this, %"class.thrust::device_vector"** %this.addr, align 8, !tbaa !1 store %"class.thrust::host_vector"* %v, %"class.thrust::host_vector"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_vector"*, %"class.thrust::device_vector"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_vector"* %this1 to %"class.thrust::detail::vector_base.54"* %1 = load %"class.thrust::host_vector"*, %"class.thrust::host_vector"** %v.addr, align 8 %2 = bitcast %"class.thrust::host_vector"* %1 to %"class.thrust::detail::vector_base"* call void @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEEC2IaSaIaEEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.54"* %0, %"class.thrust::detail::vector_base"* dereferenceable(32) %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust13device_vectorINS_4pairIaaEENS_23device_malloc_allocatorIS2_EEEC2IS2_SaIS2_EEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector.61"* %this, %"class.thrust::host_vector.45"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_vector.61"*, align 8 %v.addr = alloca %"class.thrust::host_vector.45"*, align 8 store %"class.thrust::device_vector.61"* %this, %"class.thrust::device_vector.61"** %this.addr, align 8, !tbaa !1 store %"class.thrust::host_vector.45"* %v, %"class.thrust::host_vector.45"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_vector.61"*, %"class.thrust::device_vector.61"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_vector.61"* %this1 to %"class.thrust::detail::vector_base.62"* %1 = load %"class.thrust::host_vector.45"*, %"class.thrust::host_vector.45"** %v.addr, align 8 %2 = bitcast %"class.thrust::host_vector.45"* %1 to %"class.thrust::detail::vector_base.46"* call void @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEEC2IS3_SaIS3_EEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.62"* %0, %"class.thrust::detail::vector_base.46"* dereferenceable(32) %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest15random_integersIbEEN6thrust11host_vectorIT_SaIS3_EEEm(%"class.thrust::host_vector.73"* noalias sret %agg.result, i64 %N) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %N.addr = alloca i64, align 8 %nrvo = alloca i1, align 1 %agg.tmp = alloca %"class.thrust::counting_iterator", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp1 = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator.79", align 8 %agg.tmp6 = alloca %"struct.unittest::random_integer.176", align 1 %coerce = alloca %"class.thrust::detail::normal_iterator.79", align 8 store i64 %N, i64* %N.addr, align 8, !tbaa !13 store i1 false, i1* %nrvo, align 1 %0 = load i64, i64* %N.addr, align 8, !tbaa !13 call void @_ZN6thrust11host_vectorIbSaIbEEC2Em(%"class.thrust::host_vector.73"* %agg.result, i64 %0) invoke void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2Em(%"class.thrust::counting_iterator"* %agg.tmp, i64 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %1 = load i64, i64* %N.addr, align 8, !tbaa !13 invoke void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2Em(%"class.thrust::counting_iterator"* %agg.tmp1, i64 %1) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %2 = bitcast %"class.thrust::host_vector.73"* %agg.result to %"class.thrust::detail::vector_base.74"* %call = invoke i8* @_ZN6thrust6detail11vector_baseIbSaIbEE5beginEv(%"class.thrust::detail::vector_base.74"* %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont2 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive5, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp3, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive7, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive8, align 8 %call10 = invoke i8* @_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEEN8unittest14random_integerIbLb0EEEEET0_T_SC_SB_T1_(%"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* %agg.tmp1, i8* %3) to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont4 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %coerce, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive11, i32 0, i32 0 store i8* %call10, i8** %coerce.dive12, align 8 store i1 true, i1* %nrvo, align 1 %nrvo.val = load i1, i1* %nrvo, align 1 br i1 %nrvo.val, label %nrvo.skipdtor, label %nrvo.unused lpad: ; preds = %invoke.cont4, %invoke.cont2, %invoke.cont, %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::vector_base.74"*)* @_ZN6thrust6detail11vector_baseIbSaIbEED2Ev to void (%"class.thrust::host_vector.73"*)*)(%"class.thrust::host_vector.73"* %agg.result) #5 br label %eh.resume nrvo.unused: ; preds = %invoke.cont9 call void bitcast (void (%"class.thrust::detail::vector_base.74"*)* @_ZN6thrust6detail11vector_baseIbSaIbEED2Ev to void (%"class.thrust::host_vector.73"*)*)(%"class.thrust::host_vector.73"* %agg.result) #5 br label %nrvo.skipdtor nrvo.skipdtor: ; preds = %nrvo.unused, %invoke.cont9 ret void eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val13 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val13 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust11host_vectorIaSaIaEEC2IbSaIbEEERKNS0_IT_T0_EE(%"class.thrust::host_vector"* %this, %"class.thrust::host_vector.73"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::host_vector"*, align 8 %v.addr = alloca %"class.thrust::host_vector.73"*, align 8 store %"class.thrust::host_vector"* %this, %"class.thrust::host_vector"** %this.addr, align 8, !tbaa !1 store %"class.thrust::host_vector.73"* %v, %"class.thrust::host_vector.73"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::host_vector"*, %"class.thrust::host_vector"** %this.addr, align 8 %0 = bitcast %"class.thrust::host_vector"* %this1 to %"class.thrust::detail::vector_base"* %1 = load %"class.thrust::host_vector.73"*, %"class.thrust::host_vector.73"** %v.addr, align 8 %2 = bitcast %"class.thrust::host_vector.73"* %1 to %"class.thrust::detail::vector_base.74"* call void @_ZN6thrust6detail11vector_baseIaSaIaEEC2IbSaIbEEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base"* %0, %"class.thrust::detail::vector_base.74"* dereferenceable(32) %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIbSaIbEED2Ev(%"class.thrust::detail::vector_base.74"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.79", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator.79", align 8 store %"class.thrust::detail::vector_base.74"* %this, %"class.thrust::detail::vector_base.74"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 0 %call = invoke i8* @_ZN6thrust6detail11vector_baseIbSaIbEE5beginEv(%"class.thrust::detail::vector_base.74"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %call5 = invoke i8* @_ZN6thrust6detail11vector_baseIbSaIbEE3endEv(%"class.thrust::detail::vector_base.74"* %this1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp3, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive6, i32 0, i32 0 store i8* %call5, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive8, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp3, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive10, i32 0, i32 0 %1 = load i8*, i8** %coerce.dive11, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIbSaIbEE7destroyENS0_15normal_iteratorIPbEES6_(%"class.thrust::detail::contiguous_storage.75"* %m_storage, i8* %0, i8* %1) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %invoke.cont4 %m_storage13 = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIbSaIbEED2Ev(%"class.thrust::detail::contiguous_storage.75"* %m_storage13) #5 ret void lpad: ; preds = %invoke.cont4, %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %m_storage14 = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIbSaIbEED2Ev(%"class.thrust::detail::contiguous_storage.75"* %m_storage14) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %x, i32 %y) #8 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %x.addr = alloca i32, align 4 %y.addr = alloca i32, align 4 store i32 %x, i32* %x.addr, align 4, !tbaa !11 store i32 %y, i32* %y.addr, align 4, !tbaa !11 call void @_ZN6thrust4pairIiiEC2ERKiS3_(%"struct.thrust::pair.82"* %retval, i32* dereferenceable(4) %x.addr, i32* dereferenceable(4) %y.addr) %0 = bitcast %"struct.thrust::pair.82"* %retval to i64* %1 = load i64, i64* %0, align 4 ret i64 %1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairIaaEC2IiiEERKNS0_IT_T0_EE(%"struct.thrust::pair"* %this, %"struct.thrust::pair.82"* dereferenceable(8) %p) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair"*, align 8 %p.addr = alloca %"struct.thrust::pair.82"*, align 8 store %"struct.thrust::pair"* %this, %"struct.thrust::pair"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.82"* %p, %"struct.thrust::pair.82"** %p.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %p.addr, align 8 %first2 = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %0, i32 0, i32 0 %1 = load i32, i32* %first2, align 4, !tbaa !24 %conv = trunc i32 %1 to i8 store i8 %conv, i8* %first, align 1, !tbaa !26 %second = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %this1, i32 0, i32 1 %2 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %p.addr, align 8 %second3 = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %2, i32 0, i32 1 %3 = load i32, i32* %second3, align 4, !tbaa !28 %conv4 = trunc i32 %3 to i8 store i8 %conv4, i8* %second, align 1, !tbaa !29 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorIPaEENS2_IPNS_4pairIaaEEEES8_S6_NS_8equal_toIaEE9add_pairsEET1_T_SD_T0_SC_T2_T3_T4_(i8* %first1.coerce, i8* %last1.coerce, %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"* %result.coerce, i16 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.51", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %result = alloca %"class.thrust::detail::normal_iterator.51", align 8 %init = alloca %"struct.thrust::pair", align 1 %binary_pred = alloca %"struct.thrust::equal_to", align 1 %binary_op = alloca %struct.add_pairs, align 1 %system1 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %system2 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %system3 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp12 = alloca %"struct.thrust::pair", align 1 %agg.tmp13 = alloca %"struct.thrust::equal_to", align 1 %agg.tmp14 = alloca %struct.add_pairs, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive2, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %0 = bitcast %"struct.thrust::pair"* %init to i16* store i16 %init.coerce, i16* %0, align 1 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %2) #5 %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to i8* call void @llvm.lifetime.start(i64 1, i8* %3) #5 %4 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to %"struct.thrust::execution_policy.88"* %5 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to %"struct.thrust::execution_policy.88"* %6 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to %"struct.thrust::execution_policy.88"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %4, %"struct.thrust::execution_policy.88"* dereferenceable(1) %5, %"struct.thrust::execution_policy.88"* dereferenceable(1) %6) %7 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* %8 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp to i8* %9 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp9 to i8* %11 = bitcast %"class.thrust::detail::normal_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = bitcast %"class.thrust::detail::normal_iterator.51"* %agg.tmp10 to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.51"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.51"* %agg.tmp11 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.51"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"struct.thrust::pair"* %agg.tmp12 to i8* %17 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 2, i32 1, i1 false), !tbaa.struct !23 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive15, i32 0, i32 0 %18 = load i8*, i8** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp9, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive17, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp10, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive19, i32 0, i32 0 %20 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive20, align 8 %coerce.dive21 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp11, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive21, i32 0, i32 0 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive22, align 8 %22 = bitcast %"struct.thrust::pair"* %agg.tmp12 to i16* %23 = load i16, i16* %22, align 1 %call23 = call %"struct.thrust::pair"* @_ZN6thrust21exclusive_scan_by_keyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPaEENS6_IPNS_4pairIaaEEEESC_SA_NS_8equal_toIaEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SM_T1_SG_T3_T4_T5_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %7, i8* %18, i8* %19, %"struct.thrust::pair"* %20, %"struct.thrust::pair"* %21, i16 %23) %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive24, i32 0, i32 0 store %"struct.thrust::pair"* %call23, %"struct.thrust::pair"** %coerce.dive25, align 8 %24 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to i8* call void @llvm.lifetime.end(i64 1, i8* %24) #5 %25 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %25) #5 %26 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %26) #5 %coerce.dive26 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive26, i32 0, i32 0 %27 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive27, align 8 ret %"struct.thrust::pair"* %27 } ; Function Attrs: argmemonly nounwind declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #2 ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorINS_10device_ptrIaEEEENS2_INS3_INS_4pairIaaEEEEEES9_S7_NS_8equal_toIaEE9add_pairsEET1_T_SE_T0_SD_T2_T3_T4_(i8* %first1.coerce, i8* %last1.coerce, %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"* %result.coerce, i16 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.66", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %result = alloca %"class.thrust::detail::normal_iterator.66", align 8 %init = alloca %"struct.thrust::pair", align 1 %binary_pred = alloca %"struct.thrust::equal_to", align 1 %binary_op = alloca %struct.add_pairs, align 1 %system1 = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %system2 = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %system3 = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp22 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp23 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp24 = alloca %"struct.thrust::pair", align 1 %agg.tmp25 = alloca %"struct.thrust::equal_to", align 1 %agg.tmp26 = alloca %struct.add_pairs, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive3, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive8, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive13, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive18, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive19, align 8 %0 = bitcast %"struct.thrust::pair"* %init to i16* store i16 %init.coerce, i16* %0, align 1 %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %2) #5 %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system3 to i8* call void @llvm.lifetime.start(i64 1, i8* %3) #5 %4 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system1 to %"struct.thrust::execution_policy.120"* %5 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system2 to %"struct.thrust::execution_policy.120"* %6 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system3 to %"struct.thrust::execution_policy.120"* %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_4cuda6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE(%"struct.thrust::execution_policy.120"* dereferenceable(1) %4, %"struct.thrust::execution_policy.120"* dereferenceable(1) %5, %"struct.thrust::execution_policy.120"* dereferenceable(1) %6) %7 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %8 = bitcast %"class.thrust::detail::normal_iterator.56"* %agg.tmp to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.56"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"class.thrust::detail::normal_iterator.56"* %agg.tmp21 to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.56"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp22 to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.66"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp23 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.66"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"struct.thrust::pair"* %agg.tmp24 to i8* %17 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 2, i32 1, i1 false), !tbaa.struct !23 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive27, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive30, i32 0, i32 0 %18 = load i8*, i8** %coerce.dive31, align 8 %coerce.dive32 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp21, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive32, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive35, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive36, align 8 %coerce.dive37 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp22, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive37, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive40, i32 0, i32 0 %20 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive41, align 8 %coerce.dive42 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp23, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive42, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive45, i32 0, i32 0 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive46, align 8 %22 = bitcast %"struct.thrust::pair"* %agg.tmp24 to i16* %23 = load i16, i16* %22, align 1 %call47 = call %"struct.thrust::pair"* @_ZN6thrust21exclusive_scan_by_keyINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS6_INS7_INS_4pairIaaEEEEEESD_SB_NS_8equal_toIaEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SN_T1_SH_T3_T4_T5_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %7, i8* %18, i8* %19, %"struct.thrust::pair"* %20, %"struct.thrust::pair"* %21, i16 %23) %coerce.dive48 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive49, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive50, i32 0, i32 0 %coerce.dive52 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive51, i32 0, i32 0 store %"struct.thrust::pair"* %call47, %"struct.thrust::pair"** %coerce.dive52, align 8 %24 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system3 to i8* call void @llvm.lifetime.end(i64 1, i8* %24) #5 %25 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %25) #5 %26 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %26) #5 %coerce.dive53 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive54 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive53, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive55, i32 0, i32 0 %coerce.dive57 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive56, i32 0, i32 0 %27 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive57, align 8 ret %"struct.thrust::pair"* %27 } ; Function Attrs: nounwind uwtable define linkonce_odr i8* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE5beginEv(%"class.thrust::detail::vector_base.54"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.56", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this1, i32 0, i32 0 %call = call i8* @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE5beginEv(%"class.thrust::detail::contiguous_storage.55"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 store i8* %call, i8** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive9, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive10, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE3endEv(%"class.thrust::detail::vector_base.54"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.56", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %call = call i8* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE5beginEv(%"class.thrust::detail::vector_base.54"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 store i8* %call, i8** %coerce.dive5, align 8 %call6 = call i64 @_ZNK6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE4sizeEv(%"class.thrust::detail::vector_base.54"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %retval, i64 %call6) %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive10, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive11, align 8 ret i8* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.62"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.66", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 0 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.63"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive9, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest18assert_equal_quietIN6thrust11host_vectorINS1_4pairIaaEESaIS4_EEENS1_13device_vectorIS4_NS1_23device_malloc_allocatorIS4_EEEEEEvRKT_RKT0_RKSsi(%"class.thrust::host_vector.45"* dereferenceable(32) %a, %"class.thrust::device_vector.61"* dereferenceable(32) %b, %"class.std::basic_string"* dereferenceable(8) %filename, i32 %lineno) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %a.addr = alloca %"class.thrust::host_vector.45"*, align 8 %b.addr = alloca %"class.thrust::device_vector.61"*, align 8 %filename.addr = alloca %"class.std::basic_string"*, align 8 %lineno.addr = alloca i32, align 4 %f = alloca %"class.unittest::UnitTestFailure", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 store %"class.thrust::host_vector.45"* %a, %"class.thrust::host_vector.45"** %a.addr, align 8, !tbaa !7 store %"class.thrust::device_vector.61"* %b, %"class.thrust::device_vector.61"** %b.addr, align 8, !tbaa !7 store %"class.std::basic_string"* %filename, %"class.std::basic_string"** %filename.addr, align 8, !tbaa !7 store i32 %lineno, i32* %lineno.addr, align 4, !tbaa !11 %0 = load %"class.thrust::host_vector.45"*, %"class.thrust::host_vector.45"** %a.addr, align 8 %1 = bitcast %"class.thrust::host_vector.45"* %0 to %"class.thrust::detail::vector_base.46"* %2 = load %"class.thrust::device_vector.61"*, %"class.thrust::device_vector.61"** %b.addr, align 8 %3 = bitcast %"class.thrust::device_vector.61"* %2 to %"class.thrust::detail::vector_base.62"* %call = call zeroext i1 @_ZN6thrusteqINS_4pairIaaEESaIS2_ES2_NS_23device_malloc_allocatorIS2_EEEEbRKNS_6detail11vector_baseIT_T0_EERKNS7_IT1_T2_EE(%"class.thrust::detail::vector_base.46"* dereferenceable(32) %1, %"class.thrust::detail::vector_base.62"* dereferenceable(32) %3) br i1 %call, label %if.end, label %if.then if.then: ; preds = %entry %4 = bitcast %"class.unittest::UnitTestFailure"* %f to i8* call void @llvm.lifetime.start(i64 8, i8* %4) #5 call void @_ZN8unittest15UnitTestFailureC2Ev(%"class.unittest::UnitTestFailure"* %f) %5 = bitcast %"class.unittest::UnitTestFailure"* %f to %"class.unittest::UnitTestException"* %call1 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA2_cEERS0_RKT_(%"class.unittest::UnitTestException"* %5, [2 x i8]* dereferenceable(2) @.str.45) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then %6 = load %"class.std::basic_string"*, %"class.std::basic_string"** %filename.addr, align 8 %call3 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsISsEERS0_RKT_(%"class.unittest::UnitTestException"* %call1, %"class.std::basic_string"* dereferenceable(8) %6) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call5 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA2_cEERS0_RKT_(%"class.unittest::UnitTestException"* %call3, [2 x i8]* dereferenceable(2) @.str.46) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont2 %call7 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIiEERS0_RKT_(%"class.unittest::UnitTestException"* %call5, i32* dereferenceable(4) %lineno.addr) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont4 %call9 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA3_cEERS0_RKT_(%"class.unittest::UnitTestException"* %call7, [3 x i8]* dereferenceable(3) @.str.47) to label %invoke.cont8 unwind label %lpad invoke.cont8: ; preds = %invoke.cont6 %7 = bitcast %"class.unittest::UnitTestFailure"* %f to %"class.unittest::UnitTestException"* %call11 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA22_cEERS0_RKT_(%"class.unittest::UnitTestException"* %7, [22 x i8]* dereferenceable(22) @.str.48) to label %invoke.cont10 unwind label %lpad invoke.cont10: ; preds = %invoke.cont8 %8 = bitcast %"class.unittest::UnitTestFailure"* %f to %"class.unittest::UnitTestException"* %call13 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA9_cEERS0_RKT_(%"class.unittest::UnitTestException"* %8, [9 x i8]* dereferenceable(9) @.str.49) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %invoke.cont10 invoke void @_ZN8unittest9type_nameIN6thrust11host_vectorINS1_4pairIaaEESaIS4_EEEEESsv(%"class.std::basic_string"* sret %ref.tmp) to label %invoke.cont14 unwind label %lpad invoke.cont14: ; preds = %invoke.cont12 %call17 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsISsEERS0_RKT_(%"class.unittest::UnitTestException"* %call13, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont16 unwind label %lpad15 invoke.cont16: ; preds = %invoke.cont14 %call19 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA3_cEERS0_RKT_(%"class.unittest::UnitTestException"* %call17, [3 x i8]* dereferenceable(3) @.str.50) to label %invoke.cont18 unwind label %lpad15 invoke.cont18: ; preds = %invoke.cont16 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 %exception = call i8* @__cxa_allocate_exception(i64 8) #5 %9 = bitcast i8* %exception to %"class.unittest::UnitTestFailure"* call void @_ZN8unittest15UnitTestFailureC2EOS0_(%"class.unittest::UnitTestFailure"* %9, %"class.unittest::UnitTestFailure"* dereferenceable(8) %f) #5 invoke void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN8unittest15UnitTestFailureE to i8*), i8* bitcast (void (%"class.unittest::UnitTestException"*)* @_ZN8unittest17UnitTestExceptionD2Ev to i8*)) #15 to label %unreachable unwind label %lpad lpad: ; preds = %invoke.cont18, %invoke.cont12, %invoke.cont10, %invoke.cont8, %invoke.cont6, %invoke.cont4, %invoke.cont2, %invoke.cont, %if.then %10 = landingpad { i8*, i32 } cleanup %11 = extractvalue { i8*, i32 } %10, 0 store i8* %11, i8** %exn.slot, align 8 %12 = extractvalue { i8*, i32 } %10, 1 store i32 %12, i32* %ehselector.slot, align 4 br label %ehcleanup lpad15: ; preds = %invoke.cont16, %invoke.cont14 %13 = landingpad { i8*, i32 } cleanup %14 = extractvalue { i8*, i32 } %13, 0 store i8* %14, i8** %exn.slot, align 8 %15 = extractvalue { i8*, i32 } %13, 1 store i32 %15, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad15, %lpad call void bitcast (void (%"class.unittest::UnitTestException"*)* @_ZN8unittest17UnitTestExceptionD2Ev to void (%"class.unittest::UnitTestFailure"*)*)(%"class.unittest::UnitTestFailure"* %f) #5 %16 = bitcast %"class.unittest::UnitTestFailure"* %f to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 br label %eh.resume if.end: ; preds = %entry ret void eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val21 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val21 unreachable: ; preds = %invoke.cont18 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEED2Ev(%"class.thrust::detail::vector_base.54"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.56", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp6 = alloca %"class.thrust::detail::normal_iterator.56", align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this1, i32 0, i32 0 %call = invoke i8* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE5beginEv(%"class.thrust::detail::vector_base.54"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 store i8* %call, i8** %coerce.dive5, align 8 %call8 = invoke i8* @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE3endEv(%"class.thrust::detail::vector_base.54"* %this1) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp6, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive12, i32 0, i32 0 store i8* %call8, i8** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive17, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp6, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive22, i32 0, i32 0 %1 = load i8*, i8** %coerce.dive23, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE7destroyENS0_15normal_iteratorINS_10device_ptrIaEEEES8_(%"class.thrust::detail::contiguous_storage.55"* %m_storage, i8* %0, i8* %1) to label %invoke.cont24 unwind label %lpad invoke.cont24: ; preds = %invoke.cont7 %m_storage25 = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEED2Ev(%"class.thrust::detail::contiguous_storage.55"* %m_storage25) #5 ret void lpad: ; preds = %invoke.cont7, %invoke.cont, %entry %2 = landingpad { i8*, i32 } catch i8* null %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %m_storage26 = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEED2Ev(%"class.thrust::detail::contiguous_storage.55"* %m_storage26) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaSaIaEED2Ev(%"class.thrust::detail::vector_base"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator", align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 %call = invoke i8* @_ZN6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %call5 = invoke i8* @_ZN6thrust6detail11vector_baseIaSaIaEE3endEv(%"class.thrust::detail::vector_base"* %this1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp3, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive6, i32 0, i32 0 store i8* %call5, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive8, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp3, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive10, i32 0, i32 0 %1 = load i8*, i8** %coerce.dive11, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIaSaIaEE7destroyENS0_15normal_iteratorIPaEES6_(%"class.thrust::detail::contiguous_storage"* %m_storage, i8* %0, i8* %1) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %invoke.cont4 %m_storage13 = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIaSaIaEED2Ev(%"class.thrust::detail::contiguous_storage"* %m_storage13) #5 ret void lpad: ; preds = %invoke.cont4, %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %m_storage14 = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIaSaIaEED2Ev(%"class.thrust::detail::contiguous_storage"* %m_storage14) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::vector_base.62"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.66", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp6 = alloca %"class.thrust::detail::normal_iterator.66", align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 0 %call = invoke %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.62"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive5, align 8 %call8 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE3endEv(%"class.thrust::detail::vector_base.62"* %this1) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp6, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive12, i32 0, i32 0 store %"struct.thrust::pair"* %call8, %"struct.thrust::pair"** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive17, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp6, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive22, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive23, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE7destroyENS0_15normal_iteratorINS_10device_ptrIS3_EEEESA_(%"class.thrust::detail::contiguous_storage.63"* %m_storage, %"struct.thrust::pair"* %0, %"struct.thrust::pair"* %1) to label %invoke.cont24 unwind label %lpad invoke.cont24: ; preds = %invoke.cont7 %m_storage25 = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::contiguous_storage.63"* %m_storage25) #5 ret void lpad: ; preds = %invoke.cont7, %invoke.cont, %entry %2 = landingpad { i8*, i32 } catch i8* null %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %m_storage26 = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::contiguous_storage.63"* %m_storage26) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EED2Ev(%"class.thrust::detail::vector_base.46"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.51", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator.51", align 8 store %"class.thrust::detail::vector_base.46"* %this, %"class.thrust::detail::vector_base.46"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 0 %call = invoke %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %call5 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE3endEv(%"class.thrust::detail::vector_base.46"* %this1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp3, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %call5, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive8, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp3, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive10, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE7destroyENS0_15normal_iteratorIPS3_EES8_(%"class.thrust::detail::contiguous_storage.47"* %m_storage, %"struct.thrust::pair"* %0, %"struct.thrust::pair"* %1) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %invoke.cont4 %m_storage13 = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EED2Ev(%"class.thrust::detail::contiguous_storage.47"* %m_storage13) #5 ret void lpad: ; preds = %invoke.cont4, %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %m_storage14 = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EED2Ev(%"class.thrust::detail::contiguous_storage.47"* %m_storage14) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust11host_vectorIaSaIaEEC2Em(%"class.thrust::host_vector"* %this, i64 %n) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::host_vector"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::host_vector"* %this, %"class.thrust::host_vector"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::host_vector"*, %"class.thrust::host_vector"** %this.addr, align 8 %0 = bitcast %"class.thrust::host_vector"* %this1 to %"class.thrust::detail::vector_base"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail11vector_baseIaSaIaEEC2Em(%"class.thrust::detail::vector_base"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEEN8unittest14random_integerIaLb0EEEEET0_T_SC_SB_T1_(%"class.thrust::counting_iterator"* %first, %"class.thrust::counting_iterator"* %last, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator", align 8 %result = alloca %"class.thrust::detail::normal_iterator", align 8 %op = alloca %"struct.unittest::random_integer", align 1 %system1 = alloca %"struct.thrust::any_system_tag", align 1 %system2 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp2 = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp4 = alloca %"struct.unittest::random_integer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive1, align 8 %0 = bitcast %"struct.thrust::any_system_tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::any_system_tag"* %system1 to %"struct.thrust::execution_policy.89"* %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to %"struct.thrust::execution_policy.88"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS_14any_system_tagENS0_3cpp6detail3tagEEERNS_6detail17enable_if_definedINS8_14minimum_systemIT_T0_NS8_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyISB_EERNSJ_ISC_EE(%"struct.thrust::execution_policy.89"* dereferenceable(1) %2, %"struct.thrust::execution_policy.88"* dereferenceable(1) %3) %4 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* dereferenceable(8) %first) call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp2, %"class.thrust::counting_iterator"* dereferenceable(8) %last) %5 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp3 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp3, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive5, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive6, align 8 %call7 = call i8* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPaEEN8unittest14random_integerIaLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %4, %"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* %agg.tmp2, i8* %7) %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive8, i32 0, i32 0 store i8* %call7, i8** %coerce.dive9, align 8 %8 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %8) #5 %9 = bitcast %"struct.thrust::any_system_tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %9) #5 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive10, i32 0, i32 0 %10 = load i8*, i8** %coerce.dive11, align 8 ret i8* %10 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2Em(%"class.thrust::counting_iterator"* %this, i64 %x) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::counting_iterator"*, align 8 %x.addr = alloca i64, align 8 store %"class.thrust::counting_iterator"* %this, %"class.thrust::counting_iterator"** %this.addr, align 8, !tbaa !1 store i64 %x, i64* %x.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %this.addr, align 8 %0 = bitcast %"class.thrust::counting_iterator"* %this1 to %"class.thrust::iterator_adaptor.83"* call void @_ZN6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxEC2ERKm(%"class.thrust::iterator_adaptor.83"* %0, i64* dereferenceable(8) %x.addr) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaSaIaEEC2Em(%"class.thrust::detail::vector_base"* %this, i64 %n) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.std::allocator.42", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 call void @_ZNSaIaEC2Ev(%"class.std::allocator.42"* %ref.tmp) #5 invoke void @_ZN6thrust6detail18contiguous_storageIaSaIaEEC2ERKS2_(%"class.thrust::detail::contiguous_storage"* %m_storage, %"class.std::allocator.42"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void bitcast (void (%"class.__gnu_cxx::new_allocator.43"*)* @_ZN9__gnu_cxx13new_allocatorIaED2Ev to void (%"class.std::allocator.42"*)*)(%"class.std::allocator.42"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !30 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail11vector_baseIaSaIaEE12default_initEm(%"class.thrust::detail::vector_base"* %this1, i64 %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.43"*)* @_ZN9__gnu_cxx13new_allocatorIaED2Ev to void (%"class.std::allocator.42"*)*)(%"class.std::allocator.42"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageIaSaIaEED2Ev(%"class.thrust::detail::contiguous_storage"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val4 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val4 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIaEC2Ev(%"class.std::allocator.42"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.42"*, align 8 store %"class.std::allocator.42"* %this, %"class.std::allocator.42"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.42"* %this1 to %"class.__gnu_cxx::new_allocator.43"* call void @_ZN9__gnu_cxx13new_allocatorIaEC2Ev(%"class.__gnu_cxx::new_allocator.43"* %0) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaSaIaEEC2ERKS2_(%"class.thrust::detail::contiguous_storage"* %this, %"class.std::allocator.42"* dereferenceable(1) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 %alloc.addr = alloca %"class.std::allocator.42"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.42"* %alloc, %"class.std::allocator.42"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 0 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %alloc.addr, align 8 call void @_ZNSaIaEC2ERKS_(%"class.std::allocator.42"* %m_allocator, %"class.std::allocator.42"* dereferenceable(1) %0) #5 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 1 invoke void @_ZN6thrust6detail15normal_iteratorIPaEC2ES2_(%"class.thrust::detail::normal_iterator"* %m_begin, i8* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !35 ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.43"*)* @_ZN9__gnu_cxx13new_allocatorIaED2Ev to void (%"class.std::allocator.42"*)*)(%"class.std::allocator.42"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIaED2Ev(%"class.__gnu_cxx::new_allocator.43"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.43"*, align 8 store %"class.__gnu_cxx::new_allocator.43"* %this, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.43"*, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaSaIaEE12default_initEm(%"class.thrust::detail::vector_base"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator", align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageIaSaIaEE8allocateEm(%"class.thrust::detail::contiguous_storage"* %m_storage, i64 %1) %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 1 store i64 %2, i64* %m_size, align 8, !tbaa !30 %m_storage2 = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 %call = call i8* @_ZN6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive3, align 8 %call4 = call i64 @_ZNK6thrust6detail11vector_baseIaSaIaEE4sizeEv(%"class.thrust::detail::vector_base"* %this1) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive5, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive6, align 8 call void @_ZN6thrust6detail18contiguous_storageIaSaIaEE19default_construct_nENS0_15normal_iteratorIPaEEm(%"class.thrust::detail::contiguous_storage"* %m_storage2, i8* %3, i64 %call4) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaSaIaEED2Ev(%"class.thrust::detail::contiguous_storage"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIaSaIaEE10deallocateEv(%"class.thrust::detail::contiguous_storage"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.43"*)* @_ZN9__gnu_cxx13new_allocatorIaED2Ev to void (%"class.std::allocator.42"*)*)(%"class.std::allocator.42"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.43"*)* @_ZN9__gnu_cxx13new_allocatorIaED2Ev to void (%"class.std::allocator.42"*)*)(%"class.std::allocator.42"* %m_allocator2) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIaEC2Ev(%"class.__gnu_cxx::new_allocator.43"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.43"*, align 8 store %"class.__gnu_cxx::new_allocator.43"* %this, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.43"*, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIaEC2ERKS_(%"class.std::allocator.42"* %this, %"class.std::allocator.42"* dereferenceable(1) %__a) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.42"*, align 8 %__a.addr = alloca %"class.std::allocator.42"*, align 8 store %"class.std::allocator.42"* %this, %"class.std::allocator.42"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.42"* %__a, %"class.std::allocator.42"** %__a.addr, align 8, !tbaa !7 %this1 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.42"* %this1 to %"class.__gnu_cxx::new_allocator.43"* %1 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %__a.addr, align 8 %2 = bitcast %"class.std::allocator.42"* %1 to %"class.__gnu_cxx::new_allocator.43"* call void @_ZN9__gnu_cxx13new_allocatorIaEC2ERKS1_(%"class.__gnu_cxx::new_allocator.43"* %0, %"class.__gnu_cxx::new_allocator.43"* dereferenceable(1) %2) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPaEC2ES2_(%"class.thrust::detail::normal_iterator"* %this, i8* %p) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %p.addr = alloca i8*, align 8 store %"class.thrust::detail::normal_iterator"* %this, %"class.thrust::detail::normal_iterator"** %this.addr, align 8, !tbaa !1 store i8* %p, i8** %p.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator"* %this1 to %"class.thrust::iterator_adaptor"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_(%"class.thrust::iterator_adaptor"* %0, i8** dereferenceable(8) %p.addr) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIaEC2ERKS1_(%"class.__gnu_cxx::new_allocator.43"* %this, %"class.__gnu_cxx::new_allocator.43"* dereferenceable(1)) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.43"*, align 8 %.addr = alloca %"class.__gnu_cxx::new_allocator.43"*, align 8 store %"class.__gnu_cxx::new_allocator.43"* %this, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8, !tbaa !1 store %"class.__gnu_cxx::new_allocator.43"* %0, %"class.__gnu_cxx::new_allocator.43"** %.addr, align 8, !tbaa !7 %this1 = load %"class.__gnu_cxx::new_allocator.43"*, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_(%"class.thrust::iterator_adaptor"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor"* %this, %"class.thrust::iterator_adaptor"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor"*, %"class.thrust::iterator_adaptor"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor"* %this1 to %"class.thrust::iterator_facade"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !36 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaSaIaEE8allocateEm(%"class.thrust::detail::contiguous_storage"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator", align 8 %ref.tmp3 = alloca %"class.thrust::detail::normal_iterator", align 8 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i8* @_ZN6thrust6detail16allocator_traitsISaIaEE8allocateERS2_m(%"class.std::allocator.42"* dereferenceable(1) %m_allocator, i64 %1) call void @_ZN6thrust6detail15normal_iteratorIPaEC2ES2_(%"class.thrust::detail::normal_iterator"* %ref.tmp, i8* %call) %2 = bitcast %"class.thrust::detail::normal_iterator"* %m_begin to i8* %3 = bitcast %"class.thrust::detail::normal_iterator"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 2 store i64 %4, i64* %m_size, align 8, !tbaa !35 br label %if.end if.else: ; preds = %entry %m_begin2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPaEC2ES2_(%"class.thrust::detail::normal_iterator"* %ref.tmp3, i8* null) %5 = bitcast %"class.thrust::detail::normal_iterator"* %m_begin2 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator"* %ref.tmp3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 2 store i64 0, i64* %m_size4, align 8, !tbaa !35 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaSaIaEE19default_construct_nENS0_15normal_iteratorIPaEEm(%"class.thrust::detail::contiguous_storage"* %this, i8* %first.coerce, i64 %n) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 %n.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this2, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator"* %first to %"class.thrust::iterator_adaptor"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23default_construct_rangeISaIaEPamEEvRT_T0_T1_(%"class.std::allocator.42"* dereferenceable(1) %m_allocator, i8* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIaSaIaEE4sizeEv(%"class.thrust::detail::vector_base"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 1 %0 = load i64, i64* %m_size, align 8, !tbaa !30 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust6detail16allocator_traitsISaIaEE8allocateERS2_m(%"class.std::allocator.42"* dereferenceable(1) %a, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.42"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i8* @_ZZN6thrust6detail16allocator_traitsISaIaEE8allocateERS2_mEN19workaround_warnings8allocateES4_m(%"class.std::allocator.42"* dereferenceable(1) %0, i64 %1) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZZN6thrust6detail16allocator_traitsISaIaEE8allocateERS2_mEN19workaround_warnings8allocateES4_m(%"class.std::allocator.42"* dereferenceable(1) %a, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.42"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.42"* %0 to %"class.__gnu_cxx::new_allocator.43"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i8* @_ZN9__gnu_cxx13new_allocatorIaE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.43"* %1, i64 %2, i8* null) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN9__gnu_cxx13new_allocatorIaE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.43"* %this, i64 %__n, i8*) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.43"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator.43"* %this, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8, !tbaa !1 store i64 %__n, i64* %__n.addr, align 8, !tbaa !13 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.43"*, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8, !tbaa !13 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorIaE8max_sizeEv(%"class.__gnu_cxx::new_allocator.43"* %this1) #5 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #15 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8, !tbaa !13 %mul = mul i64 %2, 1 %call2 = call i8* @_Znwm(i64 %mul) ret i8* %call2 } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK9__gnu_cxx13new_allocatorIaE8max_sizeEv(%"class.__gnu_cxx::new_allocator.43"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.43"*, align 8 store %"class.__gnu_cxx::new_allocator.43"* %this, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.43"*, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8 ret i64 -1 } ; Function Attrs: noreturn declare void @_ZSt17__throw_bad_allocv() #11 ; Function Attrs: nobuiltin declare noalias i8* @_Znwm(i64) #12 ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23default_construct_rangeISaIaEPamEEvRT_T0_T1_(%"class.std::allocator.42"* dereferenceable(1) %a, i8* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.42"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 %1 = load i8*, i8** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIaEPamEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_(%"class.std::allocator.42"* dereferenceable(1) %0, i8* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor"*, align 8 store %"class.thrust::iterator_adaptor"* %this, %"class.thrust::iterator_adaptor"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor"*, %"class.thrust::iterator_adaptor"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %this1, i32 0, i32 0 ret i8** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIaEPamEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_(%"class.std::allocator.42"* dereferenceable(1) %a, i8* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.42"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %ref.tmp1 = alloca i8, align 1 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemISaIaEE3getERS2_(%"class.std::allocator.42"* dereferenceable(1) %0) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i8*, i8** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 store i8 0, i8* %ref.tmp1, align 1, !tbaa !7 %call = call i8* @_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPamaEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i8* %2, i64 %3, i8* dereferenceable(1) %ref.tmp1) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPamaEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %x) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %x.addr = alloca i8*, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load i8*, i8** %x.addr, align 8 %call2 = call i8* @_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPamaEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i8* %2, i64 %3, i8* dereferenceable(1) %4) ret i8* %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_systemISaIaEE3getERS2_(%"class.std::allocator.42"* dereferenceable(1) %a) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.42"*, align 8 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail6systemISaIaEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_(%"class.std::allocator.42"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPamaEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %x) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %x.addr = alloca i8*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 %ref.tmp = alloca %"struct.thrust::detail::has_trivial_copy_constructor", align 1 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = load i8*, i8** %first.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %3 = load i8*, i8** %x.addr, align 8 %4 = bitcast %"struct.thrust::detail::has_trivial_copy_constructor"* %ref.tmp to %"struct.thrust::detail::integral_constant"* %call = call i8* @_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPamaEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, i8* %1, i64 %2, i8* dereferenceable(1) %3) ret i8* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %x) #9 comdat { entry: %x.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %x, %"struct.thrust::detail::execution_policy_base.85"** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %x.addr, align 8 %1 = bitcast %"struct.thrust::detail::execution_policy_base.85"* %0 to %"struct.thrust::system::cpp::detail::tag"* ret %"struct.thrust::system::cpp::detail::tag"* %1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %x) #9 comdat { entry: %x.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %x, %"struct.thrust::detail::execution_policy_base.85"** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %x.addr, align 8 ret %"struct.thrust::detail::execution_policy_base.85"* %0 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPamaEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %x) #0 comdat { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %x.addr = alloca i8*, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* %3 = load i8*, i8** %first.addr, align 8, !tbaa !1 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %5 = load i8*, i8** %x.addr, align 8 %call = call i8* @_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPamaEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, i8* %3, i64 %4, i8* dereferenceable(1) %5) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPamaEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %value) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %value.addr = alloca i8*, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %value, i8** %value.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load i8*, i8** %value.addr, align 8 %call2 = call i8* @_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPamaEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i8* %2, i64 %3, i8* dereferenceable(1) %4) ret i8* %call2 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPamaEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %value) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %value.addr = alloca i8*, align 8 %agg.tmp = alloca %"struct.thrust::detail::fill_functor", align 1 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %value, i8** %value.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load i8*, i8** %value.addr, align 8 call void @_ZN6thrust6detail12fill_functorIaEC2ERKa(%"struct.thrust::detail::fill_functor"* %agg.tmp, i8* dereferenceable(1) %4) %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %agg.tmp, i32 0, i32 0 %5 = load i8, i8* %coerce.dive, align 1 %call = call i8* @_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPamNS_6detail12fill_functorIaEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i8* %2, i64 %3, i8 %5) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPamNS_6detail12fill_functorIaEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first, i64 %n, i8 %gen.coerce) #0 comdat { entry: %gen = alloca %"struct.thrust::detail::fill_functor", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::fill_functor", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %gen, i32 0, i32 0 store i8 %gen.coerce, i8* %coerce.dive, align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::fill_functor"* %agg.tmp to i8* %5 = bitcast %"struct.thrust::detail::fill_functor"* %gen to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 1, i32 1, i1 false), !tbaa.struct !38 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %agg.tmp, i32 0, i32 0 %6 = load i8, i8* %coerce.dive2, align 1 %call3 = call i8* @_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPamNS_6detail12fill_functorIaEEEET0_RNS_16execution_policyIT_EESB_T1_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i8* %2, i64 %3, i8 %6) ret i8* %call3 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail12fill_functorIaEC2ERKa(%"struct.thrust::detail::fill_functor"* %this, i8* dereferenceable(1) %_exemplar) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::fill_functor"*, align 8 %_exemplar.addr = alloca i8*, align 8 store %"struct.thrust::detail::fill_functor"* %this, %"struct.thrust::detail::fill_functor"** %this.addr, align 8, !tbaa !1 store i8* %_exemplar, i8** %_exemplar.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::fill_functor"*, %"struct.thrust::detail::fill_functor"** %this.addr, align 8 %exemplar = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %this1, i32 0, i32 0 %0 = load i8*, i8** %_exemplar.addr, align 8 %1 = load i8, i8* %0, align 1, !tbaa !7 store i8 %1, i8* %exemplar, align 1, !tbaa !39 ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPamNS_6detail12fill_functorIaEEEET0_RNS_16execution_policyIT_EESB_T1_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i8* %first, i64 %n, i8 %gen.coerce) #0 comdat { entry: %gen = alloca %"struct.thrust::detail::fill_functor", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::host_generate_functor", align 1 %agg.tmp1 = alloca %"struct.thrust::detail::fill_functor", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %gen, i32 0, i32 0 store i8 %gen.coerce, i8* %coerce.dive, align 1 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::fill_functor"* %agg.tmp1 to i8* %5 = bitcast %"struct.thrust::detail::fill_functor"* %gen to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 1, i32 1, i1 false), !tbaa.struct !38 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %agg.tmp1, i32 0, i32 0 %6 = load i8, i8* %coerce.dive2, align 1 call void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIaEEEC2ES3_(%"struct.thrust::detail::host_generate_functor"* %agg.tmp, i8 %6) %coerce.dive3 = getelementptr inbounds %"struct.thrust::detail::host_generate_functor", %"struct.thrust::detail::host_generate_functor"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %coerce.dive3, i32 0, i32 0 %7 = load i8, i8* %coerce.dive4, align 1 %call = call i8* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPamNS_6detail21host_generate_functorINS6_12fill_functorIaEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i8* %2, i64 %3, i8 %7) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPamNS_6detail21host_generate_functorINS6_12fill_functorIaEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first, i64 %n, i8 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::host_generate_functor", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::host_generate_functor", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::host_generate_functor", %"struct.thrust::detail::host_generate_functor"* %f, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %coerce.dive, i32 0, i32 0 store i8 %f.coerce, i8* %coerce.dive1, align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call2 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::host_generate_functor"* %agg.tmp to i8* %5 = bitcast %"struct.thrust::detail::host_generate_functor"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 1, i32 1, i1 false), !tbaa.struct !38 %coerce.dive3 = getelementptr inbounds %"struct.thrust::detail::host_generate_functor", %"struct.thrust::detail::host_generate_functor"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %coerce.dive3, i32 0, i32 0 %6 = load i8, i8* %coerce.dive4, align 1 %call5 = call i8* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPamNS_6detail21host_generate_functorINS8_12fill_functorIaEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, i8* %2, i64 %3, i8 %6) ret i8* %call5 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIaEEEC2ES3_(%"struct.thrust::detail::host_generate_functor"* %this, i8 %g.coerce) unnamed_addr #1 comdat align 2 { entry: %g = alloca %"struct.thrust::detail::fill_functor", align 1 %this.addr = alloca %"struct.thrust::detail::host_generate_functor"*, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %g, i32 0, i32 0 store i8 %g.coerce, i8* %coerce.dive, align 1 store %"struct.thrust::detail::host_generate_functor"* %this, %"struct.thrust::detail::host_generate_functor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::host_generate_functor"*, %"struct.thrust::detail::host_generate_functor"** %this.addr, align 8 %gen = getelementptr inbounds %"struct.thrust::detail::host_generate_functor", %"struct.thrust::detail::host_generate_functor"* %this1, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::fill_functor"* %gen to i8* %1 = bitcast %"struct.thrust::detail::fill_functor"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 1, i32 1, i1 false), !tbaa.struct !38 ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPamNS_6detail21host_generate_functorINS8_12fill_functorIaEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), i8* %first, i64 %n, i8 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::host_generate_functor", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function", align 1 %i = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::host_generate_functor", %"struct.thrust::detail::host_generate_functor"* %f, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %coerce.dive, i32 0, i32 0 store i8 %f.coerce, i8* %coerce.dive1, align 1 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = bitcast %"struct.thrust::detail::wrapped_function"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIaEEEEvEC2ERKS5_(%"struct.thrust::detail::wrapped_function"* %wrapped_f, %"struct.thrust::detail::host_generate_functor"* dereferenceable(1) %f) %2 = bitcast i64* %i to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 store i64 0, i64* %i, align 8, !tbaa !13 br label %for.cond for.cond: ; preds = %for.inc, %entry %3 = load i64, i64* %i, align 8, !tbaa !13 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ne i64 %3, %4 br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %5 = bitcast i64* %i to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 br label %for.end for.body: ; preds = %for.cond %6 = load i8*, i8** %first.addr, align 8, !tbaa !1 call void @_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIaEEEEvEclIaEEvRT_(%"struct.thrust::detail::wrapped_function"* %wrapped_f, i8* dereferenceable(1) %6) %7 = load i8*, i8** %first.addr, align 8, !tbaa !1 %incdec.ptr = getelementptr inbounds i8, i8* %7, i32 1 store i8* %incdec.ptr, i8** %first.addr, align 8, !tbaa !1 br label %for.inc for.inc: ; preds = %for.body %8 = load i64, i64* %i, align 8, !tbaa !13 %inc = add i64 %8, 1 store i64 %inc, i64* %i, align 8, !tbaa !13 br label %for.cond for.end: ; preds = %for.cond.cleanup %9 = load i8*, i8** %first.addr, align 8, !tbaa !1 %10 = bitcast %"struct.thrust::detail::wrapped_function"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %10) #5 ret i8* %9 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIaEEEEvEC2ERKS5_(%"struct.thrust::detail::wrapped_function"* %this, %"struct.thrust::detail::host_generate_functor"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function"*, align 8 %f.addr = alloca %"struct.thrust::detail::host_generate_functor"*, align 8 store %"struct.thrust::detail::wrapped_function"* %this, %"struct.thrust::detail::wrapped_function"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::host_generate_functor"* %f, %"struct.thrust::detail::host_generate_functor"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function"*, %"struct.thrust::detail::wrapped_function"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function", %"struct.thrust::detail::wrapped_function"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::host_generate_functor"*, %"struct.thrust::detail::host_generate_functor"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::host_generate_functor"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::host_generate_functor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !38 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIaEEEEvEclIaEEvRT_(%"struct.thrust::detail::wrapped_function"* %this, i8* dereferenceable(1) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function"*, align 8 %x.addr = alloca i8*, align 8 store %"struct.thrust::detail::wrapped_function"* %this, %"struct.thrust::detail::wrapped_function"** %this.addr, align 8, !tbaa !1 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function"*, %"struct.thrust::detail::wrapped_function"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function", %"struct.thrust::detail::wrapped_function"* %this1, i32 0, i32 0 %0 = load i8*, i8** %x.addr, align 8 %call = call dereferenceable(1) i8* @_ZN6thrust18raw_reference_castIaEENS_6detail13raw_referenceIT_E4typeERS3_(i8* dereferenceable(1) %0) call void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIaEEEclIaEEvRKT_(%"struct.thrust::detail::host_generate_functor"* %m_f, i8* dereferenceable(1) %call) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIaEEEclIaEEvRKT_(%"struct.thrust::detail::host_generate_functor"* %this, i8* dereferenceable(1) %x) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::host_generate_functor"*, align 8 %x.addr = alloca i8*, align 8 %lvalue = alloca i8*, align 8 store %"struct.thrust::detail::host_generate_functor"* %this, %"struct.thrust::detail::host_generate_functor"** %this.addr, align 8, !tbaa !1 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::host_generate_functor"*, %"struct.thrust::detail::host_generate_functor"** %this.addr, align 8 %0 = bitcast i8** %lvalue to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load i8*, i8** %x.addr, align 8 store i8* %1, i8** %lvalue, align 8, !tbaa !7 %gen = getelementptr inbounds %"struct.thrust::detail::host_generate_functor", %"struct.thrust::detail::host_generate_functor"* %this1, i32 0, i32 0 %call = call signext i8 @_ZNK6thrust6detail12fill_functorIaEclEv(%"struct.thrust::detail::fill_functor"* %gen) %2 = load i8*, i8** %lvalue, align 8 store i8 %call, i8* %2, align 1, !tbaa !7 %3 = bitcast i8** %lvalue to i8* call void @llvm.lifetime.end(i64 8, i8* %3) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust18raw_reference_castIaEENS_6detail13raw_referenceIT_E4typeERS3_(i8* dereferenceable(1) %ref) #8 comdat { entry: %ref.addr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 store i8* %ref, i8** %ref.addr, align 8, !tbaa !7 %0 = load i8*, i8** %ref.addr, align 8 store i8* %0, i8** %ref.tmp, align 8, !tbaa !1 %call = call i8* @_ZN6thrust16raw_pointer_castIPaEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_(i8** dereferenceable(8) %ref.tmp) ret i8* %call } ; Function Attrs: nounwind uwtable define linkonce_odr signext i8 @_ZNK6thrust6detail12fill_functorIaEclEv(%"struct.thrust::detail::fill_functor"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::fill_functor"*, align 8 store %"struct.thrust::detail::fill_functor"* %this, %"struct.thrust::detail::fill_functor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::fill_functor"*, %"struct.thrust::detail::fill_functor"** %this.addr, align 8 %exemplar = getelementptr inbounds %"struct.thrust::detail::fill_functor", %"struct.thrust::detail::fill_functor"* %this1, i32 0, i32 0 %0 = load i8, i8* %exemplar, align 1, !tbaa !39 ret i8 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust16raw_pointer_castIPaEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_(i8** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca i8**, align 8 store i8** %ptr, i8*** %ptr.addr, align 8, !tbaa !7 %0 = load i8**, i8*** %ptr.addr, align 8 %1 = load i8*, i8** %0, align 8, !tbaa !1 %call = call i8* @_ZN6thrust6detail14pointer_traitsIPaE3getES2_(i8* %1) ret i8* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZN6thrust6detail14pointer_traitsIPaE3getES2_(i8* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca i8*, align 8 store i8* %ptr, i8** %ptr.addr, align 8, !tbaa !1 %0 = load i8*, i8** %ptr.addr, align 8, !tbaa !1 ret i8* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail6systemISaIaEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_(%"class.std::allocator.42"* dereferenceable(1) %a) #1 comdat { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.42"*, align 8 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaSaIaEE10deallocateEv(%"class.thrust::detail::contiguous_storage"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator", align 8 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIaSaIaEE4sizeEv(%"class.thrust::detail::contiguous_storage"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator"* %m_begin to %"class.thrust::iterator_adaptor"* %call2 = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor"* %0) %1 = load i8*, i8** %call2, align 8, !tbaa !1 %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageIaSaIaEE4sizeEv(%"class.thrust::detail::contiguous_storage"* %this1) call void @_ZN6thrust6detail16allocator_traitsISaIaEE10deallocateERS2_Pam(%"class.std::allocator.42"* dereferenceable(1) %m_allocator, i8* %1, i64 %call3) %m_begin4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPaEC2ES2_(%"class.thrust::detail::normal_iterator"* %ref.tmp, i8* null) %2 = bitcast %"class.thrust::detail::normal_iterator"* %m_begin4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !35 br label %if.end if.end: ; preds = %if.then, %entry ret void } declare void @__cxa_call_unexpected(i8*) ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIaSaIaEE4sizeEv(%"class.thrust::detail::contiguous_storage"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !35 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsISaIaEE10deallocateERS2_Pam(%"class.std::allocator.42"* dereferenceable(1) %a, i8* %p, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.42"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 %1 = load i8*, i8** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZZN6thrust6detail16allocator_traitsISaIaEE10deallocateERS2_PamEN19workaround_warnings10deallocateES4_S5_m(%"class.std::allocator.42"* dereferenceable(1) %0, i8* %1, i64 %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsISaIaEE10deallocateERS2_PamEN19workaround_warnings10deallocateES4_S5_m(%"class.std::allocator.42"* dereferenceable(1) %a, i8* %p, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.42"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.42"* %0 to %"class.__gnu_cxx::new_allocator.43"* %2 = load i8*, i8** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN9__gnu_cxx13new_allocatorIaE10deallocateEPam(%"class.__gnu_cxx::new_allocator.43"* %1, i8* %2, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIaE10deallocateEPam(%"class.__gnu_cxx::new_allocator.43"* %this, i8* %__p, i64) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.43"*, align 8 %__p.addr = alloca i8*, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator.43"* %this, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8, !tbaa !1 store i8* %__p, i8** %__p.addr, align 8, !tbaa !1 store i64 %0, i64* %.addr, align 8, !tbaa !13 %this1 = load %"class.__gnu_cxx::new_allocator.43"*, %"class.__gnu_cxx::new_allocator.43"** %this.addr, align 8 %1 = load i8*, i8** %__p.addr, align 8, !tbaa !1 call void @_ZdlPv(i8* %1) #5 ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPaEEN8unittest14random_integerIaLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"class.thrust::counting_iterator"* %first, %"class.thrust::counting_iterator"* %last, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator", align 8 %result = alloca %"class.thrust::detail::normal_iterator", align 8 %op = alloca %"struct.unittest::random_integer", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp3 = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp5 = alloca %"struct.unittest::random_integer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call2 to %"struct.thrust::execution_policy.88"* call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* dereferenceable(8) %first) call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp3, %"class.thrust::counting_iterator"* dereferenceable(8) %last) %2 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp4, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive6, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive7, align 8 %call8 = call i8* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPaEEN8unittest14random_integerIaLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* %agg.tmp3, i8* %4) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive9, i32 0, i32 0 store i8* %call8, i8** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive11, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive12, align 8 ret i8* %5 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS_14any_system_tagENS0_3cpp6detail3tagEEERNS_6detail17enable_if_definedINS8_14minimum_systemIT_T0_NS8_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyISB_EERNSJ_ISC_EE(%"struct.thrust::execution_policy.89"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system2) #0 comdat { entry: %system1.addr = alloca %"struct.thrust::execution_policy.89"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 store %"struct.thrust::execution_policy.89"* %system1, %"struct.thrust::execution_policy.89"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %system2, %"struct.thrust::execution_policy.88"** %system2.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.89"*, %"struct.thrust::execution_policy.89"** %system1.addr, align 8 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic20select_system_detail10min_systemINS_14any_system_tagENS0_3cpp6detail3tagEEENS_6detail9enable_ifIXsr6thrust6detail7is_sameIT0_NS9_14minimum_systemIT_SB_NS9_19minimum_type_detail14any_conversionESF_SF_SF_SF_SF_SF_SF_SF_SF_SF_SF_SF_SF_E4typeEEE5valueERSB_E4typeERNS_16execution_policyISD_EERNSL_ISB_EE(%"struct.thrust::execution_policy.89"* dereferenceable(1) %0, %"struct.thrust::execution_policy.88"* dereferenceable(1) %1) ret %"struct.thrust::system::cpp::detail::tag"* %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %rhs) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::counting_iterator"*, align 8 %rhs.addr = alloca %"class.thrust::counting_iterator"*, align 8 store %"class.thrust::counting_iterator"* %this, %"class.thrust::counting_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %rhs, %"class.thrust::counting_iterator"** %rhs.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %this.addr, align 8 %0 = bitcast %"class.thrust::counting_iterator"* %this1 to %"class.thrust::iterator_adaptor.83"* %1 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %rhs.addr, align 8 %2 = bitcast %"class.thrust::counting_iterator"* %1 to %"class.thrust::iterator_adaptor.83"* %call = call dereferenceable(8) i64* @_ZNK6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE4baseEv(%"class.thrust::iterator_adaptor.83"* %2) call void @_ZN6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxEC2ERKm(%"class.thrust::iterator_adaptor.83"* %0, i64* dereferenceable(8) %call) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPaEEN8unittest14random_integerIaLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, %"class.thrust::counting_iterator"* %first, %"class.thrust::counting_iterator"* %last, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator", align 8 %result = alloca %"class.thrust::detail::normal_iterator", align 8 %op = alloca %"struct.unittest::random_integer", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %zipped_result = alloca %"class.thrust::zip_iterator", align 8 %agg.tmp = alloca %"class.thrust::zip_iterator", align 8 %agg.tmp2 = alloca %"class.thrust::tuple", align 8 %agg.tmp3 = alloca %"class.thrust::zip_iterator", align 8 %agg.tmp4 = alloca %"class.thrust::tuple", align 8 %agg.tmp5 = alloca %"struct.thrust::detail::unary_transform_functor", align 1 %agg.tmp6 = alloca %"struct.unittest::random_integer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive1, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %0 = bitcast %"class.thrust::zip_iterator"* %zipped_result to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* call void @_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_(%"class.thrust::tuple"* sret %agg.tmp2, %"class.thrust::counting_iterator"* dereferenceable(8) %first, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_(%"class.thrust::zip_iterator"* sret %agg.tmp, %"class.thrust::tuple"* %agg.tmp2) call void @_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_(%"class.thrust::tuple"* sret %agg.tmp4, %"class.thrust::counting_iterator"* dereferenceable(8) %last, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_(%"class.thrust::zip_iterator"* sret %agg.tmp3, %"class.thrust::tuple"* %agg.tmp4) call void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIaLb0EEEEC2ES4_(%"struct.thrust::detail::unary_transform_functor"* %agg.tmp5) call void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPaEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_(%"class.thrust::zip_iterator"* sret %zipped_result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, %"class.thrust::zip_iterator"* %agg.tmp, %"class.thrust::zip_iterator"* %agg.tmp3) %call = call dereferenceable(16) %"class.thrust::tuple"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator"* %zipped_result) %3 = bitcast %"class.thrust::tuple"* %call to %"struct.thrust::detail::cons"* %call7 = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPaEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons"* dereferenceable(16) %3) %4 = bitcast %"class.thrust::detail::normal_iterator"* %retval to i8* %5 = bitcast %"class.thrust::detail::normal_iterator"* %call7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::zip_iterator"* %zipped_result to i8* call void @llvm.lifetime.end(i64 16, i8* %6) #5 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive8, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive9, align 8 ret i8* %7 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPaEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_(%"class.thrust::zip_iterator"* noalias sret %agg.result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"class.thrust::zip_iterator"* %first, %"class.thrust::zip_iterator"* %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::unary_transform_functor", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::unary_transform_functor", align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_(%"class.thrust::zip_iterator"* %agg.tmp, %"class.thrust::zip_iterator"* dereferenceable(16) %first) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_(%"class.thrust::zip_iterator"* %agg.tmp2, %"class.thrust::zip_iterator"* dereferenceable(16) %last) %2 = bitcast %"struct.thrust::detail::unary_transform_functor"* %agg.tmp3 to i8* %3 = bitcast %"struct.thrust::detail::unary_transform_functor"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPaEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_(%"class.thrust::zip_iterator"* sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"class.thrust::zip_iterator"* %agg.tmp, %"class.thrust::zip_iterator"* %agg.tmp2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_(%"class.thrust::zip_iterator"* noalias sret %agg.result, %"class.thrust::tuple"* %t) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::tuple", align 8 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple"* %agg.tmp, %"class.thrust::tuple"* dereferenceable(16) %t) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_(%"class.thrust::zip_iterator"* %agg.result, %"class.thrust::tuple"* %agg.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_(%"class.thrust::tuple"* noalias sret %agg.result, %"class.thrust::counting_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t1) #8 comdat { entry: %t0.addr = alloca %"class.thrust::counting_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 store %"class.thrust::counting_iterator"* %t0, %"class.thrust::counting_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator"* %t1, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8, !tbaa !7 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_(%"class.thrust::tuple"* %agg.result, %"class.thrust::counting_iterator"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIaLb0EEEEC2ES4_(%"struct.thrust::detail::unary_transform_functor"* %this) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.unittest::random_integer", align 1 %this.addr = alloca %"struct.thrust::detail::unary_transform_functor"*, align 8 store %"struct.thrust::detail::unary_transform_functor"* %this, %"struct.thrust::detail::unary_transform_functor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::unary_transform_functor"*, %"struct.thrust::detail::unary_transform_functor"** %this.addr, align 8 %f2 = getelementptr inbounds %"struct.thrust::detail::unary_transform_functor", %"struct.thrust::detail::unary_transform_functor"* %this1, i32 0, i32 0 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPaEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons"*, align 8 store %"struct.thrust::detail::cons"* %c, %"struct.thrust::detail::cons"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPaEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE(%"struct.thrust::detail::cons"* dereferenceable(16) %0) ret %"class.thrust::detail::normal_iterator"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::tuple"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator"*, align 8 store %"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator", %"class.thrust::zip_iterator"* %this1, i32 0, i32 0 ret %"class.thrust::tuple"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPaEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_(%"class.thrust::zip_iterator"* noalias sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"class.thrust::zip_iterator"* %first, %"class.thrust::zip_iterator"* %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::unary_transform_functor", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.93", align 1 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references", align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 %1 = bitcast %"struct.thrust::detail::wrapped_function.93"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEvEC2ERKS6_(%"struct.thrust::detail::wrapped_function.93"* %wrapped_f, %"struct.thrust::detail::unary_transform_functor"* dereferenceable(1) %f) br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = bitcast %"class.thrust::zip_iterator"* %first to %"class.thrust::iterator_facade.91"* %3 = bitcast %"class.thrust::zip_iterator"* %last to %"class.thrust::iterator_facade.91"* %call = call zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.91"* dereferenceable(1) %2, %"class.thrust::iterator_facade.91"* dereferenceable(1) %3) br i1 %call, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = bitcast %"class.thrust::zip_iterator"* %first to %"class.thrust::iterator_facade.91"* %call1 = call { i64, i8* } @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv(%"class.thrust::iterator_facade.91"* %4) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references", %"class.thrust::detail::tuple_of_iterator_references"* %ref.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %coerce.dive, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive2 to { i64, i8* }* %6 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %5, i32 0, i32 0 %7 = extractvalue { i64, i8* } %call1, 0 store i64 %7, i64* %6, align 8 %8 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %5, i32 0, i32 1 %9 = extractvalue { i64, i8* } %call1, 1 store i8* %9, i8** %8, align 8 call void @_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRaNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.93"* %wrapped_f, %"class.thrust::detail::tuple_of_iterator_references"* dereferenceable(16) %ref.tmp) br label %for.inc for.inc: ; preds = %for.body %10 = bitcast %"class.thrust::zip_iterator"* %first to %"class.thrust::iterator_facade.91"* %call3 = call dereferenceable(16) %"class.thrust::zip_iterator"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv(%"class.thrust::iterator_facade.91"* %10) br label %for.cond for.end: ; preds = %for.cond call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_(%"class.thrust::zip_iterator"* %agg.result, %"class.thrust::zip_iterator"* dereferenceable(16) %first) %11 = bitcast %"struct.thrust::detail::wrapped_function.93"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %11) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_(%"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator"*, align 8 %.addr = alloca %"class.thrust::zip_iterator"*, align 8 store %"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator"* %0, %"class.thrust::zip_iterator"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %this.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator"* %this1 to %"class.thrust::iterator_facade.91"* %2 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator"* %2 to %"class.thrust::iterator_facade.91"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator", %"class.thrust::zip_iterator"* %this1, i32 0, i32 0 %4 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %.addr, align 8 %m_iterator_tuple2 = getelementptr inbounds %"class.thrust::zip_iterator", %"class.thrust::zip_iterator"* %4, i32 0, i32 0 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple"* %m_iterator_tuple, %"class.thrust::tuple"* dereferenceable(16) %m_iterator_tuple2) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEvEC2ERKS6_(%"struct.thrust::detail::wrapped_function.93"* %this, %"struct.thrust::detail::unary_transform_functor"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.93"*, align 8 %f.addr = alloca %"struct.thrust::detail::unary_transform_functor"*, align 8 store %"struct.thrust::detail::wrapped_function.93"* %this, %"struct.thrust::detail::wrapped_function.93"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::unary_transform_functor"* %f, %"struct.thrust::detail::unary_transform_functor"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.93"*, %"struct.thrust::detail::wrapped_function.93"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.93", %"struct.thrust::detail::wrapped_function.93"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::unary_transform_functor"*, %"struct.thrust::detail::unary_transform_functor"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::unary_transform_functor"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::unary_transform_functor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.91"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.91"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.91"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.91"*, align 8 store %"class.thrust::iterator_facade.91"* %lhs, %"class.thrust::iterator_facade.91"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.91"* %rhs, %"class.thrust::iterator_facade.91"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.91"*, %"class.thrust::iterator_facade.91"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.91"* %0 to %"class.thrust::zip_iterator"* %2 = load %"class.thrust::iterator_facade.91"*, %"class.thrust::iterator_facade.91"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.91"* %2 to %"class.thrust::zip_iterator"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_(%"class.thrust::zip_iterator"* dereferenceable(16) %1, %"class.thrust::zip_iterator"* dereferenceable(16) %3) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIaLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRaNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.93"* %this, %"class.thrust::detail::tuple_of_iterator_references"* dereferenceable(16) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.93"*, align 8 %x.addr = alloca %"class.thrust::detail::tuple_of_iterator_references"*, align 8 %agg.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references", align 8 store %"struct.thrust::detail::wrapped_function.93"* %this, %"struct.thrust::detail::wrapped_function.93"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tuple_of_iterator_references"* %x, %"class.thrust::detail::tuple_of_iterator_references"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.93"*, %"struct.thrust::detail::wrapped_function.93"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.93", %"struct.thrust::detail::wrapped_function.93"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tuple_of_iterator_references"*, %"class.thrust::detail::tuple_of_iterator_references"** %x.addr, align 8 %call = call dereferenceable(16) %"class.thrust::detail::tuple_of_iterator_references"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRaNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_(%"class.thrust::detail::tuple_of_iterator_references"* dereferenceable(16) %0) %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::tuple_of_iterator_references"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::tuple_of_iterator_references"* %agg.tmp to { i64, i8* }* %4 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %3, i32 0, i32 0 %5 = load i64, i64* %4, align 8 %6 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %3, i32 0, i32 1 %7 = load i8*, i8** %6, align 8 call void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIaLb0EEEEclINS0_28tuple_of_iterator_referencesImRaNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_(%"struct.thrust::detail::unary_transform_functor"* %m_f, i64 %5, i8* %7) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv(%"class.thrust::iterator_facade.91"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references", align 8 %this.addr = alloca %"class.thrust::iterator_facade.91"*, align 8 store %"class.thrust::iterator_facade.91"* %this, %"class.thrust::iterator_facade.91"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.91"*, %"class.thrust::iterator_facade.91"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.91"* %this1) %call2 = call { i64, i8* } @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_(%"class.thrust::zip_iterator"* dereferenceable(16) %call) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references", %"class.thrust::detail::tuple_of_iterator_references"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %coerce.dive, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive3 to { i64, i8* }* %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 0 %2 = extractvalue { i64, i8* } %call2, 0 store i64 %2, i64* %1, align 8 %3 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 1 %4 = extractvalue { i64, i8* } %call2, 1 store i8* %4, i8** %3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references", %"class.thrust::detail::tuple_of_iterator_references"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %coerce.dive4, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive5 to { i64, i8* }* %6 = load { i64, i8* }, { i64, i8* }* %5, align 8 ret { i64, i8* } %6 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv(%"class.thrust::iterator_facade.91"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.91"*, align 8 store %"class.thrust::iterator_facade.91"* %this, %"class.thrust::iterator_facade.91"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.91"*, %"class.thrust::iterator_facade.91"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.91"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_(%"class.thrust::zip_iterator"* dereferenceable(16) %call) %call2 = call dereferenceable(16) %"class.thrust::zip_iterator"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.91"* %this1) ret %"class.thrust::zip_iterator"* %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_(%"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator"*, align 8 %.addr = alloca %"class.thrust::zip_iterator"*, align 8 store %"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator"* %0, %"class.thrust::zip_iterator"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %this.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator"* %this1 to %"class.thrust::iterator_facade.91"* %2 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator"* %2 to %"class.thrust::iterator_facade.91"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator", %"class.thrust::zip_iterator"* %this1, i32 0, i32 0 %4 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %.addr, align 8 %m_iterator_tuple2 = getelementptr inbounds %"class.thrust::zip_iterator", %"class.thrust::zip_iterator"* %4, i32 0, i32 0 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_(%"class.thrust::tuple"* %m_iterator_tuple, %"class.thrust::tuple"* dereferenceable(16) %m_iterator_tuple2) ret void } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_(%"class.thrust::zip_iterator"* dereferenceable(16) %f1, %"class.thrust::zip_iterator"* dereferenceable(16) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator"*, align 8 store %"class.thrust::zip_iterator"* %f1, %"class.thrust::zip_iterator"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator"* %f2, %"class.thrust::zip_iterator"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %f2.addr, align 8 %call = call zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator"* %0, %"class.thrust::zip_iterator"* dereferenceable(16) %1) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"* dereferenceable(16) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator"*, align 8 store %"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator"* %other, %"class.thrust::zip_iterator"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::tuple"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator"* %this1) %0 = bitcast %"class.thrust::tuple"* %call to %"struct.thrust::detail::cons"* %call2 = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPaEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons"* dereferenceable(16) %0) %1 = bitcast %"class.thrust::counting_iterator"* %call2 to %"class.thrust::iterator_facade.84"* %2 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %other.addr, align 8 %call3 = call dereferenceable(16) %"class.thrust::tuple"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator"* %2) %3 = bitcast %"class.thrust::tuple"* %call3 to %"struct.thrust::detail::cons"* %call4 = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPaEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons"* dereferenceable(16) %3) %4 = bitcast %"class.thrust::counting_iterator"* %call4 to %"class.thrust::iterator_facade.84"* %call5 = call zeroext i1 @_ZN6thrusteqINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxS3_mS4_S5_mxEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNS6_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.84"* dereferenceable(1) %1, %"class.thrust::iterator_facade.84"* dereferenceable(1) %4) ret i1 %call5 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrusteqINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxS3_mS4_S5_mxEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNS6_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.84"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.84"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.84"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.84"*, align 8 store %"class.thrust::iterator_facade.84"* %lhs, %"class.thrust::iterator_facade.84"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.84"* %rhs, %"class.thrust::iterator_facade.84"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.84"*, %"class.thrust::iterator_facade.84"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.84"* %0 to %"class.thrust::counting_iterator"* %2 = load %"class.thrust::iterator_facade.84"*, %"class.thrust::iterator_facade.84"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.84"* %2 to %"class.thrust::counting_iterator"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_17counting_iteratorImNS_11use_defaultES3_S3_EES4_EEbRKT_RKT0_(%"class.thrust::counting_iterator"* dereferenceable(8) %1, %"class.thrust::counting_iterator"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPaEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons"*, align 8 store %"struct.thrust::detail::cons"* %c, %"struct.thrust::detail::cons"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPaEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons"* dereferenceable(16) %0) ret %"class.thrust::counting_iterator"* %call } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_17counting_iteratorImNS_11use_defaultES3_S3_EES4_EEbRKT_RKT0_(%"class.thrust::counting_iterator"* dereferenceable(8) %f1, %"class.thrust::counting_iterator"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::counting_iterator"*, align 8 %f2.addr = alloca %"class.thrust::counting_iterator"*, align 8 store %"class.thrust::counting_iterator"* %f1, %"class.thrust::counting_iterator"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::counting_iterator"* %f2, %"class.thrust::counting_iterator"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %f1.addr, align 8 %1 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %f2.addr, align 8 %call = call zeroext i1 @_ZNK6thrust17counting_iteratorImNS_11use_defaultES1_S1_E5equalImS1_S1_S1_EEbRKNS0_IT_T0_T1_T2_EE(%"class.thrust::counting_iterator"* %0, %"class.thrust::counting_iterator"* dereferenceable(8) %1) ret i1 %call } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZNK6thrust17counting_iteratorImNS_11use_defaultES1_S1_E5equalImS1_S1_S1_EEbRKNS0_IT_T0_T1_T2_EE(%"class.thrust::counting_iterator"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::counting_iterator"*, align 8 %y.addr = alloca %"class.thrust::counting_iterator"*, align 8 store %"class.thrust::counting_iterator"* %this, %"class.thrust::counting_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %y, %"class.thrust::counting_iterator"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %this.addr, align 8 %0 = bitcast %"class.thrust::counting_iterator"* %this1 to %"class.thrust::iterator_adaptor.83"* %call = call dereferenceable(8) i64* @_ZNK6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE4baseEv(%"class.thrust::iterator_adaptor.83"* %0) %1 = load i64, i64* %call, align 8, !tbaa !13 %2 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %y.addr, align 8 %3 = bitcast %"class.thrust::counting_iterator"* %2 to %"class.thrust::iterator_adaptor.83"* %call2 = call dereferenceable(8) i64* @_ZNK6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE4baseEv(%"class.thrust::iterator_adaptor.83"* %3) %4 = load i64, i64* %call2, align 8, !tbaa !13 %call3 = call zeroext i1 @_ZN6thrust6detail23counting_iterator_equalIxmmvE5equalEmm(i64 %1, i64 %4) ret i1 %call3 } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZN6thrust6detail23counting_iterator_equalIxmmvE5equalEmm(i64 %x, i64 %y) #1 comdat align 2 { entry: %x.addr = alloca i64, align 8 %y.addr = alloca i64, align 8 store i64 %x, i64* %x.addr, align 8, !tbaa !13 store i64 %y, i64* %y.addr, align 8, !tbaa !13 %0 = load i64, i64* %x.addr, align 8, !tbaa !13 %1 = load i64, i64* %y.addr, align 8, !tbaa !13 %cmp = icmp eq i64 %0, %1 ret i1 %cmp } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i64* @_ZNK6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE4baseEv(%"class.thrust::iterator_adaptor.83"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.83"*, align 8 store %"class.thrust::iterator_adaptor.83"* %this, %"class.thrust::iterator_adaptor.83"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.83"*, %"class.thrust::iterator_adaptor.83"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.83", %"class.thrust::iterator_adaptor.83"* %this1, i32 0, i32 0 ret i64* %m_iterator } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPaEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons"*, align 8 store %"struct.thrust::detail::cons"* %t, %"struct.thrust::detail::cons"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %0, i32 0, i32 0 ret %"class.thrust::counting_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIaLb0EEEEclINS0_28tuple_of_iterator_referencesImRaNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_(%"struct.thrust::detail::unary_transform_functor"* %this, i64 %t.coerce0, i8* %t.coerce1) #8 comdat align 2 { entry: %t = alloca %"class.thrust::detail::tuple_of_iterator_references", align 8 %this.addr = alloca %"struct.thrust::detail::unary_transform_functor"*, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references"* %t to { i64, i8* }* %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 0 store i64 %t.coerce0, i64* %1, align 8 %2 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 1 store i8* %t.coerce1, i8** %2, align 8 store %"struct.thrust::detail::unary_transform_functor"* %this, %"struct.thrust::detail::unary_transform_functor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::unary_transform_functor"*, %"struct.thrust::detail::unary_transform_functor"** %this.addr, align 8 %f = getelementptr inbounds %"struct.thrust::detail::unary_transform_functor", %"struct.thrust::detail::unary_transform_functor"* %this1, i32 0, i32 0 %3 = bitcast %"class.thrust::detail::tuple_of_iterator_references"* %t to %"struct.thrust::detail::cons.95"* %call = call dereferenceable(8) i64* @_ZN6thrust3getILi0EmNS_6detail4consIRaNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.95"* dereferenceable(16) %3) %4 = load i64, i64* %call, align 8, !tbaa !13 %conv = trunc i64 %4 to i32 %call2 = call signext i8 @_ZNK8unittest14random_integerIaLb0EEclEj(%"struct.unittest::random_integer"* %f, i32 %conv) %5 = bitcast %"class.thrust::detail::tuple_of_iterator_references"* %t to %"struct.thrust::detail::cons.95"* %call3 = call dereferenceable(1) i8* @_ZN6thrust3getILi1EmNS_6detail4consIRaNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.95"* dereferenceable(16) %5) store i8 %call2, i8* %call3, align 1, !tbaa !7 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(16) %"class.thrust::detail::tuple_of_iterator_references"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRaNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_(%"class.thrust::detail::tuple_of_iterator_references"* dereferenceable(16) %ref) #8 comdat { entry: %ref.addr = alloca %"class.thrust::detail::tuple_of_iterator_references"*, align 8 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references"* %ref, %"class.thrust::detail::tuple_of_iterator_references"** %ref.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references"*, %"class.thrust::detail::tuple_of_iterator_references"** %ref.addr, align 8 store %"class.thrust::detail::tuple_of_iterator_references"* %0, %"class.thrust::detail::tuple_of_iterator_references"** %ref.tmp, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRaNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_(%"class.thrust::detail::tuple_of_iterator_references"** dereferenceable(8) %ref.tmp) ret %"class.thrust::detail::tuple_of_iterator_references"* %call } ; Function Attrs: uwtable define linkonce_odr signext i8 @_ZNK8unittest14random_integerIaLb0EEclEj(%"struct.unittest::random_integer"* %this, i32 %i) #0 comdat align 2 { entry: %this.addr = alloca %"struct.unittest::random_integer"*, align 8 %i.addr = alloca i32, align 4 %rng = alloca %"class.thrust::random::linear_congruential_engine", align 4 %dist = alloca %"class.thrust::random::uniform_int_distribution", align 1 store %"struct.unittest::random_integer"* %this, %"struct.unittest::random_integer"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"struct.unittest::random_integer"*, %"struct.unittest::random_integer"** %this.addr, align 8 %0 = bitcast %"class.thrust::random::linear_congruential_engine"* %rng to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %i.addr, align 4, !tbaa !11 %call = call i32 @_ZN8unittest4hashEj(i32 %1) call void @_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EEC2Ej(%"class.thrust::random::linear_congruential_engine"* %rng, i32 %call) %2 = bitcast %"class.thrust::random::uniform_int_distribution"* %dist to i8* call void @llvm.lifetime.start(i64 2, i8* %2) #5 call void @_ZN6thrust6random24uniform_int_distributionIaEC2Eaa(%"class.thrust::random::uniform_int_distribution"* %dist, i8 signext 0, i8 signext 127) %call2 = call signext i8 @_ZN6thrust6random24uniform_int_distributionIaEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEaRT_(%"class.thrust::random::uniform_int_distribution"* %dist, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %rng) %3 = bitcast %"class.thrust::random::uniform_int_distribution"* %dist to i8* call void @llvm.lifetime.end(i64 2, i8* %3) #5 %4 = bitcast %"class.thrust::random::linear_congruential_engine"* %rng to i8* call void @llvm.lifetime.end(i64 4, i8* %4) #5 ret i8 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) i64* @_ZN6thrust3getILi0EmNS_6detail4consIRaNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.95"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.95"*, align 8 store %"struct.thrust::detail::cons.95"* %c, %"struct.thrust::detail::cons.95"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.95"*, %"struct.thrust::detail::cons.95"** %c.addr, align 8 %call = call dereferenceable(8) i64* @_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRaNS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.95"* dereferenceable(16) %0) ret i64* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust3getILi1EmNS_6detail4consIRaNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.95"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.95"*, align 8 store %"struct.thrust::detail::cons.95"* %c, %"struct.thrust::detail::cons.95"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.95"*, %"struct.thrust::detail::cons.95"** %c.addr, align 8 %call = call dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi1EE3getIRamNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.95"* dereferenceable(16) %0) ret i8* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_ZN8unittest4hashEj(i32 %a) #9 comdat { entry: %a.addr = alloca i32, align 4 store i32 %a, i32* %a.addr, align 4, !tbaa !11 %0 = load i32, i32* %a.addr, align 4, !tbaa !11 %add = add i32 %0, 2127912214 %1 = load i32, i32* %a.addr, align 4, !tbaa !11 %shl = shl i32 %1, 12 %add1 = add i32 %add, %shl store i32 %add1, i32* %a.addr, align 4, !tbaa !11 %2 = load i32, i32* %a.addr, align 4, !tbaa !11 %xor = xor i32 %2, -949894596 %3 = load i32, i32* %a.addr, align 4, !tbaa !11 %shr = lshr i32 %3, 19 %xor2 = xor i32 %xor, %shr store i32 %xor2, i32* %a.addr, align 4, !tbaa !11 %4 = load i32, i32* %a.addr, align 4, !tbaa !11 %add3 = add i32 %4, 374761393 %5 = load i32, i32* %a.addr, align 4, !tbaa !11 %shl4 = shl i32 %5, 5 %add5 = add i32 %add3, %shl4 store i32 %add5, i32* %a.addr, align 4, !tbaa !11 %6 = load i32, i32* %a.addr, align 4, !tbaa !11 %add6 = add i32 %6, -744332180 %7 = load i32, i32* %a.addr, align 4, !tbaa !11 %shl7 = shl i32 %7, 9 %xor8 = xor i32 %add6, %shl7 store i32 %xor8, i32* %a.addr, align 4, !tbaa !11 %8 = load i32, i32* %a.addr, align 4, !tbaa !11 %add9 = add i32 %8, -42973499 %9 = load i32, i32* %a.addr, align 4, !tbaa !11 %shl10 = shl i32 %9, 3 %add11 = add i32 %add9, %shl10 store i32 %add11, i32* %a.addr, align 4, !tbaa !11 %10 = load i32, i32* %a.addr, align 4, !tbaa !11 %xor12 = xor i32 %10, -1252372727 %11 = load i32, i32* %a.addr, align 4, !tbaa !11 %shr13 = lshr i32 %11, 16 %xor14 = xor i32 %xor12, %shr13 store i32 %xor14, i32* %a.addr, align 4, !tbaa !11 %12 = load i32, i32* %a.addr, align 4, !tbaa !11 ret i32 %12 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EEC2Ej(%"class.thrust::random::linear_congruential_engine"* %this, i32 %s) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 %s.addr = alloca i32, align 4 store %"class.thrust::random::linear_congruential_engine"* %this, %"class.thrust::random::linear_congruential_engine"** %this.addr, align 8, !tbaa !1 store i32 %s, i32* %s.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %this.addr, align 8 %0 = load i32, i32* %s.addr, align 4, !tbaa !11 call void @_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EE4seedEj(%"class.thrust::random::linear_congruential_engine"* %this1, i32 %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6random24uniform_int_distributionIaEC2Eaa(%"class.thrust::random::uniform_int_distribution"* %this, i8 signext %a, i8 signext %b) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_int_distribution"*, align 8 %a.addr = alloca i8, align 1 %b.addr = alloca i8, align 1 store %"class.thrust::random::uniform_int_distribution"* %this, %"class.thrust::random::uniform_int_distribution"** %this.addr, align 8, !tbaa !1 store i8 %a, i8* %a.addr, align 1, !tbaa !7 store i8 %b, i8* %b.addr, align 1, !tbaa !7 %this1 = load %"class.thrust::random::uniform_int_distribution"*, %"class.thrust::random::uniform_int_distribution"** %this.addr, align 8 %m_param = getelementptr inbounds %"class.thrust::random::uniform_int_distribution", %"class.thrust::random::uniform_int_distribution"* %this1, i32 0, i32 0 call void @_ZN6thrust4pairIaaEC2ERKaS3_(%"struct.thrust::pair"* %m_param, i8* dereferenceable(1) %a.addr, i8* dereferenceable(1) %b.addr) ret void } ; Function Attrs: uwtable define linkonce_odr signext i8 @_ZN6thrust6random24uniform_int_distributionIaEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEaRT_(%"class.thrust::random::uniform_int_distribution"* %this, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %urng) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_int_distribution"*, align 8 %urng.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 store %"class.thrust::random::uniform_int_distribution"* %this, %"class.thrust::random::uniform_int_distribution"** %this.addr, align 8, !tbaa !1 store %"class.thrust::random::linear_congruential_engine"* %urng, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::random::uniform_int_distribution"*, %"class.thrust::random::uniform_int_distribution"** %this.addr, align 8 %0 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8 %m_param = getelementptr inbounds %"class.thrust::random::uniform_int_distribution", %"class.thrust::random::uniform_int_distribution"* %this1, i32 0, i32 0 %call = call signext i8 @_ZN6thrust6random24uniform_int_distributionIaEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEaRT_RKNS_4pairIaaEE(%"class.thrust::random::uniform_int_distribution"* %this1, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %0, %"struct.thrust::pair"* dereferenceable(2) %m_param) ret i8 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EE4seedEj(%"class.thrust::random::linear_congruential_engine"* %this, i32 %s) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 %s.addr = alloca i32, align 4 store %"class.thrust::random::linear_congruential_engine"* %this, %"class.thrust::random::linear_congruential_engine"** %this.addr, align 8, !tbaa !1 store i32 %s, i32* %s.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %this.addr, align 8 %call = call i32 @_ZN6thrust6random6detail3modIjLj1ELj0ELj2147483647EEET_S3_(i32 0) %cmp = icmp eq i32 %call, 0 br i1 %cmp, label %land.lhs.true, label %if.else land.lhs.true: ; preds = %entry %0 = load i32, i32* %s.addr, align 4, !tbaa !11 %call2 = call i32 @_ZN6thrust6random6detail3modIjLj1ELj0ELj2147483647EEET_S3_(i32 %0) %cmp3 = icmp eq i32 %call2, 0 br i1 %cmp3, label %if.then, label %if.else if.then: ; preds = %land.lhs.true %call4 = call i32 @_ZN6thrust6random6detail3modIjLj1ELj0ELj2147483647EEET_S3_(i32 1) %m_x = getelementptr inbounds %"class.thrust::random::linear_congruential_engine", %"class.thrust::random::linear_congruential_engine"* %this1, i32 0, i32 0 store i32 %call4, i32* %m_x, align 4, !tbaa !42 br label %if.end if.else: ; preds = %land.lhs.true, %entry %1 = load i32, i32* %s.addr, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust6random6detail3modIjLj1ELj0ELj2147483647EEET_S3_(i32 %1) %m_x6 = getelementptr inbounds %"class.thrust::random::linear_congruential_engine", %"class.thrust::random::linear_congruential_engine"* %this1, i32 0, i32 0 store i32 %call5, i32* %m_x6, align 4, !tbaa !42 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6random6detail3modIjLj1ELj0ELj2147483647EEET_S3_(i32 %x) #0 comdat { entry: %x.addr = alloca i32, align 4 %f = alloca %"struct.thrust::random::detail::static_mod", align 1 store i32 %x, i32* %x.addr, align 4, !tbaa !11 %0 = bitcast %"struct.thrust::random::detail::static_mod"* %f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = load i32, i32* %x.addr, align 4, !tbaa !11 %call = call i32 @_ZNK6thrust6random6detail10static_modIjLj1ELj0ELj2147483647ELb0EEclEj(%"struct.thrust::random::detail::static_mod"* %f, i32 %1) %2 = bitcast %"struct.thrust::random::detail::static_mod"* %f to i8* call void @llvm.lifetime.end(i64 1, i8* %2) #5 ret i32 %call } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6random6detail10static_modIjLj1ELj0ELj2147483647ELb0EEclEj(%"struct.thrust::random::detail::static_mod"* %this, i32 %x) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::random::detail::static_mod"*, align 8 %x.addr = alloca i32, align 4 store %"struct.thrust::random::detail::static_mod"* %this, %"struct.thrust::random::detail::static_mod"** %this.addr, align 8, !tbaa !1 store i32 %x, i32* %x.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::random::detail::static_mod"*, %"struct.thrust::random::detail::static_mod"** %this.addr, align 8 %0 = load i32, i32* %x.addr, align 4, !tbaa !11 %rem = urem i32 %0, 2147483647 store i32 %rem, i32* %x.addr, align 4, !tbaa !11 %1 = load i32, i32* %x.addr, align 4, !tbaa !11 ret i32 %1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairIaaEC2ERKaS3_(%"struct.thrust::pair"* %this, i8* dereferenceable(1) %x, i8* dereferenceable(1) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair"*, align 8 %x.addr = alloca i8*, align 8 %y.addr = alloca i8*, align 8 store %"struct.thrust::pair"* %this, %"struct.thrust::pair"** %this.addr, align 8, !tbaa !1 store i8* %x, i8** %x.addr, align 8, !tbaa !7 store i8* %y, i8** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %this1, i32 0, i32 0 %0 = load i8*, i8** %x.addr, align 8 %1 = load i8, i8* %0, align 1, !tbaa !7 store i8 %1, i8* %first, align 1, !tbaa !26 %second = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %this1, i32 0, i32 1 %2 = load i8*, i8** %y.addr, align 8 %3 = load i8, i8* %2, align 1, !tbaa !7 store i8 %3, i8* %second, align 1, !tbaa !29 ret void } ; Function Attrs: uwtable define linkonce_odr signext i8 @_ZN6thrust6random24uniform_int_distributionIaEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEaRT_RKNS_4pairIaaEE(%"class.thrust::random::uniform_int_distribution"* %this, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %urng, %"struct.thrust::pair"* dereferenceable(2) %parm) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_int_distribution"*, align 8 %urng.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 %parm.addr = alloca %"struct.thrust::pair"*, align 8 %real_min = alloca double, align 8 %real_max = alloca double, align 8 %real_dist = alloca %"class.thrust::random::uniform_real_distribution", align 8 store %"class.thrust::random::uniform_int_distribution"* %this, %"class.thrust::random::uniform_int_distribution"** %this.addr, align 8, !tbaa !1 store %"class.thrust::random::linear_congruential_engine"* %urng, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %parm, %"struct.thrust::pair"** %parm.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::random::uniform_int_distribution"*, %"class.thrust::random::uniform_int_distribution"** %this.addr, align 8 %0 = bitcast double* %real_min to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %parm.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %1, i32 0, i32 0 %2 = load i8, i8* %first, align 1, !tbaa !26 %conv = sitofp i8 %2 to double store double %conv, double* %real_min, align 8, !tbaa !44 %3 = bitcast double* %real_max to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %parm.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %4, i32 0, i32 1 %5 = load i8, i8* %second, align 1, !tbaa !29 %conv2 = sitofp i8 %5 to double store double %conv2, double* %real_max, align 8, !tbaa !44 %6 = bitcast %"class.thrust::random::uniform_real_distribution"* %real_dist to i8* call void @llvm.lifetime.start(i64 16, i8* %6) #5 %7 = load double, double* %real_min, align 8, !tbaa !44 %8 = load double, double* %real_max, align 8, !tbaa !44 %add = fadd double %8, 1.000000e+00 call void @_ZN6thrust6random25uniform_real_distributionIdEC2Edd(%"class.thrust::random::uniform_real_distribution"* %real_dist, double %7, double %add) %9 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8 %call = call double @_ZN6thrust6random25uniform_real_distributionIdEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEdRT_(%"class.thrust::random::uniform_real_distribution"* %real_dist, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %9) %conv3 = fptosi double %call to i8 %10 = bitcast %"class.thrust::random::uniform_real_distribution"* %real_dist to i8* call void @llvm.lifetime.end(i64 16, i8* %10) #5 %11 = bitcast double* %real_max to i8* call void @llvm.lifetime.end(i64 8, i8* %11) #5 %12 = bitcast double* %real_min to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret i8 %conv3 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6random25uniform_real_distributionIdEC2Edd(%"class.thrust::random::uniform_real_distribution"* %this, double %a, double %b) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_real_distribution"*, align 8 %a.addr = alloca double, align 8 %b.addr = alloca double, align 8 store %"class.thrust::random::uniform_real_distribution"* %this, %"class.thrust::random::uniform_real_distribution"** %this.addr, align 8, !tbaa !1 store double %a, double* %a.addr, align 8, !tbaa !44 store double %b, double* %b.addr, align 8, !tbaa !44 %this1 = load %"class.thrust::random::uniform_real_distribution"*, %"class.thrust::random::uniform_real_distribution"** %this.addr, align 8 %m_param = getelementptr inbounds %"class.thrust::random::uniform_real_distribution", %"class.thrust::random::uniform_real_distribution"* %this1, i32 0, i32 0 call void @_ZN6thrust4pairIddEC2ERKdS3_(%"struct.thrust::pair.97"* %m_param, double* dereferenceable(8) %a.addr, double* dereferenceable(8) %b.addr) ret void } ; Function Attrs: uwtable define linkonce_odr double @_ZN6thrust6random25uniform_real_distributionIdEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEdRT_(%"class.thrust::random::uniform_real_distribution"* %this, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %urng) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_real_distribution"*, align 8 %urng.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 store %"class.thrust::random::uniform_real_distribution"* %this, %"class.thrust::random::uniform_real_distribution"** %this.addr, align 8, !tbaa !1 store %"class.thrust::random::linear_congruential_engine"* %urng, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::random::uniform_real_distribution"*, %"class.thrust::random::uniform_real_distribution"** %this.addr, align 8 %0 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8 %m_param = getelementptr inbounds %"class.thrust::random::uniform_real_distribution", %"class.thrust::random::uniform_real_distribution"* %this1, i32 0, i32 0 %call = call double @_ZN6thrust6random25uniform_real_distributionIdEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEdRT_RKNS_4pairIddEE(%"class.thrust::random::uniform_real_distribution"* %this1, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %0, %"struct.thrust::pair.97"* dereferenceable(16) %m_param) ret double %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairIddEC2ERKdS3_(%"struct.thrust::pair.97"* %this, double* dereferenceable(8) %x, double* dereferenceable(8) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.97"*, align 8 %x.addr = alloca double*, align 8 %y.addr = alloca double*, align 8 store %"struct.thrust::pair.97"* %this, %"struct.thrust::pair.97"** %this.addr, align 8, !tbaa !1 store double* %x, double** %x.addr, align 8, !tbaa !7 store double* %y, double** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.97"*, %"struct.thrust::pair.97"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.97", %"struct.thrust::pair.97"* %this1, i32 0, i32 0 %0 = load double*, double** %x.addr, align 8 %1 = load double, double* %0, align 8, !tbaa !44 store double %1, double* %first, align 8, !tbaa !46 %second = getelementptr inbounds %"struct.thrust::pair.97", %"struct.thrust::pair.97"* %this1, i32 0, i32 1 %2 = load double*, double** %y.addr, align 8 %3 = load double, double* %2, align 8, !tbaa !44 store double %3, double* %second, align 8, !tbaa !48 ret void } ; Function Attrs: uwtable define linkonce_odr double @_ZN6thrust6random25uniform_real_distributionIdEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEdRT_RKNS_4pairIddEE(%"class.thrust::random::uniform_real_distribution"* %this, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %urng, %"struct.thrust::pair.97"* dereferenceable(16) %parm) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_real_distribution"*, align 8 %urng.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 %parm.addr = alloca %"struct.thrust::pair.97"*, align 8 %result = alloca double, align 8 store %"class.thrust::random::uniform_real_distribution"* %this, %"class.thrust::random::uniform_real_distribution"** %this.addr, align 8, !tbaa !1 store %"class.thrust::random::linear_congruential_engine"* %urng, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8, !tbaa !7 store %"struct.thrust::pair.97"* %parm, %"struct.thrust::pair.97"** %parm.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::random::uniform_real_distribution"*, %"class.thrust::random::uniform_real_distribution"** %this.addr, align 8 %0 = bitcast double* %result to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8 %call = call i32 @_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EEclEv(%"class.thrust::random::linear_congruential_engine"* %1) %sub = sub i32 %call, 1 %conv = uitofp i32 %sub to double store double %conv, double* %result, align 8, !tbaa !44 %2 = load double, double* %result, align 8, !tbaa !44 %div = fdiv double %2, 0x41DFFFFFFF800000 store double %div, double* %result, align 8, !tbaa !44 %3 = load double, double* %result, align 8, !tbaa !44 %4 = load %"struct.thrust::pair.97"*, %"struct.thrust::pair.97"** %parm.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair.97", %"struct.thrust::pair.97"* %4, i32 0, i32 1 %5 = load double, double* %second, align 8, !tbaa !48 %6 = load %"struct.thrust::pair.97"*, %"struct.thrust::pair.97"** %parm.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.97", %"struct.thrust::pair.97"* %6, i32 0, i32 0 %7 = load double, double* %first, align 8, !tbaa !46 %sub2 = fsub double %5, %7 %mul = fmul double %3, %sub2 %8 = load %"struct.thrust::pair.97"*, %"struct.thrust::pair.97"** %parm.addr, align 8 %first3 = getelementptr inbounds %"struct.thrust::pair.97", %"struct.thrust::pair.97"* %8, i32 0, i32 0 %9 = load double, double* %first3, align 8, !tbaa !46 %add = fadd double %mul, %9 %10 = bitcast double* %result to i8* call void @llvm.lifetime.end(i64 8, i8* %10) #5 ret double %add } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EEclEv(%"class.thrust::random::linear_congruential_engine"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 store %"class.thrust::random::linear_congruential_engine"* %this, %"class.thrust::random::linear_congruential_engine"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %this.addr, align 8 %m_x = getelementptr inbounds %"class.thrust::random::linear_congruential_engine", %"class.thrust::random::linear_congruential_engine"* %this1, i32 0, i32 0 %0 = load i32, i32* %m_x, align 4, !tbaa !42 %call = call i32 @_ZN6thrust6random6detail3modIjLj48271ELj0ELj2147483647EEET_S3_(i32 %0) %m_x2 = getelementptr inbounds %"class.thrust::random::linear_congruential_engine", %"class.thrust::random::linear_congruential_engine"* %this1, i32 0, i32 0 store i32 %call, i32* %m_x2, align 4, !tbaa !42 %m_x3 = getelementptr inbounds %"class.thrust::random::linear_congruential_engine", %"class.thrust::random::linear_congruential_engine"* %this1, i32 0, i32 0 %1 = load i32, i32* %m_x3, align 4, !tbaa !42 ret i32 %1 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6random6detail3modIjLj48271ELj0ELj2147483647EEET_S3_(i32 %x) #0 comdat { entry: %x.addr = alloca i32, align 4 %f = alloca %"struct.thrust::random::detail::static_mod.98", align 1 store i32 %x, i32* %x.addr, align 4, !tbaa !11 %0 = bitcast %"struct.thrust::random::detail::static_mod.98"* %f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = load i32, i32* %x.addr, align 4, !tbaa !11 %call = call i32 @_ZNK6thrust6random6detail10static_modIjLj48271ELj0ELj2147483647ELb0EEclEj(%"struct.thrust::random::detail::static_mod.98"* %f, i32 %1) %2 = bitcast %"struct.thrust::random::detail::static_mod.98"* %f to i8* call void @llvm.lifetime.end(i64 1, i8* %2) #5 ret i32 %call } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6random6detail10static_modIjLj48271ELj0ELj2147483647ELb0EEclEj(%"struct.thrust::random::detail::static_mod.98"* %this, i32 %x) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::random::detail::static_mod.98"*, align 8 %x.addr = alloca i32, align 4 %t1 = alloca i32, align 4 %t2 = alloca i32, align 4 store %"struct.thrust::random::detail::static_mod.98"* %this, %"struct.thrust::random::detail::static_mod.98"** %this.addr, align 8, !tbaa !1 store i32 %x, i32* %x.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::random::detail::static_mod.98"*, %"struct.thrust::random::detail::static_mod.98"** %this.addr, align 8 %0 = bitcast i32* %t1 to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %x.addr, align 4, !tbaa !11 %rem = urem i32 %1, 44488 %mul = mul i32 48271, %rem store i32 %mul, i32* %t1, align 4, !tbaa !11 %2 = bitcast i32* %t2 to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %3 = load i32, i32* %x.addr, align 4, !tbaa !11 %div = udiv i32 %3, 44488 %mul2 = mul i32 3399, %div store i32 %mul2, i32* %t2, align 4, !tbaa !11 %4 = load i32, i32* %t1, align 4, !tbaa !11 %5 = load i32, i32* %t2, align 4, !tbaa !11 %cmp = icmp uge i32 %4, %5 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %6 = load i32, i32* %t1, align 4, !tbaa !11 %7 = load i32, i32* %t2, align 4, !tbaa !11 %sub = sub i32 %6, %7 store i32 %sub, i32* %x.addr, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry %8 = load i32, i32* %t2, align 4, !tbaa !11 %sub3 = sub i32 2147483647, %8 %9 = load i32, i32* %t1, align 4, !tbaa !11 %add = add i32 %sub3, %9 store i32 %add, i32* %x.addr, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %10 = bitcast i32* %t2 to i8* call void @llvm.lifetime.end(i64 4, i8* %10) #5 %11 = bitcast i32* %t1 to i8* call void @llvm.lifetime.end(i64 4, i8* %11) #5 %12 = load i32, i32* %x.addr, align 4, !tbaa !11 ret i32 %12 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) i64* @_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRaNS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.95"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.95"*, align 8 store %"struct.thrust::detail::cons.95"* %t, %"struct.thrust::detail::cons.95"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.95"*, %"struct.thrust::detail::cons.95"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.95", %"struct.thrust::detail::cons.95"* %0, i32 0, i32 0 ret i64* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi1EE3getIRamNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.95"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.95"*, align 8 store %"struct.thrust::detail::cons.95"* %t, %"struct.thrust::detail::cons.95"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.95"*, %"struct.thrust::detail::cons.95"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.95", %"struct.thrust::detail::cons.95"* %0, i32 0, i32 1 %call = call dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi0EE3getIRaS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.96"* dereferenceable(8) %tail) ret i8* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi0EE3getIRaS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.96"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.96"*, align 8 store %"struct.thrust::detail::cons.96"* %t, %"struct.thrust::detail::cons.96"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.96"*, %"struct.thrust::detail::cons.96"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.96", %"struct.thrust::detail::cons.96"* %0, i32 0, i32 0 %ref = load i8*, i8** %head, align 8, !tbaa !7 ret i8* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRaNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_(%"class.thrust::detail::tuple_of_iterator_references"** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references"**, align 8 store %"class.thrust::detail::tuple_of_iterator_references"** %ptr, %"class.thrust::detail::tuple_of_iterator_references"*** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references"**, %"class.thrust::detail::tuple_of_iterator_references"*** %ptr.addr, align 8 %1 = load %"class.thrust::detail::tuple_of_iterator_references"*, %"class.thrust::detail::tuple_of_iterator_references"** %0, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRaNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_(%"class.thrust::detail::tuple_of_iterator_references"* %1) ret %"class.thrust::detail::tuple_of_iterator_references"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRaNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_(%"class.thrust::detail::tuple_of_iterator_references"* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references"* %ptr, %"class.thrust::detail::tuple_of_iterator_references"** %ptr.addr, align 8, !tbaa !1 %0 = load %"class.thrust::detail::tuple_of_iterator_references"*, %"class.thrust::detail::tuple_of_iterator_references"** %ptr.addr, align 8, !tbaa !1 ret %"class.thrust::detail::tuple_of_iterator_references"* %0 } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_(%"class.thrust::zip_iterator"* dereferenceable(16) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references", align 8 %f.addr = alloca %"class.thrust::zip_iterator"*, align 8 store %"class.thrust::zip_iterator"* %f, %"class.thrust::zip_iterator"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %f.addr, align 8 %call = call { i64, i8* } @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv(%"class.thrust::zip_iterator"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references", %"class.thrust::detail::tuple_of_iterator_references"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %coerce.dive, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive1 to { i64, i8* }* %2 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %1, i32 0, i32 0 %3 = extractvalue { i64, i8* } %call, 0 store i64 %3, i64* %2, align 8 %4 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %1, i32 0, i32 1 %5 = extractvalue { i64, i8* } %call, 1 store i8* %5, i8** %4, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references", %"class.thrust::detail::tuple_of_iterator_references"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %coerce.dive2, i32 0, i32 0 %6 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive3 to { i64, i8* }* %7 = load { i64, i8* }, { i64, i8* }* %6, align 8 ret { i64, i8* } %7 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.91"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.91"*, align 8 store %"class.thrust::iterator_facade.91"* %this, %"class.thrust::iterator_facade.91"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.91"*, %"class.thrust::iterator_facade.91"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.91"* %this1 to %"class.thrust::zip_iterator"* ret %"class.thrust::zip_iterator"* %0 } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv(%"class.thrust::zip_iterator"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references", align 8 %this.addr = alloca %"class.thrust::zip_iterator"*, align 8 %ref.tmp = alloca %"class.thrust::tuple.94", align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::tuple"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator"* %this1) %call2 = call { i64, i8* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_(%"class.thrust::tuple"* dereferenceable(16) %call) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %ref.tmp, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive to { i64, i8* }* %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 0 %2 = extractvalue { i64, i8* } %call2, 0 store i64 %2, i64* %1, align 8 %3 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 1 %4 = extractvalue { i64, i8* } %call2, 1 store i8* %4, i8** %3, align 8 call void @_ZN6thrust6detail28tuple_of_iterator_referencesImRaNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE(%"class.thrust::detail::tuple_of_iterator_references"* %retval, %"class.thrust::tuple.94"* dereferenceable(16) %ref.tmp) %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references", %"class.thrust::detail::tuple_of_iterator_references"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %coerce.dive3, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive4 to { i64, i8* }* %6 = load { i64, i8* }, { i64, i8* }* %5, align 8 ret { i64, i8* } %6 } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_(%"class.thrust::tuple"* dereferenceable(16) %t) #0 comdat { entry: %retval = alloca %"class.thrust::tuple.94", align 8 %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::tuple"* %t, %"class.thrust::tuple"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %t.addr, align 8 %call = call { i64, i8* } @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_(%"class.thrust::tuple"* dereferenceable(16) %0) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %retval, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive to { i64, i8* }* %2 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %1, i32 0, i32 0 %3 = extractvalue { i64, i8* } %call, 0 store i64 %3, i64* %2, align 8 %4 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %1, i32 0, i32 1 %5 = extractvalue { i64, i8* } %call, 1 store i8* %5, i8** %4, align 8 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %retval, i32 0, i32 0 %6 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive1 to { i64, i8* }* %7 = load { i64, i8* }, { i64, i8* }* %6, align 8 ret { i64, i8* } %7 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail28tuple_of_iterator_referencesImRaNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE(%"class.thrust::detail::tuple_of_iterator_references"* %this, %"class.thrust::tuple.94"* dereferenceable(16) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tuple_of_iterator_references"*, align 8 %other.addr = alloca %"class.thrust::tuple.94"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references"* %this, %"class.thrust::detail::tuple_of_iterator_references"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.94"* %other, %"class.thrust::tuple.94"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::tuple_of_iterator_references"*, %"class.thrust::detail::tuple_of_iterator_references"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references"* %this1 to %"class.thrust::tuple.94"* %1 = load %"class.thrust::tuple.94"*, %"class.thrust::tuple.94"** %other.addr, align 8 %2 = bitcast %"class.thrust::tuple.94"* %0 to i8* %3 = bitcast %"class.thrust::tuple.94"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 16, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_(%"class.thrust::tuple"* dereferenceable(16) %t) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::tuple.94", align 8 %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple"*, align 8 %ref.tmp = alloca i64, align 8 store %"class.thrust::tuple"* %t, %"class.thrust::tuple"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple"* %0 to %"struct.thrust::detail::cons"* %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPaEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons"* dereferenceable(16) %1) %call1 = call i64 @_ZN6thrust6detail20dereference_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::counting_iterator"* dereferenceable(8) %call) store i64 %call1, i64* %ref.tmp, align 8, !tbaa !13 %2 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple"* %2 to %"struct.thrust::detail::cons"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPaEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons"* dereferenceable(16) %3) %call3 = call dereferenceable(1) i8* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPaEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %call2) call void @_ZN6thrust5tupleImRaNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_(%"class.thrust::tuple.94"* %retval, i64* dereferenceable(8) %ref.tmp, i8* dereferenceable(1) %call3) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.94", %"class.thrust::tuple.94"* %retval, i32 0, i32 0 %4 = bitcast %"struct.thrust::detail::cons.95"* %coerce.dive to { i64, i8* }* %5 = load { i64, i8* }, { i64, i8* }* %4, align 8 ret { i64, i8* } %5 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6detail20dereference_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %it) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::dereference_iterator"*, align 8 %it.addr = alloca %"class.thrust::counting_iterator"*, align 8 store %"struct.thrust::detail::dereference_iterator"* %this, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %it, %"class.thrust::counting_iterator"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::dereference_iterator"*, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %it.addr, align 8 %1 = bitcast %"class.thrust::counting_iterator"* %0 to %"class.thrust::iterator_facade.84"* %call = call i64 @_ZNK6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxEdeEv(%"class.thrust::iterator_facade.84"* %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPaEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %this, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %it) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::dereference_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 store %"struct.thrust::detail::dereference_iterator"* %this, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator"* %it, %"class.thrust::detail::normal_iterator"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::dereference_iterator"*, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator"* %0 to %"class.thrust::iterator_facade"* %call = call dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEdeEv(%"class.thrust::iterator_facade"* %1) ret i8* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleImRaNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_(%"class.thrust::tuple.94"* %this, i64* dereferenceable(8) %t0, i8* dereferenceable(1) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.94"*, align 8 %t0.addr = alloca i64*, align 8 %t1.addr = alloca i8*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.94"* %this, %"class.thrust::tuple.94"** %this.addr, align 8, !tbaa !1 store i64* %t0, i64** %t0.addr, align 8, !tbaa !7 store i8* %t1, i8** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.94"*, %"class.thrust::tuple.94"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.94"* %this1 to %"struct.thrust::detail::cons.95"* %1 = load i64*, i64** %t0.addr, align 8 %2 = load i8*, i8** %t1.addr, align 8 call void @_ZN6thrust6detail4consImNS1_IRaNS_9null_typeEEEEC2IKmaKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.95"* %0, i64* dereferenceable(8) %1, i8* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxEdeEv(%"class.thrust::iterator_facade.84"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.84"*, align 8 store %"class.thrust::iterator_facade.84"* %this, %"class.thrust::iterator_facade.84"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.84"*, %"class.thrust::iterator_facade.84"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZNK6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxE7derivedEv(%"class.thrust::iterator_facade.84"* %this1) %call2 = call i64 @_ZN6thrust20iterator_core_access11dereferenceINS_17counting_iteratorImNS_11use_defaultES3_S3_EEEENT_9referenceERKS5_(%"class.thrust::counting_iterator"* dereferenceable(8) %call) ret i64 %call2 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access11dereferenceINS_17counting_iteratorImNS_11use_defaultES3_S3_EEEENT_9referenceERKS5_(%"class.thrust::counting_iterator"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::counting_iterator"*, align 8 store %"class.thrust::counting_iterator"* %f, %"class.thrust::counting_iterator"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %f.addr, align 8 %call = call i64 @_ZNK6thrust17counting_iteratorImNS_11use_defaultES1_S1_E11dereferenceEv(%"class.thrust::counting_iterator"* %0) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZNK6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxE7derivedEv(%"class.thrust::iterator_facade.84"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.84"*, align 8 store %"class.thrust::iterator_facade.84"* %this, %"class.thrust::iterator_facade.84"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.84"*, %"class.thrust::iterator_facade.84"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.84"* %this1 to %"class.thrust::counting_iterator"* ret %"class.thrust::counting_iterator"* %0 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust17counting_iteratorImNS_11use_defaultES1_S1_E11dereferenceEv(%"class.thrust::counting_iterator"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::counting_iterator"*, align 8 store %"class.thrust::counting_iterator"* %this, %"class.thrust::counting_iterator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %this.addr, align 8 %0 = bitcast %"class.thrust::counting_iterator"* %this1 to %"class.thrust::iterator_adaptor.83"* %call = call dereferenceable(8) i64* @_ZNK6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE14base_referenceEv(%"class.thrust::iterator_adaptor.83"* %0) %1 = load i64, i64* %call, align 8, !tbaa !13 ret i64 %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i64* @_ZNK6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE14base_referenceEv(%"class.thrust::iterator_adaptor.83"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.83"*, align 8 store %"class.thrust::iterator_adaptor.83"* %this, %"class.thrust::iterator_adaptor.83"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.83"*, %"class.thrust::iterator_adaptor.83"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.83", %"class.thrust::iterator_adaptor.83"* %this1, i32 0, i32 0 ret i64* %m_iterator } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEdeEv(%"class.thrust::iterator_facade"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade"*, align 8 store %"class.thrust::iterator_facade"* %this, %"class.thrust::iterator_facade"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalE7derivedEv(%"class.thrust::iterator_facade"* %this1) %call2 = call dereferenceable(1) i8* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPaEEEENT_9referenceERKS6_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %call) ret i8* %call2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPaEEEENT_9referenceERKS6_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 store %"class.thrust::detail::normal_iterator"* %f, %"class.thrust::detail::normal_iterator"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator"* %0 to %"class.thrust::iterator_adaptor"* %call = call dereferenceable(1) i8* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv(%"class.thrust::iterator_adaptor"* %1) ret i8* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalE7derivedEv(%"class.thrust::iterator_facade"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade"*, align 8 store %"class.thrust::iterator_facade"* %this, %"class.thrust::iterator_facade"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade"* %this1 to %"class.thrust::detail::normal_iterator"* ret %"class.thrust::detail::normal_iterator"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) i8* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv(%"class.thrust::iterator_adaptor"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor"*, align 8 store %"class.thrust::iterator_adaptor"* %this, %"class.thrust::iterator_adaptor"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor"*, %"class.thrust::iterator_adaptor"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %this1, i32 0, i32 0 %0 = load i8*, i8** %m_iterator, align 8, !tbaa !36 ret i8* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consImNS1_IRaNS_9null_typeEEEEC2IKmaKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.95"* %this, i64* dereferenceable(8) %t1, i8* dereferenceable(1) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.95"*, align 8 %t1.addr = alloca i64*, align 8 %t2.addr = alloca i8*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.95"* %this, %"struct.thrust::detail::cons.95"** %this.addr, align 8, !tbaa !1 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 store i8* %t2, i8** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.95"*, %"struct.thrust::detail::cons.95"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.95", %"struct.thrust::detail::cons.95"* %this1, i32 0, i32 0 %0 = load i64*, i64** %t1.addr, align 8 %1 = load i64, i64* %0, align 8, !tbaa !13 store i64 %1, i64* %head, align 8, !tbaa !49 %tail = getelementptr inbounds %"struct.thrust::detail::cons.95", %"struct.thrust::detail::cons.95"* %this1, i32 0, i32 1 %2 = load i8*, i8** %t2.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRaNS_9null_typeEEC2IaEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.96"* %tail, i8* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIRaNS_9null_typeEEC2IaEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.96"* %this, i8* dereferenceable(1) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.96"*, align 8 %t1.addr = alloca i8*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.96"* %this, %"struct.thrust::detail::cons.96"** %this.addr, align 8, !tbaa !1 store i8* %t1, i8** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.96"*, %"struct.thrust::detail::cons.96"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.96", %"struct.thrust::detail::cons.96"* %this9, i32 0, i32 0 %9 = load i8*, i8** %t1.addr, align 8 store i8* %9, i8** %head, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPaEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_(%"class.thrust::zip_iterator"* dereferenceable(16) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator"*, align 8 store %"class.thrust::zip_iterator"* %f, %"class.thrust::zip_iterator"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %f.addr, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv(%"class.thrust::zip_iterator"* %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImaSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRaSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.91"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.91"*, align 8 store %"class.thrust::iterator_facade.91"* %this, %"class.thrust::iterator_facade.91"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.91"*, %"class.thrust::iterator_facade.91"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.91"* %this1 to %"class.thrust::zip_iterator"* ret %"class.thrust::zip_iterator"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv(%"class.thrust::zip_iterator"* %this) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator", %"class.thrust::zip_iterator"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_(%"class.thrust::tuple"* dereferenceable(16) %m_iterator_tuple) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPaEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_(%"class.thrust::tuple"* dereferenceable(16) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"class.thrust::tuple"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::tuple"* %t, %"class.thrust::tuple"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple"* %0 to %"struct.thrust::detail::cons"* %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons"* %1) call void @_ZN6thrust6detail18increment_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::counting_iterator"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple"* %2 to %"struct.thrust::detail::cons"* %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.92"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons"* %3) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPaEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_(%"struct.thrust::detail::cons.92"* dereferenceable(8) %call1) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18increment_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEEvRT_(%"struct.thrust::detail::increment_iterator"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::increment_iterator"*, align 8 %it.addr = alloca %"class.thrust::counting_iterator"*, align 8 store %"struct.thrust::detail::increment_iterator"* %this, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %it, %"class.thrust::counting_iterator"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::increment_iterator"*, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %it.addr, align 8 %1 = bitcast %"class.thrust::counting_iterator"* %0 to %"class.thrust::iterator_facade.84"* %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxEppEv(%"class.thrust::iterator_facade.84"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons"*, align 8 store %"struct.thrust::detail::cons"* %this, %"struct.thrust::detail::cons"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %this1, i32 0, i32 0 ret %"class.thrust::counting_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPaEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_(%"struct.thrust::detail::cons.92"* dereferenceable(8) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"struct.thrust::detail::cons.92"*, align 8 %agg.tmp = alloca %"struct.thrust::null_type", align 1 %undef.agg.tmp = alloca %"struct.thrust::null_type", align 1 %agg.tmp1 = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp2 = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"struct.thrust::detail::cons.92"* %t, %"struct.thrust::detail::cons.92"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.92"*, %"struct.thrust::detail::cons.92"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.92"* %0) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPaEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.92"*, %"struct.thrust::detail::cons.92"** %t.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.92"* %1) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_18increment_iteratorEEET_NS_9null_typeES4_() ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.92"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons"*, align 8 store %"struct.thrust::detail::cons"* %this, %"struct.thrust::detail::cons"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.92"* %tail } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxEppEv(%"class.thrust::iterator_facade.84"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.84"*, align 8 store %"class.thrust::iterator_facade.84"* %this, %"class.thrust::iterator_facade.84"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.84"*, %"class.thrust::iterator_facade.84"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxE7derivedEv(%"class.thrust::iterator_facade.84"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_17counting_iteratorImNS_11use_defaultES3_S3_EEEEvRT_(%"class.thrust::counting_iterator"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxE7derivedEv(%"class.thrust::iterator_facade.84"* %this1) ret %"class.thrust::counting_iterator"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_17counting_iteratorImNS_11use_defaultES3_S3_EEEEvRT_(%"class.thrust::counting_iterator"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::counting_iterator"*, align 8 store %"class.thrust::counting_iterator"* %f, %"class.thrust::counting_iterator"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %f.addr, align 8 %1 = bitcast %"class.thrust::counting_iterator"* %0 to %"class.thrust::iterator_adaptor.83"* call void @_ZN6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE9incrementEv(%"class.thrust::iterator_adaptor.83"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust15iterator_facadeINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxE7derivedEv(%"class.thrust::iterator_facade.84"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.84"*, align 8 store %"class.thrust::iterator_facade.84"* %this, %"class.thrust::iterator_facade.84"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.84"*, %"class.thrust::iterator_facade.84"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.84"* %this1 to %"class.thrust::counting_iterator"* ret %"class.thrust::counting_iterator"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxE9incrementEv(%"class.thrust::iterator_adaptor.83"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.83"*, align 8 store %"class.thrust::iterator_adaptor.83"* %this, %"class.thrust::iterator_adaptor.83"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.83"*, %"class.thrust::iterator_adaptor.83"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.83", %"class.thrust::iterator_adaptor.83"* %this1, i32 0, i32 0 %0 = load i64, i64* %m_iterator, align 8, !tbaa !52 %inc = add i64 %0, 1 store i64 %inc, i64* %m_iterator, align 8, !tbaa !52 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPaEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %this, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::increment_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 store %"struct.thrust::detail::increment_iterator"* %this, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator"* %it, %"class.thrust::detail::normal_iterator"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::increment_iterator"*, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator"* %0 to %"class.thrust::iterator_facade"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEppEv(%"class.thrust::iterator_facade"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.92"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.92"*, align 8 store %"struct.thrust::detail::cons.92"* %this, %"struct.thrust::detail::cons.92"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.92"*, %"struct.thrust::detail::cons.92"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.92", %"struct.thrust::detail::cons.92"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_18increment_iteratorEEET_NS_9null_typeES4_() #9 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %0 = alloca %"struct.thrust::null_type", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.92"* %this) #9 comdat align 2 { entry: %retval = alloca %"struct.thrust::null_type", align 1 %this.addr = alloca %"struct.thrust::detail::cons.92"*, align 8 store %"struct.thrust::detail::cons.92"* %this, %"struct.thrust::detail::cons.92"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.92"*, %"struct.thrust::detail::cons.92"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEppEv(%"class.thrust::iterator_facade"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade"*, align 8 store %"class.thrust::iterator_facade"* %this, %"class.thrust::iterator_facade"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalE7derivedEv(%"class.thrust::iterator_facade"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPaEEEEvRT_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalE7derivedEv(%"class.thrust::iterator_facade"* %this1) ret %"class.thrust::detail::normal_iterator"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPaEEEEvRT_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 store %"class.thrust::detail::normal_iterator"* %f, %"class.thrust::detail::normal_iterator"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator"* %0 to %"class.thrust::iterator_adaptor"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv(%"class.thrust::iterator_adaptor"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalE7derivedEv(%"class.thrust::iterator_facade"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade"*, align 8 store %"class.thrust::iterator_facade"* %this, %"class.thrust::iterator_facade"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade"* %this1 to %"class.thrust::detail::normal_iterator"* ret %"class.thrust::detail::normal_iterator"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv(%"class.thrust::iterator_adaptor"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor"*, align 8 store %"class.thrust::iterator_adaptor"* %this, %"class.thrust::iterator_adaptor"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor"*, %"class.thrust::iterator_adaptor"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %this1, i32 0, i32 0 %0 = load i8*, i8** %m_iterator, align 8, !tbaa !36 %incdec.ptr = getelementptr inbounds i8, i8* %0, i32 1 store i8* %incdec.ptr, i8** %m_iterator, align 8, !tbaa !36 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_(%"class.thrust::tuple"* %this, %"class.thrust::tuple"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple"*, align 8 %.addr = alloca %"class.thrust::tuple"*, align 8 store %"class.thrust::tuple"* %this, %"class.thrust::tuple"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple"* %0, %"class.thrust::tuple"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %this.addr, align 8 %1 = bitcast %"class.thrust::tuple"* %this1 to %"struct.thrust::detail::cons"* %2 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %.addr, align 8 %3 = bitcast %"class.thrust::tuple"* %2 to %"struct.thrust::detail::cons"* call void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEEC2ERKSA_(%"struct.thrust::detail::cons"* %1, %"struct.thrust::detail::cons"* dereferenceable(16) %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEEC2ERKSA_(%"struct.thrust::detail::cons"* %this, %"struct.thrust::detail::cons"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons"*, align 8 %.addr = alloca %"struct.thrust::detail::cons"*, align 8 store %"struct.thrust::detail::cons"* %this, %"struct.thrust::detail::cons"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::cons"* %0, %"struct.thrust::detail::cons"** %.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %.addr, align 8 %head2 = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %1, i32 0, i32 0 call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %head, %"class.thrust::counting_iterator"* dereferenceable(8) %head2) %tail = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %this1, i32 0, i32 1 %2 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %.addr, align 8 %tail3 = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %2, i32 0, i32 1 %3 = bitcast %"struct.thrust::detail::cons.92"* %tail to i8* %4 = bitcast %"struct.thrust::detail::cons.92"* %tail3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple"* %this, %"class.thrust::tuple"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple"*, align 8 %.addr = alloca %"class.thrust::tuple"*, align 8 store %"class.thrust::tuple"* %this, %"class.thrust::tuple"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple"* %0, %"class.thrust::tuple"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %this.addr, align 8 %1 = bitcast %"class.thrust::tuple"* %this1 to %"struct.thrust::detail::cons"* %2 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %.addr, align 8 %3 = bitcast %"class.thrust::tuple"* %2 to %"struct.thrust::detail::cons"* call void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEEC2ERKSA_(%"struct.thrust::detail::cons"* %1, %"struct.thrust::detail::cons"* dereferenceable(16) %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPaEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_(%"class.thrust::zip_iterator"* %this, %"class.thrust::tuple"* %iterator_tuple) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator"*, align 8 store %"class.thrust::zip_iterator"* %this, %"class.thrust::zip_iterator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator"*, %"class.thrust::zip_iterator"** %this.addr, align 8 %0 = bitcast %"class.thrust::zip_iterator"* %this1 to %"class.thrust::iterator_facade.91"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator", %"class.thrust::zip_iterator"* %this1, i32 0, i32 0 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple"* %m_iterator_tuple, %"class.thrust::tuple"* dereferenceable(16) %iterator_tuple) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPaEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_(%"class.thrust::tuple"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple"*, align 8 %t0.addr = alloca %"class.thrust::counting_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple"* %this, %"class.thrust::tuple"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %t0, %"class.thrust::counting_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator"* %t1, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple"*, %"class.thrust::tuple"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple"* %this1 to %"struct.thrust::detail::cons"* %1 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8 call void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons"* %0, %"class.thrust::counting_iterator"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPaEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons"*, align 8 %t1.addr = alloca %"class.thrust::counting_iterator"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons"* %this, %"struct.thrust::detail::cons"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %t1, %"class.thrust::counting_iterator"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator"* %t2, %"class.thrust::detail::normal_iterator"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %this1, i32 0, i32 0 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %t1.addr, align 8 call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %head, %"class.thrust::counting_iterator"* dereferenceable(8) %0) %tail = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %this1, i32 0, i32 1 %1 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_(%"struct.thrust::detail::cons.92"* %tail, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_(%"struct.thrust::detail::cons.92"* %this, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.92"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.92"* %this, %"struct.thrust::detail::cons.92"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator"* %t1, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.92"*, %"struct.thrust::detail::cons.92"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.92", %"struct.thrust::detail::cons.92"* %this9, i32 0, i32 0 %9 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8 %10 = bitcast %"class.thrust::detail::normal_iterator"* %head to i8* %11 = bitcast %"class.thrust::detail::normal_iterator"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPaEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE(%"struct.thrust::detail::cons"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons"*, align 8 store %"struct.thrust::detail::cons"* %t, %"struct.thrust::detail::cons"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons"*, %"struct.thrust::detail::cons"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons", %"struct.thrust::detail::cons"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPaEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.92"* dereferenceable(8) %tail) ret %"class.thrust::detail::normal_iterator"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPaEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.92"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.92"*, align 8 store %"struct.thrust::detail::cons.92"* %t, %"struct.thrust::detail::cons.92"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.92"*, %"struct.thrust::detail::cons.92"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.92", %"struct.thrust::detail::cons.92"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator"* %head } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic20select_system_detail10min_systemINS_14any_system_tagENS0_3cpp6detail3tagEEENS_6detail9enable_ifIXsr6thrust6detail7is_sameIT0_NS9_14minimum_systemIT_SB_NS9_19minimum_type_detail14any_conversionESF_SF_SF_SF_SF_SF_SF_SF_SF_SF_SF_SF_SF_E4typeEEE5valueERSB_E4typeERNS_16execution_policyISD_EERNSL_ISB_EE(%"struct.thrust::execution_policy.89"* dereferenceable(1), %"struct.thrust::execution_policy.88"* dereferenceable(1) %system2) #1 comdat { entry: %.addr = alloca %"struct.thrust::execution_policy.89"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 store %"struct.thrust::execution_policy.89"* %0, %"struct.thrust::execution_policy.89"** %.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %system2, %"struct.thrust::execution_policy.88"** %system2.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2) ret %"struct.thrust::system::cpp::detail::tag"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmmNS_14any_system_tagENS_27random_access_traversal_tagEmxEC2ERKm(%"class.thrust::iterator_adaptor.83"* %this, i64* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.83"*, align 8 %iter.addr = alloca i64*, align 8 store %"class.thrust::iterator_adaptor.83"* %this, %"class.thrust::iterator_adaptor.83"** %this.addr, align 8, !tbaa !1 store i64* %iter, i64** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.83"*, %"class.thrust::iterator_adaptor.83"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.83"* %this1 to %"class.thrust::iterator_facade.84"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.83", %"class.thrust::iterator_adaptor.83"* %this1, i32 0, i32 0 %1 = load i64*, i64** %iter.addr, align 8 %2 = load i64, i64* %1, align 8, !tbaa !13 store i64 %2, i64* %m_iterator, align 8, !tbaa !52 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EEC2Em(%"class.thrust::detail::vector_base.46"* %this, i64 %n) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.std::allocator.48", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::vector_base.46"* %this, %"class.thrust::detail::vector_base.46"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 0 call void @_ZNSaIN6thrust4pairIaaEEEC2Ev(%"class.std::allocator.48"* %ref.tmp) #5 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EEC2ERKS4_(%"class.thrust::detail::contiguous_storage.47"* %m_storage, %"class.std::allocator.48"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void bitcast (void (%"class.__gnu_cxx::new_allocator.49"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEED2Ev to void (%"class.std::allocator.48"*)*)(%"class.std::allocator.48"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !54 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE12default_initEm(%"class.thrust::detail::vector_base.46"* %this1, i64 %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.49"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEED2Ev to void (%"class.std::allocator.48"*)*)(%"class.std::allocator.48"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EED2Ev(%"class.thrust::detail::contiguous_storage.47"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val4 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val4 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIN6thrust4pairIaaEEEC2Ev(%"class.std::allocator.48"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.48"*, align 8 store %"class.std::allocator.48"* %this, %"class.std::allocator.48"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.48"* %this1 to %"class.__gnu_cxx::new_allocator.49"* call void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEEC2Ev(%"class.__gnu_cxx::new_allocator.49"* %0) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EEC2ERKS4_(%"class.thrust::detail::contiguous_storage.47"* %this, %"class.std::allocator.48"* dereferenceable(1) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.47"*, align 8 %alloc.addr = alloca %"class.std::allocator.48"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.47"* %this, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.48"* %alloc, %"class.std::allocator.48"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.47"*, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 0 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %alloc.addr, align 8 call void @_ZNSaIN6thrust4pairIaaEEEC2ERKS2_(%"class.std::allocator.48"* %m_allocator, %"class.std::allocator.48"* dereferenceable(1) %0) #5 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 1 invoke void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIaaEEEC2ES4_(%"class.thrust::detail::normal_iterator.51"* %m_begin, %"struct.thrust::pair"* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !59 ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.49"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEED2Ev to void (%"class.std::allocator.48"*)*)(%"class.std::allocator.48"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEED2Ev(%"class.__gnu_cxx::new_allocator.49"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.49"*, align 8 store %"class.__gnu_cxx::new_allocator.49"* %this, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.49"*, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE12default_initEm(%"class.thrust::detail::vector_base.46"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.51", align 8 store %"class.thrust::detail::vector_base.46"* %this, %"class.thrust::detail::vector_base.46"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE8allocateEm(%"class.thrust::detail::contiguous_storage.47"* %m_storage, i64 %1) %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 1 store i64 %2, i64* %m_size, align 8, !tbaa !54 %m_storage2 = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 0 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive3, align 8 %call4 = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE4sizeEv(%"class.thrust::detail::vector_base.46"* %this1) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive5, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE19default_construct_nENS0_15normal_iteratorIPS3_EEm(%"class.thrust::detail::contiguous_storage.47"* %m_storage2, %"struct.thrust::pair"* %3, i64 %call4) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EED2Ev(%"class.thrust::detail::contiguous_storage.47"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.47"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.47"* %this, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.47"*, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE10deallocateEv(%"class.thrust::detail::contiguous_storage.47"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.49"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEED2Ev to void (%"class.std::allocator.48"*)*)(%"class.std::allocator.48"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.49"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEED2Ev to void (%"class.std::allocator.48"*)*)(%"class.std::allocator.48"* %m_allocator2) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEEC2Ev(%"class.__gnu_cxx::new_allocator.49"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.49"*, align 8 store %"class.__gnu_cxx::new_allocator.49"* %this, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.49"*, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIN6thrust4pairIaaEEEC2ERKS2_(%"class.std::allocator.48"* %this, %"class.std::allocator.48"* dereferenceable(1) %__a) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.48"*, align 8 %__a.addr = alloca %"class.std::allocator.48"*, align 8 store %"class.std::allocator.48"* %this, %"class.std::allocator.48"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.48"* %__a, %"class.std::allocator.48"** %__a.addr, align 8, !tbaa !7 %this1 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.48"* %this1 to %"class.__gnu_cxx::new_allocator.49"* %1 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %__a.addr, align 8 %2 = bitcast %"class.std::allocator.48"* %1 to %"class.__gnu_cxx::new_allocator.49"* call void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEEC2ERKS4_(%"class.__gnu_cxx::new_allocator.49"* %0, %"class.__gnu_cxx::new_allocator.49"* dereferenceable(1) %2) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIaaEEEC2ES4_(%"class.thrust::detail::normal_iterator.51"* %this, %"struct.thrust::pair"* %p) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %p.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.thrust::detail::normal_iterator.51"* %this, %"class.thrust::detail::normal_iterator.51"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %p, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.51"* %this1 to %"class.thrust::iterator_adaptor.52"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_EC2ERKS5_(%"class.thrust::iterator_adaptor.52"* %0, %"struct.thrust::pair"** dereferenceable(8) %p.addr) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEEC2ERKS4_(%"class.__gnu_cxx::new_allocator.49"* %this, %"class.__gnu_cxx::new_allocator.49"* dereferenceable(1)) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.49"*, align 8 %.addr = alloca %"class.__gnu_cxx::new_allocator.49"*, align 8 store %"class.__gnu_cxx::new_allocator.49"* %this, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8, !tbaa !1 store %"class.__gnu_cxx::new_allocator.49"* %0, %"class.__gnu_cxx::new_allocator.49"** %.addr, align 8, !tbaa !7 %this1 = load %"class.__gnu_cxx::new_allocator.49"*, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_EC2ERKS5_(%"class.thrust::iterator_adaptor.52"* %this, %"struct.thrust::pair"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.52"*, align 8 %iter.addr = alloca %"struct.thrust::pair"**, align 8 store %"class.thrust::iterator_adaptor.52"* %this, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"** %iter, %"struct.thrust::pair"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.52"*, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.52"* %this1 to %"class.thrust::iterator_facade.53"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"**, %"struct.thrust::pair"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %1, align 8, !tbaa !1 store %"struct.thrust::pair"* %2, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !60 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE8allocateEm(%"class.thrust::detail::contiguous_storage.47"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.47"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.51", align 8 %ref.tmp3 = alloca %"class.thrust::detail::normal_iterator.51", align 8 store %"class.thrust::detail::contiguous_storage.47"* %this, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.47"*, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE8allocateERS4_m(%"class.std::allocator.48"* dereferenceable(1) %m_allocator, i64 %1) call void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIaaEEEC2ES4_(%"class.thrust::detail::normal_iterator.51"* %ref.tmp, %"struct.thrust::pair"* %call) %2 = bitcast %"class.thrust::detail::normal_iterator.51"* %m_begin to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.51"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 2 store i64 %4, i64* %m_size, align 8, !tbaa !59 br label %if.end if.else: ; preds = %entry %m_begin2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIaaEEEC2ES4_(%"class.thrust::detail::normal_iterator.51"* %ref.tmp3, %"struct.thrust::pair"* null) %5 = bitcast %"class.thrust::detail::normal_iterator.51"* %m_begin2 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.51"* %ref.tmp3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 2 store i64 0, i64* %m_size4, align 8, !tbaa !59 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE19default_construct_nENS0_15normal_iteratorIPS3_EEm(%"class.thrust::detail::contiguous_storage.47"* %this, %"struct.thrust::pair"* %first.coerce, i64 %n) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.51", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.47"*, align 8 %n.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"class.thrust::detail::contiguous_storage.47"* %this, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::contiguous_storage.47"*, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this2, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.51"* %first to %"class.thrust::iterator_adaptor.52"* %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.52"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23default_construct_rangeISaINS_4pairIaaEEEPS3_mEEvRT_T0_T1_(%"class.std::allocator.48"* dereferenceable(1) %m_allocator, %"struct.thrust::pair"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE4sizeEv(%"class.thrust::detail::vector_base.46"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 store %"class.thrust::detail::vector_base.46"* %this, %"class.thrust::detail::vector_base.46"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 1 %0 = load i64, i64* %m_size, align 8, !tbaa !54 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE8allocateERS4_m(%"class.std::allocator.48"* dereferenceable(1) %a, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE8allocateERS4_mEN19workaround_warnings8allocateES6_m(%"class.std::allocator.48"* dereferenceable(1) %0, i64 %1) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE8allocateERS4_mEN19workaround_warnings8allocateES6_m(%"class.std::allocator.48"* dereferenceable(1) %a, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.48"* %0 to %"class.__gnu_cxx::new_allocator.49"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.49"* %1, i64 %2, i8* null) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.49"* %this, i64 %__n, i8*) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.49"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator.49"* %this, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8, !tbaa !1 store i64 %__n, i64* %__n.addr, align 8, !tbaa !13 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.49"*, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8, !tbaa !13 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.49"* %this1) #5 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #15 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8, !tbaa !13 %mul = mul i64 %2, 2 %call2 = call i8* @_Znwm(i64 %mul) %3 = bitcast i8* %call2 to %"struct.thrust::pair"* ret %"struct.thrust::pair"* %3 } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.49"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.49"*, align 8 store %"class.__gnu_cxx::new_allocator.49"* %this, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.49"*, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8 ret i64 9223372036854775807 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23default_construct_rangeISaINS_4pairIaaEEEPS3_mEEvRT_T0_T1_(%"class.std::allocator.48"* dereferenceable(1) %a, %"struct.thrust::pair"* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %p.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %p, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaINS_4pairIaaEEEPS4_mEENS0_9enable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS8_SA_T1_(%"class.std::allocator.48"* dereferenceable(1) %0, %"struct.thrust::pair"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.52"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.52"*, align 8 store %"class.thrust::iterator_adaptor.52"* %this, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.52"*, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %this1, i32 0, i32 0 ret %"struct.thrust::pair"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaINS_4pairIaaEEEPS4_mEENS0_9enable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS8_SA_T1_(%"class.std::allocator.48"* dereferenceable(1) %a, %"struct.thrust::pair"* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %p.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %p, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemISaINS_4pairIaaEEEE3getERS4_(%"class.std::allocator.48"* dereferenceable(1) %0) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.85"* %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEC2ERS5_(%"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %agg.tmp, %"class.std::allocator.48"* dereferenceable(1) %4) %coerce.dive = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %agg.tmp, i32 0, i32 0 %5 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %coerce.dive, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIaaEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS6_EEEEET0_RKNS8_21execution_policy_baseIT_EESD_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, %"struct.thrust::pair"* %2, i64 %3, %"class.std::allocator.48"* %5) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIaaEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS6_EEEEET0_RKNS8_21execution_policy_baseIT_EESD_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first, i64 %n, %"class.std::allocator.48"* %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %f, i32 0, i32 0 store %"class.std::allocator.48"* %f.coerce, %"class.std::allocator.48"** %coerce.dive, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %first, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %agg.tmp to i8* %5 = bitcast %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false), !tbaa.struct !62 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %agg.tmp, i32 0, i32 0 %6 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %coerce.dive2, align 8 %call3 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIaaEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS8_EEEEET0_RNS2_16execution_policyIT_EESF_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"struct.thrust::pair"* %2, i64 %3, %"class.std::allocator.48"* %6) ret %"struct.thrust::pair"* %call3 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_systemISaINS_4pairIaaEEEE3getERS4_(%"class.std::allocator.48"* dereferenceable(1) %a) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.48"*, align 8 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail6systemISaINS_4pairIaaEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS7_E4typeEE4typeERS7_(%"class.std::allocator.48"* dereferenceable(1) %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEC2ERS5_(%"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %this, %"class.std::allocator.48"* dereferenceable(1) %a) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"*, align 8 %a.addr = alloca %"class.std::allocator.48"*, align 8 store %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %this, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"*, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"** %this.addr, align 8 %a2 = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %this1, i32 0, i32 0 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 store %"class.std::allocator.48"* %0, %"class.std::allocator.48"** %a2, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIaaEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS8_EEEEET0_RNS2_16execution_policyIT_EESF_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"struct.thrust::pair"* %first, i64 %n, %"class.std::allocator.48"* %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", align 8 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %first.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.99", align 8 %i = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %f, i32 0, i32 0 store %"class.std::allocator.48"* %f.coerce, %"class.std::allocator.48"** %coerce.dive, align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %first, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = bitcast %"struct.thrust::detail::wrapped_function.99"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEEvEC2ERKS7_(%"struct.thrust::detail::wrapped_function.99"* %wrapped_f, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* dereferenceable(8) %f) %2 = bitcast i64* %i to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 store i64 0, i64* %i, align 8, !tbaa !13 br label %for.cond for.cond: ; preds = %for.inc, %entry %3 = load i64, i64* %i, align 8, !tbaa !13 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ne i64 %3, %4 br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %5 = bitcast i64* %i to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 br label %for.end for.body: ; preds = %for.cond %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 call void @_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEEvEclIS5_EEvRT_(%"struct.thrust::detail::wrapped_function.99"* %wrapped_f, %"struct.thrust::pair"* dereferenceable(2) %6) %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 %incdec.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %7, i32 1 store %"struct.thrust::pair"* %incdec.ptr, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 br label %for.inc for.inc: ; preds = %for.body %8 = load i64, i64* %i, align 8, !tbaa !13 %inc = add i64 %8, 1 store i64 %inc, i64* %i, align 8, !tbaa !13 br label %for.cond for.end: ; preds = %for.cond.cleanup %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 %10 = bitcast %"struct.thrust::detail::wrapped_function.99"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 8, i8* %10) #5 ret %"struct.thrust::pair"* %9 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEEvEC2ERKS7_(%"struct.thrust::detail::wrapped_function.99"* %this, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* dereferenceable(8) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.99"*, align 8 %f.addr = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"*, align 8 store %"struct.thrust::detail::wrapped_function.99"* %this, %"struct.thrust::detail::wrapped_function.99"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %f, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.99"*, %"struct.thrust::detail::wrapped_function.99"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.99", %"struct.thrust::detail::wrapped_function.99"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"*, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false), !tbaa.struct !62 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEEvEclIS5_EEvRT_(%"struct.thrust::detail::wrapped_function.99"* %this, %"struct.thrust::pair"* dereferenceable(2) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.99"*, align 8 %x.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::detail::wrapped_function.99"* %this, %"struct.thrust::detail::wrapped_function.99"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %x, %"struct.thrust::pair"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.99"*, %"struct.thrust::detail::wrapped_function.99"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.99", %"struct.thrust::detail::wrapped_function.99"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %x.addr, align 8 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust18raw_reference_castINS_4pairIaaEEEENS_6detail13raw_referenceIT_E4typeERS5_(%"struct.thrust::pair"* dereferenceable(2) %0) call void @_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEclIS4_EEvRT_(%"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %m_f, %"struct.thrust::pair"* dereferenceable(2) %call) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIaaEEEEclIS4_EEvRT_(%"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %this, %"struct.thrust::pair"* dereferenceable(2) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"*, align 8 %x.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %this, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %x, %"struct.thrust::pair"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"*, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"** %this.addr, align 8 %a = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator"* %this1, i32 0, i32 0 %ref = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a, align 8, !tbaa !7 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %x.addr, align 8 call void @_ZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE9constructIS3_EEvRS4_PT_(%"class.std::allocator.48"* dereferenceable(1) %ref, %"struct.thrust::pair"* %0) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust18raw_reference_castINS_4pairIaaEEEENS_6detail13raw_referenceIT_E4typeERS5_(%"struct.thrust::pair"* dereferenceable(2) %ref) #8 comdat { entry: %ref.addr = alloca %"struct.thrust::pair"*, align 8 %ref.tmp = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::pair"* %ref, %"struct.thrust::pair"** %ref.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %ref.addr, align 8 store %"struct.thrust::pair"* %0, %"struct.thrust::pair"** %ref.tmp, align 8, !tbaa !1 %call = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castIPNS_4pairIaaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS6_(%"struct.thrust::pair"** dereferenceable(8) %ref.tmp) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE9constructIS3_EEvRS4_PT_(%"class.std::allocator.48"* dereferenceable(1) %a, %"struct.thrust::pair"* %p) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %p.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %p, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 call void @_ZN6thrust6detail23allocator_traits_detail9constructISaINS_4pairIaaEEES4_EENS0_9enable_ifIXsr21has_member_construct1IT_T0_EE5valueEvE4typeERS7_PS8_(%"class.std::allocator.48"* dereferenceable(1) %0, %"struct.thrust::pair"* %1) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail9constructISaINS_4pairIaaEEES4_EENS0_9enable_ifIXsr21has_member_construct1IT_T0_EE5valueEvE4typeERS7_PS8_(%"class.std::allocator.48"* dereferenceable(1) %a, %"struct.thrust::pair"* %p) #8 comdat { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %p.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %p, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.48"* %0 to %"class.__gnu_cxx::new_allocator.49"* %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 call void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE9constructIS3_JEEEvPT_DpOT0_(%"class.__gnu_cxx::new_allocator.49"* %1, %"struct.thrust::pair"* %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE9constructIS3_JEEEvPT_DpOT0_(%"class.__gnu_cxx::new_allocator.49"* %this, %"struct.thrust::pair"* %__p) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.49"*, align 8 %__p.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.__gnu_cxx::new_allocator.49"* %this, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %__p, %"struct.thrust::pair"** %__p.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.49"*, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %__p.addr, align 8, !tbaa !1 %1 = bitcast %"struct.thrust::pair"* %0 to i8* %2 = bitcast i8* %1 to %"struct.thrust::pair"* call void @_ZN6thrust4pairIaaEC2Ev(%"struct.thrust::pair"* %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust4pairIaaEC2Ev(%"struct.thrust::pair"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::pair"* %this, %"struct.thrust::pair"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %this1, i32 0, i32 0 store i8 0, i8* %first, align 1, !tbaa !26 %second = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %this1, i32 0, i32 1 store i8 0, i8* %second, align 1, !tbaa !29 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castIPNS_4pairIaaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS6_(%"struct.thrust::pair"** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"struct.thrust::pair"**, align 8 store %"struct.thrust::pair"** %ptr, %"struct.thrust::pair"*** %ptr.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::pair"**, %"struct.thrust::pair"*** %ptr.addr, align 8 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %0, align 8, !tbaa !1 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsIPNS_4pairIaaEEE3getES4_(%"struct.thrust::pair"* %1) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsIPNS_4pairIaaEEE3getES4_(%"struct.thrust::pair"* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::pair"* %ptr, %"struct.thrust::pair"** %ptr.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %ptr.addr, align 8, !tbaa !1 ret %"struct.thrust::pair"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail6systemISaINS_4pairIaaEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS7_E4typeEE4typeERS7_(%"class.std::allocator.48"* dereferenceable(1) %a) #1 comdat { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.48"*, align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE10deallocateEv(%"class.thrust::detail::contiguous_storage.47"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.47"*, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.51", align 8 store %"class.thrust::detail::contiguous_storage.47"* %this, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.47"*, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE4sizeEv(%"class.thrust::detail::contiguous_storage.47"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.51"* %m_begin to %"class.thrust::iterator_adaptor.52"* %call2 = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.52"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call2, align 8, !tbaa !1 %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE4sizeEv(%"class.thrust::detail::contiguous_storage.47"* %this1) call void @_ZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE10deallocateERS4_PS3_m(%"class.std::allocator.48"* dereferenceable(1) %m_allocator, %"struct.thrust::pair"* %1, i64 %call3) %m_begin4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIaaEEEC2ES4_(%"class.thrust::detail::normal_iterator.51"* %ref.tmp, %"struct.thrust::pair"* null) %2 = bitcast %"class.thrust::detail::normal_iterator.51"* %m_begin4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.51"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !59 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE4sizeEv(%"class.thrust::detail::contiguous_storage.47"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.47"*, align 8 store %"class.thrust::detail::contiguous_storage.47"* %this, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.47"*, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !59 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE10deallocateERS4_PS3_m(%"class.std::allocator.48"* dereferenceable(1) %a, %"struct.thrust::pair"* %p, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %p.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %p, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE10deallocateERS4_PS3_mEN19workaround_warnings10deallocateES6_S7_m(%"class.std::allocator.48"* dereferenceable(1) %0, %"struct.thrust::pair"* %1, i64 %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsISaINS_4pairIaaEEEE10deallocateERS4_PS3_mEN19workaround_warnings10deallocateES6_S7_m(%"class.std::allocator.48"* dereferenceable(1) %a, %"struct.thrust::pair"* %p, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %p.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %p, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.48"* %0 to %"class.__gnu_cxx::new_allocator.49"* %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE10deallocateEPS3_m(%"class.__gnu_cxx::new_allocator.49"* %1, %"struct.thrust::pair"* %2, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIaaEEE10deallocateEPS3_m(%"class.__gnu_cxx::new_allocator.49"* %this, %"struct.thrust::pair"* %__p, i64) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.49"*, align 8 %__p.addr = alloca %"struct.thrust::pair"*, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator.49"* %this, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %__p, %"struct.thrust::pair"** %__p.addr, align 8, !tbaa !1 store i64 %0, i64* %.addr, align 8, !tbaa !13 %this1 = load %"class.__gnu_cxx::new_allocator.49"*, %"class.__gnu_cxx::new_allocator.49"** %this.addr, align 8 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %__p.addr, align 8, !tbaa !1 %2 = bitcast %"struct.thrust::pair"* %1 to i8* call void @_ZdlPv(i8* %2) #5 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPaEES8_NS6_IPNS_4pairIaaEEEE17make_pair_functorEET2_RKNS5_21execution_policy_baseIT_EET0_SK_T1_SE_T3_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first1.coerce, i8* %last1.coerce, i8* %first2.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.51", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator", align 8 %result = alloca %"class.thrust::detail::normal_iterator.51", align 8 %op = alloca %struct.make_pair_functor, align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp12 = alloca %struct.make_pair_functor, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive2, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive4, i32 0, i32 0 store i8* %first2.coerce, i8** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call8 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call8 to %"struct.thrust::execution_policy.88"* %2 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp9 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp10 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::detail::normal_iterator.51"* %agg.tmp11 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.51"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive13, i32 0, i32 0 %10 = load i8*, i8** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp9, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive15, i32 0, i32 0 %11 = load i8*, i8** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp10, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive17, i32 0, i32 0 %12 = load i8*, i8** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp11, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive19, i32 0, i32 0 %13 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive20, align 8 %call21 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPaEESA_NS8_IPNS_4pairIaaEEEE17make_pair_functorEET2_RNS_16execution_policyIT_EET0_SL_T1_SG_T3_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i8* %10, i8* %11, i8* %12, %"struct.thrust::pair"* %13) %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive22, i32 0, i32 0 store %"struct.thrust::pair"* %call21, %"struct.thrust::pair"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive24, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive25, align 8 ret %"struct.thrust::pair"* %14 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system2, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system3) #0 comdat { entry: %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system3.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %system2, %"struct.thrust::execution_policy.88"** %system2.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %system3, %"struct.thrust::execution_policy.88"** %system3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"struct.thrust::execution_policy.88"* dereferenceable(1) %1) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::execution_policy.88"* %3 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system3.addr, align 8 %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %2, %"struct.thrust::execution_policy.88"* dereferenceable(1) %3) ret %"struct.thrust::system::cpp::detail::tag"* %call1 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPaEESA_NS8_IPNS_4pairIaaEEEE17make_pair_functorEET2_RNS_16execution_policyIT_EET0_SL_T1_SG_T3_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i8* %first1.coerce, i8* %last1.coerce, i8* %first2.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.51", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator", align 8 %result = alloca %"class.thrust::detail::normal_iterator.51", align 8 %op = alloca %struct.make_pair_functor, align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %zipped_result = alloca %"class.thrust::zip_iterator.100", align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.100", align 8 %agg.tmp8 = alloca %"class.thrust::tuple.102", align 8 %agg.tmp9 = alloca %"class.thrust::zip_iterator.100", align 8 %agg.tmp10 = alloca %"class.thrust::tuple.102", align 8 %agg.tmp11 = alloca %"struct.thrust::detail::binary_transform_functor", align 1 %agg.tmp12 = alloca %struct.make_pair_functor, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive2, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive4, i32 0, i32 0 store i8* %first2.coerce, i8** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %0 = bitcast %"class.thrust::zip_iterator.100"* %zipped_result to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESD_SD_SD_SD_SD_SD_E4typeERKSA_RKSB_RKSC_(%"class.thrust::tuple.102"* sret %agg.tmp8, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %first1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS_12zip_iteratorIT_EESD_(%"class.thrust::zip_iterator.100"* sret %agg.tmp, %"class.thrust::tuple.102"* byval align 8 %agg.tmp8) call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESD_SD_SD_SD_SD_SD_E4typeERKSA_RKSB_RKSC_(%"class.thrust::tuple.102"* sret %agg.tmp10, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %last1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS_12zip_iteratorIT_EESD_(%"class.thrust::zip_iterator.100"* sret %agg.tmp9, %"class.thrust::tuple.102"* byval align 8 %agg.tmp10) call void @_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEC2ES2_(%"struct.thrust::detail::binary_transform_functor"* %agg.tmp11) call void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEESA_NS8_IPNS_4pairIaaEEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS7_24binary_transform_functorI17make_pair_functorEEEET0_RKNS7_21execution_policy_baseIT_EESL_SL_T1_(%"class.thrust::zip_iterator.100"* sret %zipped_result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, %"class.thrust::zip_iterator.100"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.100"* byval align 8 %agg.tmp9) %call = call dereferenceable(24) %"class.thrust::tuple.102"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.100"* %zipped_result) %3 = bitcast %"class.thrust::tuple.102"* %call to %"struct.thrust::detail::cons.103"* %call13 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.103"* dereferenceable(24) %3) %4 = bitcast %"class.thrust::detail::normal_iterator.51"* %retval to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.51"* %call13 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::zip_iterator.100"* %zipped_result to i8* call void @llvm.lifetime.end(i64 24, i8* %6) #5 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive14, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 ret %"struct.thrust::pair"* %7 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEESA_NS8_IPNS_4pairIaaEEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS7_24binary_transform_functorI17make_pair_functorEEEET0_RKNS7_21execution_policy_baseIT_EESL_SL_T1_(%"class.thrust::zip_iterator.100"* noalias sret %agg.result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.100"* byval align 8 %first, %"class.thrust::zip_iterator.100"* byval align 8 %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.100", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.100", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor", align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = bitcast %"class.thrust::zip_iterator.100"* %agg.tmp to i8* %3 = bitcast %"class.thrust::zip_iterator.100"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %4 = bitcast %"class.thrust::zip_iterator.100"* %agg.tmp2 to i8* %5 = bitcast %"class.thrust::zip_iterator.100"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 8, i1 false) %6 = bitcast %"struct.thrust::detail::binary_transform_functor"* %agg.tmp3 to i8* %7 = bitcast %"struct.thrust::detail::binary_transform_functor"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEESC_NSA_IPNS_4pairIaaEEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEENS9_24binary_transform_functorI17make_pair_functorEEEET0_RNS2_16execution_policyIT_EESN_SN_T1_(%"class.thrust::zip_iterator.100"* sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"class.thrust::zip_iterator.100"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.100"* byval align 8 %agg.tmp2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS_12zip_iteratorIT_EESD_(%"class.thrust::zip_iterator.100"* noalias sret %agg.result, %"class.thrust::tuple.102"* byval align 8 %t) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::tuple.102", align 8 %0 = bitcast %"class.thrust::tuple.102"* %agg.tmp to i8* %1 = bitcast %"class.thrust::tuple.102"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEC2ESB_(%"class.thrust::zip_iterator.100"* %agg.result, %"class.thrust::tuple.102"* byval align 8 %agg.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESD_SD_SD_SD_SD_SD_E4typeERKSA_RKSB_RKSC_(%"class.thrust::tuple.102"* noalias sret %agg.result, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %t2) #8 comdat { entry: %t0.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 store %"class.thrust::detail::normal_iterator"* %t0, %"class.thrust::detail::normal_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator"* %t1, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.51"* %t2, %"class.thrust::detail::normal_iterator.51"** %t2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %t2.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEENS_9null_typeES9_S9_S9_S9_S9_S9_EC2ERKS4_SC_RKS8_(%"class.thrust::tuple.102"* %agg.result, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEC2ES2_(%"struct.thrust::detail::binary_transform_functor"* %this) unnamed_addr #1 comdat align 2 { entry: %f = alloca %struct.make_pair_functor, align 1 %this.addr = alloca %"struct.thrust::detail::binary_transform_functor"*, align 8 store %"struct.thrust::detail::binary_transform_functor"* %this, %"struct.thrust::detail::binary_transform_functor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::binary_transform_functor"*, %"struct.thrust::detail::binary_transform_functor"** %this.addr, align 8 %f2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor", %"struct.thrust::detail::binary_transform_functor"* %this1, i32 0, i32 0 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.103"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.103"*, align 8 store %"struct.thrust::detail::cons.103"* %c, %"struct.thrust::detail::cons.103"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.103"*, %"struct.thrust::detail::cons.103"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorIPNS_4pairIaaEEEENS4_IPaEENS0_4consISC_NSD_IS8_NS_9null_typeEEEEEEET_RKNSD_IT0_T1_EE(%"struct.thrust::detail::cons.103"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.51"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::tuple.102"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.100"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 store %"class.thrust::zip_iterator.100"* %this, %"class.thrust::zip_iterator.100"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.100", %"class.thrust::zip_iterator.100"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.102"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEESC_NSA_IPNS_4pairIaaEEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEENS9_24binary_transform_functorI17make_pair_functorEEEET0_RNS2_16execution_policyIT_EESN_SN_T1_(%"class.thrust::zip_iterator.100"* noalias sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"class.thrust::zip_iterator.100"* byval align 8 %first, %"class.thrust::zip_iterator.100"* byval align 8 %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.106", align 1 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.107", align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 %1 = bitcast %"struct.thrust::detail::wrapped_function.106"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEC2ERKS4_(%"struct.thrust::detail::wrapped_function.106"* %wrapped_f, %"struct.thrust::detail::binary_transform_functor"* dereferenceable(1) %f) br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = bitcast %"class.thrust::zip_iterator.100"* %first to %"class.thrust::iterator_facade.101"* %3 = bitcast %"class.thrust::zip_iterator.100"* %last to %"class.thrust::iterator_facade.101"* %call = call zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElSD_SE_SI_SJ_SN_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSO_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.101"* dereferenceable(1) %2, %"class.thrust::iterator_facade.101"* dereferenceable(1) %3) br i1 %call, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = bitcast %"class.thrust::zip_iterator.100"* %first to %"class.thrust::iterator_facade.101"* call void @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEdeEv(%"class.thrust::detail::tuple_of_iterator_references.107"* sret %ref.tmp, %"class.thrust::iterator_facade.101"* %4) call void @_ZNK6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEclINS0_28tuple_of_iterator_referencesIRaS8_RNS_4pairIaaEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.106"* %wrapped_f, %"class.thrust::detail::tuple_of_iterator_references.107"* dereferenceable(24) %ref.tmp) br label %for.inc for.inc: ; preds = %for.body %5 = bitcast %"class.thrust::zip_iterator.100"* %first to %"class.thrust::iterator_facade.101"* %call1 = call dereferenceable(24) %"class.thrust::zip_iterator.100"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEppEv(%"class.thrust::iterator_facade.101"* %5) br label %for.cond for.end: ; preds = %for.cond %6 = bitcast %"class.thrust::zip_iterator.100"* %agg.result to i8* %7 = bitcast %"class.thrust::zip_iterator.100"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 24, i32 8, i1 false) %8 = bitcast %"struct.thrust::detail::wrapped_function.106"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %8) #5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEC2ERKS4_(%"struct.thrust::detail::wrapped_function.106"* %this, %"struct.thrust::detail::binary_transform_functor"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.106"*, align 8 %f.addr = alloca %"struct.thrust::detail::binary_transform_functor"*, align 8 store %"struct.thrust::detail::wrapped_function.106"* %this, %"struct.thrust::detail::wrapped_function.106"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::binary_transform_functor"* %f, %"struct.thrust::detail::binary_transform_functor"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.106"*, %"struct.thrust::detail::wrapped_function.106"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.106", %"struct.thrust::detail::wrapped_function.106"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::binary_transform_functor"*, %"struct.thrust::detail::binary_transform_functor"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::binary_transform_functor"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::binary_transform_functor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElSD_SE_SI_SJ_SN_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSO_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.101"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.101"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.101"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.101"*, align 8 store %"class.thrust::iterator_facade.101"* %lhs, %"class.thrust::iterator_facade.101"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.101"* %rhs, %"class.thrust::iterator_facade.101"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.101"*, %"class.thrust::iterator_facade.101"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.101"* %0 to %"class.thrust::zip_iterator.100"* %2 = load %"class.thrust::iterator_facade.101"*, %"class.thrust::iterator_facade.101"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.101"* %2 to %"class.thrust::zip_iterator.100"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEESE_EEbRKT_RKT0_(%"class.thrust::zip_iterator.100"* dereferenceable(24) %1, %"class.thrust::zip_iterator.100"* dereferenceable(24) %3) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEclINS0_28tuple_of_iterator_referencesIRaS8_RNS_4pairIaaEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.106"* %this, %"class.thrust::detail::tuple_of_iterator_references.107"* dereferenceable(24) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.106"*, align 8 %x.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.107"*, align 8 %agg.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.107", align 8 store %"struct.thrust::detail::wrapped_function.106"* %this, %"struct.thrust::detail::wrapped_function.106"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tuple_of_iterator_references.107"* %x, %"class.thrust::detail::tuple_of_iterator_references.107"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.106"*, %"struct.thrust::detail::wrapped_function.106"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.106", %"struct.thrust::detail::wrapped_function.106"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tuple_of_iterator_references.107"*, %"class.thrust::detail::tuple_of_iterator_references.107"** %x.addr, align 8 %call = call dereferenceable(24) %"class.thrust::detail::tuple_of_iterator_references.107"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesIRaS3_RNS_4pairIaaEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_13raw_referenceIKT_E4typeERSB_(%"class.thrust::detail::tuple_of_iterator_references.107"* dereferenceable(24) %0) %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references.107"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::tuple_of_iterator_references.107"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) call void @_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEclINS0_28tuple_of_iterator_referencesIRaS6_RNS_4pairIaaEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi2ET_E4typeEE4typeESE_(%"struct.thrust::detail::binary_transform_functor"* %m_f, %"class.thrust::detail::tuple_of_iterator_references.107"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEdeEv(%"class.thrust::detail::tuple_of_iterator_references.107"* noalias sret %agg.result, %"class.thrust::iterator_facade.101"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.101"*, align 8 store %"class.thrust::iterator_facade.101"* %this, %"class.thrust::iterator_facade.101"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.101"*, %"class.thrust::iterator_facade.101"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::zip_iterator.100"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.101"* %this1) call void @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEENT_9referenceERKSF_(%"class.thrust::detail::tuple_of_iterator_references.107"* sret %agg.result, %"class.thrust::zip_iterator.100"* dereferenceable(24) %call) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.100"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEppEv(%"class.thrust::iterator_facade.101"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.101"*, align 8 store %"class.thrust::iterator_facade.101"* %this, %"class.thrust::iterator_facade.101"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.101"*, %"class.thrust::iterator_facade.101"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::zip_iterator.100"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.101"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEEvRT_(%"class.thrust::zip_iterator.100"* dereferenceable(24) %call) %call2 = call dereferenceable(24) %"class.thrust::zip_iterator.100"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.101"* %this1) ret %"class.thrust::zip_iterator.100"* %call2 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEESE_EEbRKT_RKT0_(%"class.thrust::zip_iterator.100"* dereferenceable(24) %f1, %"class.thrust::zip_iterator.100"* dereferenceable(24) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 store %"class.thrust::zip_iterator.100"* %f1, %"class.thrust::zip_iterator.100"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.100"* %f2, %"class.thrust::zip_iterator.100"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %f2.addr, align 8 %call = call zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE5equalISB_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.100"* %0, %"class.thrust::zip_iterator.100"* dereferenceable(24) %1) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE5equalISB_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.100"* %this, %"class.thrust::zip_iterator.100"* dereferenceable(24) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 store %"class.thrust::zip_iterator.100"* %this, %"class.thrust::zip_iterator.100"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.100"* %other, %"class.thrust::zip_iterator.100"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::tuple.102"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.100"* %this1) %0 = bitcast %"class.thrust::tuple.102"* %call to %"struct.thrust::detail::cons.103"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.103"* dereferenceable(24) %0) %1 = bitcast %"class.thrust::detail::normal_iterator"* %call2 to %"class.thrust::iterator_facade"* %2 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %other.addr, align 8 %call3 = call dereferenceable(24) %"class.thrust::tuple.102"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.100"* %2) %3 = bitcast %"class.thrust::tuple.102"* %call3 to %"struct.thrust::detail::cons.103"* %call4 = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.103"* dereferenceable(24) %3) %4 = bitcast %"class.thrust::detail::normal_iterator"* %call4 to %"class.thrust::iterator_facade"* %call5 = call zeroext i1 @_ZN6thrusteqINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade"* dereferenceable(1) %1, %"class.thrust::iterator_facade"* dereferenceable(1) %4) ret i1 %call5 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrusteqINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade"*, align 8 store %"class.thrust::iterator_facade"* %lhs, %"class.thrust::iterator_facade"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade"* %rhs, %"class.thrust::iterator_facade"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade"* %0 to %"class.thrust::detail::normal_iterator"* %2 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade"* %2 to %"class.thrust::detail::normal_iterator"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPaEES5_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.103"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.103"*, align 8 store %"struct.thrust::detail::cons.103"* %c, %"struct.thrust::detail::cons.103"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.103"*, %"struct.thrust::detail::cons.103"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPaEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIaaEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.103"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator"* %call } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPaEES5_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 store %"class.thrust::detail::normal_iterator"* %f1, %"class.thrust::detail::normal_iterator"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator"* %f2, %"class.thrust::detail::normal_iterator"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %f1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator"* %0 to %"class.thrust::iterator_adaptor"* %2 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %f2.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator"* %2 to %"class.thrust::iterator_adaptor"* %call = call zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E5equalIS4_S3_S5_S5_S5_S5_S5_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor"* %1, %"class.thrust::iterator_adaptor"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E5equalIS4_S3_S5_S5_S5_S5_S5_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor"* %this, %"class.thrust::iterator_adaptor"* dereferenceable(8) %x) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor"*, align 8 %x.addr = alloca %"class.thrust::iterator_adaptor"*, align 8 store %"class.thrust::iterator_adaptor"* %this, %"class.thrust::iterator_adaptor"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor"* %x, %"class.thrust::iterator_adaptor"** %x.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor"*, %"class.thrust::iterator_adaptor"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %this1, i32 0, i32 0 %0 = load i8*, i8** %m_iterator, align 8, !tbaa !36 %1 = load %"class.thrust::iterator_adaptor"*, %"class.thrust::iterator_adaptor"** %x.addr, align 8 %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor"* %1) %2 = load i8*, i8** %call, align 8, !tbaa !1 %cmp = icmp eq i8* %0, %2 ret i1 %cmp } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPaEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIaaEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.103"* dereferenceable(24) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.103"*, align 8 store %"struct.thrust::detail::cons.103"* %t, %"struct.thrust::detail::cons.103"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.103"*, %"struct.thrust::detail::cons.103"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.103", %"struct.thrust::detail::cons.103"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEclINS0_28tuple_of_iterator_referencesIRaS6_RNS_4pairIaaEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi2ET_E4typeEE4typeESE_(%"struct.thrust::detail::binary_transform_functor"* %this, %"class.thrust::detail::tuple_of_iterator_references.107"* byval align 8 %t) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::binary_transform_functor"*, align 8 %ref.tmp = alloca %"struct.thrust::pair", align 1 store %"struct.thrust::detail::binary_transform_functor"* %this, %"struct.thrust::detail::binary_transform_functor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::binary_transform_functor"*, %"struct.thrust::detail::binary_transform_functor"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.107"* %t to %"struct.thrust::detail::cons.109"* %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust3getILi2ERaNS_6detail4consIS1_NS3_IRNS_4pairIaaEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.109"* dereferenceable(24) %0) %f = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor", %"struct.thrust::detail::binary_transform_functor"* %this1, i32 0, i32 0 %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references.107"* %t to %"struct.thrust::detail::cons.109"* %call2 = call dereferenceable(1) i8* @_ZN6thrust3getILi0ERaNS_6detail4consIS1_NS3_IRNS_4pairIaaEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.109"* dereferenceable(24) %1) %2 = bitcast %"class.thrust::detail::tuple_of_iterator_references.107"* %t to %"struct.thrust::detail::cons.109"* %call3 = call dereferenceable(1) i8* @_ZN6thrust3getILi1ERaNS_6detail4consIS1_NS3_IRNS_4pairIaaEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.109"* dereferenceable(24) %2) %call4 = call i16 @_ZN17make_pair_functorclIaaEEN6thrust4pairIT_T0_EERKS3_RKS4_(%struct.make_pair_functor* %f, i8* dereferenceable(1) %call2, i8* dereferenceable(1) %call3) %3 = bitcast %"struct.thrust::pair"* %ref.tmp to i16* store i16 %call4, i16* %3, align 1 %4 = bitcast %"struct.thrust::pair"* %call to i8* %5 = bitcast %"struct.thrust::pair"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 2, i32 1, i1 false), !tbaa.struct !23 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(24) %"class.thrust::detail::tuple_of_iterator_references.107"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesIRaS3_RNS_4pairIaaEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_13raw_referenceIKT_E4typeERSB_(%"class.thrust::detail::tuple_of_iterator_references.107"* dereferenceable(24) %ref) #8 comdat { entry: %ref.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.107"*, align 8 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.107"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.107"* %ref, %"class.thrust::detail::tuple_of_iterator_references.107"** %ref.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.107"*, %"class.thrust::detail::tuple_of_iterator_references.107"** %ref.addr, align 8 store %"class.thrust::detail::tuple_of_iterator_references.107"* %0, %"class.thrust::detail::tuple_of_iterator_references.107"** %ref.tmp, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references.107"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesIRaS3_RNS_4pairIaaEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::detail::tuple_of_iterator_references.107"** dereferenceable(8) %ref.tmp) ret %"class.thrust::detail::tuple_of_iterator_references.107"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust3getILi2ERaNS_6detail4consIS1_NS3_IRNS_4pairIaaEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.109"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.109"*, align 8 store %"struct.thrust::detail::cons.109"* %c, %"struct.thrust::detail::cons.109"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.109"*, %"struct.thrust::detail::cons.109"** %c.addr, align 8 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi2EE3getIRNS_4pairIaaEERaNS0_4consIS7_NS8_IS6_NS_9null_typeEEEEEEET_RNS8_IT0_T1_EE(%"struct.thrust::detail::cons.109"* dereferenceable(24) %0) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr i16 @_ZN17make_pair_functorclIaaEEN6thrust4pairIT_T0_EERKS3_RKS4_(%struct.make_pair_functor* %this, i8* dereferenceable(1) %x, i8* dereferenceable(1) %y) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair", align 1 %this.addr = alloca %struct.make_pair_functor*, align 8 %x.addr = alloca i8*, align 8 %y.addr = alloca i8*, align 8 store %struct.make_pair_functor* %this, %struct.make_pair_functor** %this.addr, align 8, !tbaa !1 store i8* %x, i8** %x.addr, align 8, !tbaa !7 store i8* %y, i8** %y.addr, align 8, !tbaa !7 %this1 = load %struct.make_pair_functor*, %struct.make_pair_functor** %this.addr, align 8 %0 = load i8*, i8** %x.addr, align 8 %1 = load i8, i8* %0, align 1, !tbaa !7 %2 = load i8*, i8** %y.addr, align 8 %3 = load i8, i8* %2, align 1, !tbaa !7 %call = call i16 @_ZN6thrust9make_pairIaaEENS_4pairIT_T0_EES2_S3_(i8 signext %1, i8 signext %3) %4 = bitcast %"struct.thrust::pair"* %retval to i16* store i16 %call, i16* %4, align 1 %5 = bitcast %"struct.thrust::pair"* %retval to i16* %6 = load i16, i16* %5, align 1 ret i16 %6 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust3getILi0ERaNS_6detail4consIS1_NS3_IRNS_4pairIaaEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.109"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.109"*, align 8 store %"struct.thrust::detail::cons.109"* %c, %"struct.thrust::detail::cons.109"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.109"*, %"struct.thrust::detail::cons.109"** %c.addr, align 8 %call = call dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi0EE3getIRaS4_NS0_4consIS4_NS5_IRNS_4pairIaaEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.109"* dereferenceable(24) %0) ret i8* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust3getILi1ERaNS_6detail4consIS1_NS3_IRNS_4pairIaaEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.109"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.109"*, align 8 store %"struct.thrust::detail::cons.109"* %c, %"struct.thrust::detail::cons.109"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.109"*, %"struct.thrust::detail::cons.109"** %c.addr, align 8 %call = call dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi1EE3getIRaS4_NS0_4consIS4_NS5_IRNS_4pairIaaEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.109"* dereferenceable(24) %0) ret i8* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi2EE3getIRNS_4pairIaaEERaNS0_4consIS7_NS8_IS6_NS_9null_typeEEEEEEET_RNS8_IT0_T1_EE(%"struct.thrust::detail::cons.109"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.109"*, align 8 store %"struct.thrust::detail::cons.109"* %t, %"struct.thrust::detail::cons.109"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.109"*, %"struct.thrust::detail::cons.109"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.109", %"struct.thrust::detail::cons.109"* %0, i32 0, i32 1 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIaaEERaNS0_4consIS6_NS_9null_typeEEEEET_RNS8_IT0_T1_EE(%"struct.thrust::detail::cons.110"* dereferenceable(16) %tail) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIaaEERaNS0_4consIS6_NS_9null_typeEEEEET_RNS8_IT0_T1_EE(%"struct.thrust::detail::cons.110"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.110"*, align 8 store %"struct.thrust::detail::cons.110"* %t, %"struct.thrust::detail::cons.110"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.110"*, %"struct.thrust::detail::cons.110"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.110", %"struct.thrust::detail::cons.110"* %0, i32 0, i32 1 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIaaEES6_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.111"* dereferenceable(8) %tail) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIaaEES6_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.111"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.111"*, align 8 store %"struct.thrust::detail::cons.111"* %t, %"struct.thrust::detail::cons.111"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.111"*, %"struct.thrust::detail::cons.111"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.111", %"struct.thrust::detail::cons.111"* %0, i32 0, i32 0 %ref = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %head, align 8, !tbaa !7 ret %"struct.thrust::pair"* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr i16 @_ZN6thrust9make_pairIaaEENS_4pairIT_T0_EES2_S3_(i8 signext %x, i8 signext %y) #8 comdat { entry: %retval = alloca %"struct.thrust::pair", align 1 %x.addr = alloca i8, align 1 %y.addr = alloca i8, align 1 store i8 %x, i8* %x.addr, align 1, !tbaa !7 store i8 %y, i8* %y.addr, align 1, !tbaa !7 call void @_ZN6thrust4pairIaaEC2ERKaS3_(%"struct.thrust::pair"* %retval, i8* dereferenceable(1) %x.addr, i8* dereferenceable(1) %y.addr) %0 = bitcast %"struct.thrust::pair"* %retval to i16* %1 = load i16, i16* %0, align 1 ret i16 %1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi0EE3getIRaS4_NS0_4consIS4_NS5_IRNS_4pairIaaEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.109"* dereferenceable(24) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.109"*, align 8 store %"struct.thrust::detail::cons.109"* %t, %"struct.thrust::detail::cons.109"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.109"*, %"struct.thrust::detail::cons.109"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.109", %"struct.thrust::detail::cons.109"* %0, i32 0, i32 0 %ref = load i8*, i8** %head, align 8, !tbaa !7 ret i8* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi1EE3getIRaS4_NS0_4consIS4_NS5_IRNS_4pairIaaEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.109"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.109"*, align 8 store %"struct.thrust::detail::cons.109"* %t, %"struct.thrust::detail::cons.109"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.109"*, %"struct.thrust::detail::cons.109"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.109", %"struct.thrust::detail::cons.109"* %0, i32 0, i32 1 %call = call dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi0EE3getIRaS4_NS0_4consIRNS_4pairIaaEENS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.110"* dereferenceable(16) %tail) ret i8* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi0EE3getIRaS4_NS0_4consIRNS_4pairIaaEENS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.110"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.110"*, align 8 store %"struct.thrust::detail::cons.110"* %t, %"struct.thrust::detail::cons.110"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.110"*, %"struct.thrust::detail::cons.110"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.110", %"struct.thrust::detail::cons.110"* %0, i32 0, i32 0 %ref = load i8*, i8** %head, align 8, !tbaa !7 ret i8* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references.107"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesIRaS3_RNS_4pairIaaEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::detail::tuple_of_iterator_references.107"** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.107"**, align 8 store %"class.thrust::detail::tuple_of_iterator_references.107"** %ptr, %"class.thrust::detail::tuple_of_iterator_references.107"*** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.107"**, %"class.thrust::detail::tuple_of_iterator_references.107"*** %ptr.addr, align 8 %1 = load %"class.thrust::detail::tuple_of_iterator_references.107"*, %"class.thrust::detail::tuple_of_iterator_references.107"** %0, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references.107"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesIRaS3_RNS_4pairIaaEENS_9null_typeES7_S7_S7_S7_S7_S7_EEE3getESA_(%"class.thrust::detail::tuple_of_iterator_references.107"* %1) ret %"class.thrust::detail::tuple_of_iterator_references.107"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references.107"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesIRaS3_RNS_4pairIaaEENS_9null_typeES7_S7_S7_S7_S7_S7_EEE3getESA_(%"class.thrust::detail::tuple_of_iterator_references.107"* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.107"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.107"* %ptr, %"class.thrust::detail::tuple_of_iterator_references.107"** %ptr.addr, align 8, !tbaa !1 %0 = load %"class.thrust::detail::tuple_of_iterator_references.107"*, %"class.thrust::detail::tuple_of_iterator_references.107"** %ptr.addr, align 8, !tbaa !1 ret %"class.thrust::detail::tuple_of_iterator_references.107"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEENT_9referenceERKSF_(%"class.thrust::detail::tuple_of_iterator_references.107"* noalias sret %agg.result, %"class.thrust::zip_iterator.100"* dereferenceable(24) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 store %"class.thrust::zip_iterator.100"* %f, %"class.thrust::zip_iterator.100"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %f.addr, align 8 call void @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE11dereferenceEv(%"class.thrust::detail::tuple_of_iterator_references.107"* sret %agg.result, %"class.thrust::zip_iterator.100"* %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.100"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.101"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.101"*, align 8 store %"class.thrust::iterator_facade.101"* %this, %"class.thrust::iterator_facade.101"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.101"*, %"class.thrust::iterator_facade.101"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.101"* %this1 to %"class.thrust::zip_iterator.100"* ret %"class.thrust::zip_iterator.100"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE11dereferenceEv(%"class.thrust::detail::tuple_of_iterator_references.107"* noalias sret %agg.result, %"class.thrust::zip_iterator.100"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 %ref.tmp = alloca %"class.thrust::tuple.108", align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::zip_iterator.100"* %this, %"class.thrust::zip_iterator.100"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::tuple.102"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.100"* %this1) call void @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISF_EE5valueEE4typeERKSF_T1_(%"class.thrust::tuple.108"* sret %ref.tmp, %"class.thrust::tuple.102"* dereferenceable(24) %call) call void @_ZN6thrust6detail28tuple_of_iterator_referencesIRaS2_RNS_4pairIaaEENS_9null_typeES6_S6_S6_S6_S6_S6_EC2ERKNS_5tupleIS2_S2_S5_S6_S6_S6_S6_S6_S6_S6_EE(%"class.thrust::detail::tuple_of_iterator_references.107"* %agg.result, %"class.thrust::tuple.108"* dereferenceable(24) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISF_EE5valueEE4typeERKSF_T1_(%"class.thrust::tuple.108"* noalias sret %agg.result, %"class.thrust::tuple.102"* dereferenceable(24) %t) #0 comdat { entry: %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.102"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::tuple.102"* %t, %"class.thrust::tuple.102"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.102"*, %"class.thrust::tuple.102"** %t.addr, align 8 call void @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EENS0_20dereference_iterator5applyESC_Lj3EE27do_it_on_the_host_or_deviceERKSB_SC_(%"class.thrust::tuple.108"* sret %agg.result, %"class.thrust::tuple.102"* dereferenceable(24) %0) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail28tuple_of_iterator_referencesIRaS2_RNS_4pairIaaEENS_9null_typeES6_S6_S6_S6_S6_S6_EC2ERKNS_5tupleIS2_S2_S5_S6_S6_S6_S6_S6_S6_S6_EE(%"class.thrust::detail::tuple_of_iterator_references.107"* %this, %"class.thrust::tuple.108"* dereferenceable(24) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.107"*, align 8 %other.addr = alloca %"class.thrust::tuple.108"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.107"* %this, %"class.thrust::detail::tuple_of_iterator_references.107"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.108"* %other, %"class.thrust::tuple.108"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::tuple_of_iterator_references.107"*, %"class.thrust::detail::tuple_of_iterator_references.107"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.107"* %this1 to %"class.thrust::tuple.108"* %1 = load %"class.thrust::tuple.108"*, %"class.thrust::tuple.108"** %other.addr, align 8 %2 = bitcast %"class.thrust::tuple.108"* %0 to i8* %3 = bitcast %"class.thrust::tuple.108"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EENS0_20dereference_iterator5applyESC_Lj3EE27do_it_on_the_host_or_deviceERKSB_SC_(%"class.thrust::tuple.108"* noalias sret %agg.result, %"class.thrust::tuple.102"* dereferenceable(24) %t) #0 comdat align 2 { entry: %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.102"*, align 8 store %"class.thrust::tuple.102"* %t, %"class.thrust::tuple.102"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.102"*, %"class.thrust::tuple.102"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.102"* %0 to %"struct.thrust::detail::cons.103"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.103"* dereferenceable(24) %1) %call1 = call dereferenceable(1) i8* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPaEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.102"*, %"class.thrust::tuple.102"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.102"* %2 to %"struct.thrust::detail::cons.103"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust3getILi1ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.103"* dereferenceable(24) %3) %call3 = call dereferenceable(1) i8* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPaEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %call2) %4 = load %"class.thrust::tuple.102"*, %"class.thrust::tuple.102"** %t.addr, align 8 %5 = bitcast %"class.thrust::tuple.102"* %4 to %"struct.thrust::detail::cons.103"* %call4 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.103"* dereferenceable(24) %5) %call5 = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPNS_4pairIaaEEEEEENS1_5applyIT_E4typeERKS9_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %call4) call void @_ZN6thrust5tupleIRaS1_RNS_4pairIaaEENS_9null_typeES5_S5_S5_S5_S5_S5_EC2ES1_S1_S4_(%"class.thrust::tuple.108"* %agg.result, i8* dereferenceable(1) %call1, i8* dereferenceable(1) %call3, %"struct.thrust::pair"* dereferenceable(2) %call5) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust3getILi1ENS_6detail15normal_iteratorIPaEENS1_4consIS4_NS5_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.103"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.103"*, align 8 store %"struct.thrust::detail::cons.103"* %c, %"struct.thrust::detail::cons.103"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.103"*, %"struct.thrust::detail::cons.103"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPaEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIaaEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.103"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator"* %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPNS_4pairIaaEEEEEENS1_5applyIT_E4typeERKS9_(%"struct.thrust::detail::dereference_iterator"* %this, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %it) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::dereference_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 store %"struct.thrust::detail::dereference_iterator"* %this, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.51"* %it, %"class.thrust::detail::normal_iterator.51"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::dereference_iterator"*, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.51"* %0 to %"class.thrust::iterator_facade.53"* %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.53"* %1) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleIRaS1_RNS_4pairIaaEENS_9null_typeES5_S5_S5_S5_S5_S5_EC2ES1_S1_S4_(%"class.thrust::tuple.108"* %this, i8* dereferenceable(1) %t0, i8* dereferenceable(1) %t1, %"struct.thrust::pair"* dereferenceable(2) %t2) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.108"*, align 8 %t0.addr = alloca i8*, align 8 %t1.addr = alloca i8*, align 8 %t2.addr = alloca %"struct.thrust::pair"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.108"* %this, %"class.thrust::tuple.108"** %this.addr, align 8, !tbaa !1 store i8* %t0, i8** %t0.addr, align 8, !tbaa !7 store i8* %t1, i8** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %t2, %"struct.thrust::pair"** %t2.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.108"*, %"class.thrust::tuple.108"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.108"* %this1 to %"struct.thrust::detail::cons.109"* %1 = load i8*, i8** %t0.addr, align 8 %2 = load i8*, i8** %t1.addr, align 8 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t2.addr, align 8 call void @_ZN6thrust6detail4consIRaNS1_IS2_NS1_IRNS_4pairIaaEENS_9null_typeEEEEEEC2IaaS4_KS6_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.109"* %0, i8* dereferenceable(1) %1, i8* dereferenceable(1) %2, %"struct.thrust::pair"* dereferenceable(2) %3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPaEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIaaEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.103"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.103"*, align 8 store %"struct.thrust::detail::cons.103"* %t, %"struct.thrust::detail::cons.103"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.103"*, %"struct.thrust::detail::cons.103"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.103", %"struct.thrust::detail::cons.103"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPaEES6_NS0_4consINS4_IPNS_4pairIaaEEEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.104"* dereferenceable(16) %tail) ret %"class.thrust::detail::normal_iterator"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPaEES6_NS0_4consINS4_IPNS_4pairIaaEEEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.104"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.104"*, align 8 store %"struct.thrust::detail::cons.104"* %t, %"struct.thrust::detail::cons.104"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.104"*, %"struct.thrust::detail::cons.104"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.104", %"struct.thrust::detail::cons.104"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator"* %head } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.53"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.53"*, align 8 store %"class.thrust::iterator_facade.53"* %this, %"class.thrust::iterator_facade.53"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.53"*, %"class.thrust::iterator_facade.53"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.53"* %this1) %call2 = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEEENT_9referenceERKS8_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %call) ret %"struct.thrust::pair"* %call2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEEENT_9referenceERKS8_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 store %"class.thrust::detail::normal_iterator.51"* %f, %"class.thrust::detail::normal_iterator.51"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.51"* %0 to %"class.thrust::iterator_adaptor.52"* %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E11dereferenceEv(%"class.thrust::iterator_adaptor.52"* %1) ret %"struct.thrust::pair"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.53"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.53"*, align 8 store %"class.thrust::iterator_facade.53"* %this, %"class.thrust::iterator_facade.53"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.53"*, %"class.thrust::iterator_facade.53"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.53"* %this1 to %"class.thrust::detail::normal_iterator.51"* ret %"class.thrust::detail::normal_iterator.51"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E11dereferenceEv(%"class.thrust::iterator_adaptor.52"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.52"*, align 8 store %"class.thrust::iterator_adaptor.52"* %this, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.52"*, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !60 ret %"struct.thrust::pair"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIRaNS1_IS2_NS1_IRNS_4pairIaaEENS_9null_typeEEEEEEC2IaaS4_KS6_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.109"* %this, i8* dereferenceable(1) %t1, i8* dereferenceable(1) %t2, %"struct.thrust::pair"* dereferenceable(2) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.109"*, align 8 %t1.addr = alloca i8*, align 8 %t2.addr = alloca i8*, align 8 %t3.addr = alloca %"struct.thrust::pair"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.109"* %this, %"struct.thrust::detail::cons.109"** %this.addr, align 8, !tbaa !1 store i8* %t1, i8** %t1.addr, align 8, !tbaa !7 store i8* %t2, i8** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %t3, %"struct.thrust::pair"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.109"*, %"struct.thrust::detail::cons.109"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.109", %"struct.thrust::detail::cons.109"* %this1, i32 0, i32 0 %0 = load i8*, i8** %t1.addr, align 8 store i8* %0, i8** %head, align 8, !tbaa !7 %tail = getelementptr inbounds %"struct.thrust::detail::cons.109", %"struct.thrust::detail::cons.109"* %this1, i32 0, i32 1 %1 = load i8*, i8** %t2.addr, align 8 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRaNS1_IRNS_4pairIaaEENS_9null_typeEEEEC2IaS4_KS6_SA_SA_SA_SA_SA_SA_SA_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.110"* %tail, i8* dereferenceable(1) %1, %"struct.thrust::pair"* dereferenceable(2) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIRaNS1_IRNS_4pairIaaEENS_9null_typeEEEEC2IaS4_KS6_SA_SA_SA_SA_SA_SA_SA_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.110"* %this, i8* dereferenceable(1) %t1, %"struct.thrust::pair"* dereferenceable(2) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.110"*, align 8 %t1.addr = alloca i8*, align 8 %t2.addr = alloca %"struct.thrust::pair"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.110"* %this, %"struct.thrust::detail::cons.110"** %this.addr, align 8, !tbaa !1 store i8* %t1, i8** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %t2, %"struct.thrust::pair"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.110"*, %"struct.thrust::detail::cons.110"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.110", %"struct.thrust::detail::cons.110"* %this1, i32 0, i32 0 %0 = load i8*, i8** %t1.addr, align 8 store i8* %0, i8** %head, align 8, !tbaa !7 %tail = getelementptr inbounds %"struct.thrust::detail::cons.110", %"struct.thrust::detail::cons.110"* %this1, i32 0, i32 1 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRNS_4pairIaaEENS_9null_typeEEC2IS3_EERT_RKS5_SB_SB_SB_SB_SB_SB_SB_SB_(%"struct.thrust::detail::cons.111"* %tail, %"struct.thrust::pair"* dereferenceable(2) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIRNS_4pairIaaEENS_9null_typeEEC2IS3_EERT_RKS5_SB_SB_SB_SB_SB_SB_SB_SB_(%"struct.thrust::detail::cons.111"* %this, %"struct.thrust::pair"* dereferenceable(2) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.111"*, align 8 %t1.addr = alloca %"struct.thrust::pair"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.111"* %this, %"struct.thrust::detail::cons.111"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %t1, %"struct.thrust::pair"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.111"*, %"struct.thrust::detail::cons.111"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.111", %"struct.thrust::detail::cons.111"* %this9, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t1.addr, align 8 store %"struct.thrust::pair"* %9, %"struct.thrust::pair"** %head, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES7_NS5_IPNS_4pairIaaEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEEvRT_(%"class.thrust::zip_iterator.100"* dereferenceable(24) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 store %"class.thrust::zip_iterator.100"* %f, %"class.thrust::zip_iterator.100"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %f.addr, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE9incrementEv(%"class.thrust::zip_iterator.100"* %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.100"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IaaS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRaSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.101"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.101"*, align 8 store %"class.thrust::iterator_facade.101"* %this, %"class.thrust::iterator_facade.101"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.101"*, %"class.thrust::iterator_facade.101"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.101"* %this1 to %"class.thrust::zip_iterator.100"* ret %"class.thrust::zip_iterator.100"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE9incrementEv(%"class.thrust::zip_iterator.100"* %this) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::zip_iterator.100"* %this, %"class.thrust::zip_iterator.100"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.100", %"class.thrust::zip_iterator.100"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EENS0_18increment_iteratorEEET0_RT_SE_(%"class.thrust::tuple.102"* dereferenceable(24) %m_iterator_tuple) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorIPaEES6_NS4_IPNS_4pairIaaEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EENS0_18increment_iteratorEEET0_RT_SE_(%"class.thrust::tuple.102"* dereferenceable(24) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.102"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::tuple.102"* %t, %"class.thrust::tuple.102"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.102"*, %"class.thrust::tuple.102"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.102"* %0 to %"struct.thrust::detail::cons.103"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_IS4_NS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.103"* %1) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPaEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.102"*, %"class.thrust::tuple.102"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.102"* %2 to %"struct.thrust::detail::cons.103"* %call1 = call dereferenceable(16) %"struct.thrust::detail::cons.104"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_IS4_NS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.103"* %3) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPaEENS3_INS4_IPNS_4pairIaaEEEENS_9null_typeEEEEENS0_18increment_iteratorEEET0_RT_SF_(%"struct.thrust::detail::cons.104"* dereferenceable(16) %call1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_IS4_NS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.103"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.103"*, align 8 store %"struct.thrust::detail::cons.103"* %this, %"struct.thrust::detail::cons.103"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.103"*, %"struct.thrust::detail::cons.103"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.103", %"struct.thrust::detail::cons.103"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPaEENS3_INS4_IPNS_4pairIaaEEEENS_9null_typeEEEEENS0_18increment_iteratorEEET0_RT_SF_(%"struct.thrust::detail::cons.104"* dereferenceable(16) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"struct.thrust::detail::cons.104"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"struct.thrust::detail::cons.104"* %t, %"struct.thrust::detail::cons.104"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.104"*, %"struct.thrust::detail::cons.104"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.104"* %0) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPaEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.104"*, %"struct.thrust::detail::cons.104"** %t.addr, align 8 %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.105"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.104"* %1) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SC_(%"struct.thrust::detail::cons.105"* dereferenceable(8) %call1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"struct.thrust::detail::cons.104"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_IS4_NS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.103"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.103"*, align 8 store %"struct.thrust::detail::cons.103"* %this, %"struct.thrust::detail::cons.103"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.103"*, %"struct.thrust::detail::cons.103"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.103", %"struct.thrust::detail::cons.103"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.104"* %tail } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.104"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.104"*, align 8 store %"struct.thrust::detail::cons.104"* %this, %"struct.thrust::detail::cons.104"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.104"*, %"struct.thrust::detail::cons.104"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.104", %"struct.thrust::detail::cons.104"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SC_(%"struct.thrust::detail::cons.105"* dereferenceable(8) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"struct.thrust::detail::cons.105"*, align 8 %agg.tmp = alloca %"struct.thrust::null_type", align 1 %undef.agg.tmp = alloca %"struct.thrust::null_type", align 1 %agg.tmp1 = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp2 = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"struct.thrust::detail::cons.105"* %t, %"struct.thrust::detail::cons.105"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.105"*, %"struct.thrust::detail::cons.105"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.105"* %0) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPNS_4pairIaaEEEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.105"*, %"struct.thrust::detail::cons.105"** %t.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.105"* %1) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_18increment_iteratorEEET_NS_9null_typeES4_() ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.105"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.104"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.104"*, align 8 store %"struct.thrust::detail::cons.104"* %this, %"struct.thrust::detail::cons.104"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.104"*, %"struct.thrust::detail::cons.104"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.104", %"struct.thrust::detail::cons.104"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.105"* %tail } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPNS_4pairIaaEEEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %this, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::increment_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 store %"struct.thrust::detail::increment_iterator"* %this, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.51"* %it, %"class.thrust::detail::normal_iterator.51"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::increment_iterator"*, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.51"* %0 to %"class.thrust::iterator_facade.53"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.53"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.105"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.105"*, align 8 store %"struct.thrust::detail::cons.105"* %this, %"struct.thrust::detail::cons.105"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.105"*, %"struct.thrust::detail::cons.105"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.105", %"struct.thrust::detail::cons.105"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.51"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.105"* %this) #9 comdat align 2 { entry: %retval = alloca %"struct.thrust::null_type", align 1 %this.addr = alloca %"struct.thrust::detail::cons.105"*, align 8 store %"struct.thrust::detail::cons.105"* %this, %"struct.thrust::detail::cons.105"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.105"*, %"struct.thrust::detail::cons.105"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.53"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.53"*, align 8 store %"class.thrust::iterator_facade.53"* %this, %"class.thrust::iterator_facade.53"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.53"*, %"class.thrust::iterator_facade.53"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.53"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPNS_4pairIaaEEEEEEvRT_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.53"* %this1) ret %"class.thrust::detail::normal_iterator.51"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPNS_4pairIaaEEEEEEvRT_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 store %"class.thrust::detail::normal_iterator.51"* %f, %"class.thrust::detail::normal_iterator.51"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.51"* %0 to %"class.thrust::iterator_adaptor.52"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E9incrementEv(%"class.thrust::iterator_adaptor.52"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.53"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.53"*, align 8 store %"class.thrust::iterator_facade.53"* %this, %"class.thrust::iterator_facade.53"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.53"*, %"class.thrust::iterator_facade.53"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.53"* %this1 to %"class.thrust::detail::normal_iterator.51"* ret %"class.thrust::detail::normal_iterator.51"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E9incrementEv(%"class.thrust::iterator_adaptor.52"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.52"*, align 8 store %"class.thrust::iterator_adaptor.52"* %this, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.52"*, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !60 %incdec.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %0, i32 1 store %"struct.thrust::pair"* %incdec.ptr, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !60 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPaEES5_NS3_IPNS_4pairIaaEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEC2ESB_(%"class.thrust::zip_iterator.100"* %this, %"class.thrust::tuple.102"* byval align 8 %iterator_tuple) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.100"*, align 8 store %"class.thrust::zip_iterator.100"* %this, %"class.thrust::zip_iterator.100"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.100"*, %"class.thrust::zip_iterator.100"** %this.addr, align 8 %0 = bitcast %"class.thrust::zip_iterator.100"* %this1 to %"class.thrust::iterator_facade.101"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.100", %"class.thrust::zip_iterator.100"* %this1, i32 0, i32 0 %1 = bitcast %"class.thrust::tuple.102"* %m_iterator_tuple to i8* %2 = bitcast %"class.thrust::tuple.102"* %iterator_tuple to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6detail15normal_iteratorIPaEES4_NS2_IPNS_4pairIaaEEEENS_9null_typeES9_S9_S9_S9_S9_S9_EC2ERKS4_SC_RKS8_(%"class.thrust::tuple.102"* %this, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %t2) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.102"*, align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.102"* %this, %"class.thrust::tuple.102"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator"* %t0, %"class.thrust::detail::normal_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator"* %t1, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.51"* %t2, %"class.thrust::detail::normal_iterator.51"** %t2.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.102"*, %"class.thrust::tuple.102"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.102"* %this1 to %"struct.thrust::detail::cons.103"* %1 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %t2.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_IS4_NS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEC2IKS4_SE_KS8_KS9_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.103"* %0, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %2, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_IS4_NS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEEEC2IKS4_SE_KS8_KS9_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.103"* %this, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t2, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.103"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.103"* %this, %"struct.thrust::detail::cons.103"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator"* %t1, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator"* %t2, %"class.thrust::detail::normal_iterator"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.51"* %t3, %"class.thrust::detail::normal_iterator.51"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.103"*, %"struct.thrust::detail::cons.103"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.103", %"struct.thrust::detail::cons.103"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.103", %"struct.thrust::detail::cons.103"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEC2IKS4_KS8_KS9_SF_SF_SF_SF_SF_SF_SF_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.104"* %tail, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %3, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPaEENS1_INS2_IPNS_4pairIaaEEEENS_9null_typeEEEEC2IKS4_KS8_KS9_SF_SF_SF_SF_SF_SF_SF_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.104"* %this, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.104"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.104"* %this, %"struct.thrust::detail::cons.104"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator"* %t1, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.51"* %t2, %"class.thrust::detail::normal_iterator.51"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.104"*, %"struct.thrust::detail::cons.104"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.104", %"struct.thrust::detail::cons.104"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.104", %"struct.thrust::detail::cons.104"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEEC2IKS6_EERT_RKS7_SE_SE_SE_SE_SE_SE_SE_SE_(%"struct.thrust::detail::cons.105"* %tail, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIaaEEEENS_9null_typeEEC2IKS6_EERT_RKS7_SE_SE_SE_SE_SE_SE_SE_SE_(%"struct.thrust::detail::cons.105"* %this, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.105"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.105"* %this, %"struct.thrust::detail::cons.105"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.51"* %t1, %"class.thrust::detail::normal_iterator.51"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.105"*, %"struct.thrust::detail::cons.105"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.105", %"struct.thrust::detail::cons.105"* %this9, i32 0, i32 0 %9 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %t1.addr, align 8 %10 = bitcast %"class.thrust::detail::normal_iterator.51"* %head to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.51"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorIPNS_4pairIaaEEEENS4_IPaEENS0_4consISC_NSD_IS8_NS_9null_typeEEEEEEET_RKNSD_IT0_T1_EE(%"struct.thrust::detail::cons.103"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.103"*, align 8 store %"struct.thrust::detail::cons.103"* %t, %"struct.thrust::detail::cons.103"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.103"*, %"struct.thrust::detail::cons.103"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.103", %"struct.thrust::detail::cons.103"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPNS_4pairIaaEEEENS4_IPaEENS0_4consIS8_NS_9null_typeEEEEET_RKNSD_IT0_T1_EE(%"struct.thrust::detail::cons.104"* dereferenceable(16) %tail) ret %"class.thrust::detail::normal_iterator.51"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPNS_4pairIaaEEEENS4_IPaEENS0_4consIS8_NS_9null_typeEEEEET_RKNSD_IT0_T1_EE(%"struct.thrust::detail::cons.104"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.104"*, align 8 store %"struct.thrust::detail::cons.104"* %t, %"struct.thrust::detail::cons.104"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.104"*, %"struct.thrust::detail::cons.104"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.104", %"struct.thrust::detail::cons.104"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPNS_4pairIaaEEEES8_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.105"* dereferenceable(8) %tail) ret %"class.thrust::detail::normal_iterator.51"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPNS_4pairIaaEEEES8_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.105"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.105"*, align 8 store %"struct.thrust::detail::cons.105"* %t, %"struct.thrust::detail::cons.105"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.105"*, %"struct.thrust::detail::cons.105"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.105", %"struct.thrust::detail::cons.105"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.51"* %head } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system2) #0 comdat { entry: %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %system2, %"struct.thrust::execution_policy.88"** %system2.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic20select_system_detail10min_systemINS0_3cpp6detail3tagEEERT_RNS_16execution_policyIS8_EESC_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"struct.thrust::execution_policy.88"* dereferenceable(1) %1) ret %"struct.thrust::system::cpp::detail::tag"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic20select_system_detail10min_systemINS0_3cpp6detail3tagEEERT_RNS_16execution_policyIS8_EESC_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.88"* dereferenceable(1)) #1 comdat { entry: %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %0, %"struct.thrust::execution_policy.88"** %.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2) ret %"struct.thrust::system::cpp::detail::tag"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr i8* @_ZN6thrust6detail18contiguous_storageIaSaIaEE5beginEv(%"class.thrust::detail::contiguous_storage"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive2, align 8 ret i8* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator"* %i, %"class.thrust::detail::normal_iterator"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator"* %i, %"class.thrust::detail::normal_iterator"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator"* %i, %"class.thrust::detail::normal_iterator"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator"* %1 to %"class.thrust::iterator_facade"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEpLEl(%"class.thrust::iterator_facade"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEpLEl(%"class.thrust::iterator_facade"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade"* %this, %"class.thrust::iterator_facade"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalE7derivedEv(%"class.thrust::iterator_facade"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPaEEEEvRT_NS6_15difference_typeE(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalE7derivedEv(%"class.thrust::iterator_facade"* %this1) ret %"class.thrust::detail::normal_iterator"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPaEEEEvRT_NS6_15difference_typeE(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator"* %f, %"class.thrust::detail::normal_iterator"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator"* %0 to %"class.thrust::iterator_adaptor"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl(%"class.thrust::iterator_adaptor"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl(%"class.thrust::iterator_adaptor"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor"* %this, %"class.thrust::iterator_adaptor"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor"*, %"class.thrust::iterator_adaptor"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %this1, i32 0, i32 0 %1 = load i8*, i8** %m_iterator, align 8, !tbaa !36 %add.ptr = getelementptr inbounds i8, i8* %1, i64 %0 store i8* %add.ptr, i8** %m_iterator, align 8, !tbaa !36 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::contiguous_storage.47"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.51", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.47"*, align 8 store %"class.thrust::detail::contiguous_storage.47"* %this, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.47"*, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.51"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.51"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEEC2IaSaIaEEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 %v.addr = alloca %"class.thrust::detail::vector_base"*, align 8 %ref.tmp = alloca %"class.thrust::device_malloc_allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.112", align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::vector_base"* %v, %"class.thrust::detail::vector_base"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorIaEC2Ev(%"class.thrust::device_malloc_allocator"* %ref.tmp) invoke void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEEC2ERKS3_(%"class.thrust::detail::contiguous_storage.55"* %m_storage, %"class.thrust::device_malloc_allocator"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZN6thrust23device_malloc_allocatorIaED2Ev(%"class.thrust::device_malloc_allocator"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !63 %0 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %v.addr, align 8 %call = invoke i8* @_ZNK6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive4, align 8 %1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %v.addr, align 8 %call7 = invoke i8* @_ZNK6thrust6detail11vector_baseIaSaIaEE3endEv(%"class.thrust::detail::vector_base"* %1) to label %invoke.cont6 unwind label %lpad2 invoke.cont6: ; preds = %invoke.cont3 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive8, i32 0, i32 0 store i8* %call7, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive10, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp5, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive12, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive13, align 8 invoke void @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE10range_initINS0_15normal_iteratorIPKaEEEEvT_SA_(%"class.thrust::detail::vector_base.54"* %this1, i8* %2, i8* %3) to label %invoke.cont14 unwind label %lpad2 invoke.cont14: ; preds = %invoke.cont6 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZN6thrust23device_malloc_allocatorIaED2Ev(%"class.thrust::device_malloc_allocator"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont6, %invoke.cont3, %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEED2Ev(%"class.thrust::detail::contiguous_storage.55"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val15 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val15 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorIaEC2Ev(%"class.thrust::device_malloc_allocator"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 store %"class.thrust::device_malloc_allocator"* %this, %"class.thrust::device_malloc_allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEEC2ERKS3_(%"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::device_malloc_allocator"* dereferenceable(1) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 %alloc.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_malloc_allocator"* %alloc, %"class.thrust::device_malloc_allocator"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %alloc.addr, align 8 call void @_ZN6thrust23device_malloc_allocatorIaEC2ERKS1_(%"class.thrust::device_malloc_allocator"* %m_allocator, %"class.thrust::device_malloc_allocator"* dereferenceable(1) %0) %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 1 invoke void @_ZN6thrust10device_ptrIaEC2IaEEPT_(%"class.thrust::device_ptr"* %agg.tmp, i8* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive2, i32 0, i32 0 %1 = load i8*, i8** %coerce.dive3, align 8 invoke void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIaEEEC2ES3_(%"class.thrust::detail::normal_iterator.56"* %m_begin, i8* %1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !68 ret void lpad: ; preds = %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 call void @_ZN6thrust23device_malloc_allocatorIaED2Ev(%"class.thrust::device_malloc_allocator"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorIaED2Ev(%"class.thrust::device_malloc_allocator"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 store %"class.thrust::device_malloc_allocator"* %this, %"class.thrust::device_malloc_allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE10range_initINS0_15normal_iteratorIPKaEEEEvT_SA_(%"class.thrust::detail::vector_base.54"* %this, i8* %first.coerce, i8* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp6 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive7, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp5, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive9, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive10, align 8 call void @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE10range_initINS0_15normal_iteratorIPKaEEEEvT_SA_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.54"* %this4, i8* %4, i8* %5) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.112", align 8 %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 %call = call i8* @_ZNK6thrust6detail18contiguous_storageIaSaIaEE5beginEv(%"class.thrust::detail::contiguous_storage"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive3, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive4, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust6detail11vector_baseIaSaIaEE3endEv(%"class.thrust::detail::vector_base"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.112", align 8 %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %call = call i8* @_ZNK6thrust6detail11vector_baseIaSaIaEE5beginEv(%"class.thrust::detail::vector_base"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %call3 = call i64 @_ZNK6thrust6detail11vector_baseIaSaIaEE4sizeEv(%"class.thrust::detail::vector_base"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKaEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %retval, i64 %call3) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive4, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive5, align 8 ret i8* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEED2Ev(%"class.thrust::detail::contiguous_storage.55"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.55"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorIaED2Ev(%"class.thrust::device_malloc_allocator"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorIaED2Ev(%"class.thrust::device_malloc_allocator"* %m_allocator2) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorIaEC2ERKS1_(%"class.thrust::device_malloc_allocator"* %this, %"class.thrust::device_malloc_allocator"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 store %"class.thrust::device_malloc_allocator"* %this, %"class.thrust::device_malloc_allocator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_malloc_allocator"* %0, %"class.thrust::device_malloc_allocator"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIaEC2IaEEPT_(%"class.thrust::device_ptr"* %this, i8* %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr"*, align 8 %ptr.addr = alloca i8*, align 8 store %"class.thrust::device_ptr"* %this, %"class.thrust::device_ptr"** %this.addr, align 8, !tbaa !1 store i8* %ptr, i8** %ptr.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr"* %this1 to %"class.thrust::pointer"* %1 = load i8*, i8** %ptr.addr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIaNS_6system4cuda6detail3tagENS_16device_referenceIaEENS_10device_ptrIaEEEC2IaEEPT_(%"class.thrust::pointer"* %0, i8* %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIaEEEC2ES3_(%"class.thrust::detail::normal_iterator.56"* %this, i8* %p.coerce) unnamed_addr #0 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr", align 8 %this.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 store i8* %p.coerce, i8** %coerce.dive2, align 8 store %"class.thrust::detail::normal_iterator.56"* %this, %"class.thrust::detail::normal_iterator.56"** %this.addr, align 8, !tbaa !1 %this3 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.56"* %this3 to %"class.thrust::iterator_adaptor.57"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.57"* %0, %"class.thrust::device_ptr"* dereferenceable(8) %p) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIaNS_6system4cuda6detail3tagENS_16device_referenceIaEENS_10device_ptrIaEEEC2IaEEPT_(%"class.thrust::pointer"* %this, i8* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer"*, align 8 %other.addr = alloca i8*, align 8 store %"class.thrust::pointer"* %this, %"class.thrust::pointer"** %this.addr, align 8, !tbaa !1 store i8* %other, i8** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer"*, %"class.thrust::pointer"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer"* %this1 to %"class.thrust::iterator_adaptor.59"* call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEC2ERKS3_(%"class.thrust::iterator_adaptor.59"* %0, i8** dereferenceable(8) %other.addr) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEC2ERKS3_(%"class.thrust::iterator_adaptor.59"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.59"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor.59"* %this, %"class.thrust::iterator_adaptor.59"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.59"*, %"class.thrust::iterator_adaptor.59"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.59"* %this1 to %"class.thrust::iterator_facade.60"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !69 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.57"* %this, %"class.thrust::device_ptr"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.57"*, align 8 %iter.addr = alloca %"class.thrust::device_ptr"*, align 8 store %"class.thrust::iterator_adaptor.57"* %this, %"class.thrust::iterator_adaptor.57"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr"* %iter, %"class.thrust::device_ptr"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.57"*, %"class.thrust::iterator_adaptor.57"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.57"* %this1 to %"class.thrust::iterator_facade.58"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %this1, i32 0, i32 0 %1 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %iter.addr, align 8 %2 = bitcast %"class.thrust::device_ptr"* %m_iterator to i8* %3 = bitcast %"class.thrust::device_ptr"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE10range_initINS0_15normal_iteratorIPKaEEEEvT_SA_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.54"* %this, i8* %first.coerce, i8* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 %new_size = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %1 = bitcast i64* %new_size to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp5 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive6, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive8, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKaEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_(i8* %6, i8* %7) store i64 %call, i64* %new_size, align 8, !tbaa !13 %8 = load i64, i64* %new_size, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp11 to i8* %12 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this4, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp10, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive12, i32 0, i32 0 %13 = load i8*, i8** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp11, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive14, i32 0, i32 0 %14 = load i8*, i8** %coerce.dive15, align 8 call void @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE17allocate_and_copyINS0_15normal_iteratorIPKaEEEEvmT_SA_RNS0_18contiguous_storageIaS3_EE(%"class.thrust::detail::vector_base.54"* %this4, i64 %8, i8* %13, i8* %14, %"class.thrust::detail::contiguous_storage.55"* dereferenceable(24) %m_storage) %15 = load i64, i64* %new_size, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this4, i32 0, i32 1 store i64 %15, i64* %m_size, align 8, !tbaa !63 %16 = bitcast i64* %new_size to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKaEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_(i8* %first.coerce, i8* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive5, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive7, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive8, align 8 %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKaEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_(i8* %4, i8* %5) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE17allocate_and_copyINS0_15normal_iteratorIPKaEEEEvmT_SA_RNS0_18contiguous_storageIaS3_EE(%"class.thrust::detail::vector_base.54"* %this, i64 %requested_size, i8* %first.coerce, i8* %last.coerce, %"class.thrust::detail::contiguous_storage.55"* dereferenceable(24) %new_storage) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 %requested_size.addr = alloca i64, align 8 %new_storage.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 %allocated_size = alloca i64, align 8 %ref.tmp = alloca i64, align 8 %ref.tmp6 = alloca i64, align 8 %ref.tmp11 = alloca %"class.std::basic_string", align 8 %ref.tmp12 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp17 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp18 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %coerce = alloca %"class.thrust::detail::normal_iterator.56", align 8 %new_storage_end = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp54 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp62 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 store i64 %requested_size, i64* %requested_size.addr, align 8, !tbaa !13 store %"class.thrust::detail::contiguous_storage.55"* %new_storage, %"class.thrust::detail::contiguous_storage.55"** %new_storage.addr, align 8, !tbaa !7 %this4 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %0 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %cmp = icmp eq i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %new_storage.addr, align 8 call void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.55"* %1) br label %return if.end: ; preds = %entry %2 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 %call = call i64 @_ZNK6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE8capacityEv(%"class.thrust::detail::vector_base.54"* %this4) %mul = mul i64 2, %call store i64 %mul, i64* %ref.tmp, align 8, !tbaa !13 %call5 = call i64 @_ZN6thrust3maxImEET_RKS1_S3_(i64* dereferenceable(8) %requested_size.addr, i64* dereferenceable(8) %ref.tmp) store i64 %call5, i64* %allocated_size, align 8, !tbaa !13 %call7 = call i64 @_ZNK6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE8max_sizeEv(%"class.thrust::detail::vector_base.54"* %this4) store i64 %call7, i64* %ref.tmp6, align 8, !tbaa !13 %call8 = call i64 @_ZN6thrust3minImEET_RKS1_S3_(i64* dereferenceable(8) %allocated_size, i64* dereferenceable(8) %ref.tmp6) store i64 %call8, i64* %allocated_size, align 8, !tbaa !13 %3 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %4 = load i64, i64* %allocated_size, align 8, !tbaa !13 %cmp9 = icmp ugt i64 %3, %4 br i1 %cmp9, label %if.then10, label %if.end16 if.then10: ; preds = %if.end %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %5 = bitcast i8* %exception to %"class.std::length_error"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp12) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp11, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.23, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp12) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then10 invoke void @_ZNSt12length_errorC1ERKSs(%"class.std::length_error"* %5, %"class.std::basic_string"* dereferenceable(8) %ref.tmp11) to label %invoke.cont14 unwind label %lpad13 invoke.cont14: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt12length_error to i8*), i8* bitcast (void (%"class.std::length_error"*)* @_ZNSt12length_errorD1Ev to i8*)) #15 to label %unreachable unwind label %lpad13 lpad: ; preds = %if.then10 %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 br label %ehcleanup lpad13: ; preds = %invoke.cont14, %invoke.cont %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp11) #5 br label %ehcleanup ehcleanup: ; preds = %lpad13, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp12) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup br label %ehcleanup78 if.end16: ; preds = %if.end %12 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %new_storage.addr, align 8 %13 = load i64, i64* %allocated_size, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE8allocateEm(%"class.thrust::detail::contiguous_storage.55"* %12, i64 %13) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this4, i32 0, i32 0 %14 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp17 to i8* %17 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %18 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %new_storage.addr, align 8 %call21 = invoke i8* @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE5beginEv(%"class.thrust::detail::contiguous_storage.55"* %18) to label %invoke.cont20 unwind label %lpad19 invoke.cont20: ; preds = %if.end16 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp18, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive25, i32 0, i32 0 store i8* %call21, i8** %coerce.dive26, align 8 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive27, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp17, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive29, i32 0, i32 0 %20 = load i8*, i8** %coerce.dive30, align 8 %coerce.dive31 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp18, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive31, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive32, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive34, i32 0, i32 0 %21 = load i8*, i8** %coerce.dive35, align 8 %call37 = invoke i8* @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE18uninitialized_copyINS0_15normal_iteratorIPKaEEEENS6_INS_10device_ptrIaEEEET_SD_SC_(%"class.thrust::detail::contiguous_storage.55"* %m_storage, i8* %19, i8* %20, i8* %21) to label %invoke.cont36 unwind label %lpad19 invoke.cont36: ; preds = %invoke.cont20 %coerce.dive38 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %coerce, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive41, i32 0, i32 0 store i8* %call37, i8** %coerce.dive42, align 8 br label %try.cont lpad19: ; preds = %invoke.cont20, %if.end16 %22 = landingpad { i8*, i32 } catch i8* null %23 = extractvalue { i8*, i32 } %22, 0 store i8* %23, i8** %exn.slot, align 8 %24 = extractvalue { i8*, i32 } %22, 1 store i32 %24, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad19 %exn = load i8*, i8** %exn.slot, align 8 %25 = call i8* @__cxa_begin_catch(i8* %exn) #5 %26 = bitcast %"class.thrust::detail::normal_iterator.56"* %new_storage_end to i8* call void @llvm.lifetime.start(i64 8, i8* %26) #5 %27 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %new_storage.addr, align 8 %call45 = invoke i8* @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE5beginEv(%"class.thrust::detail::contiguous_storage.55"* %27) to label %invoke.cont44 unwind label %lpad43 invoke.cont44: ; preds = %catch %coerce.dive46 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %new_storage_end, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive49, i32 0, i32 0 store i8* %call45, i8** %coerce.dive50, align 8 %28 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 invoke void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %new_storage_end, i64 %28) to label %invoke.cont52 unwind label %lpad51 invoke.cont52: ; preds = %invoke.cont44 %m_storage53 = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this4, i32 0, i32 0 %29 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %new_storage.addr, align 8 %call56 = invoke i8* @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE5beginEv(%"class.thrust::detail::contiguous_storage.55"* %29) to label %invoke.cont55 unwind label %lpad51 invoke.cont55: ; preds = %invoke.cont52 %coerce.dive57 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp54, i32 0, i32 0 %coerce.dive58 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive57, i32 0, i32 0 %coerce.dive59 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive58, i32 0, i32 0 %coerce.dive60 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive59, i32 0, i32 0 %coerce.dive61 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive60, i32 0, i32 0 store i8* %call56, i8** %coerce.dive61, align 8 %30 = bitcast %"class.thrust::detail::normal_iterator.56"* %agg.tmp62 to i8* %31 = bitcast %"class.thrust::detail::normal_iterator.56"* %new_storage_end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %31, i64 8, i32 8, i1 false) %coerce.dive63 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp54, i32 0, i32 0 %coerce.dive64 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive63, i32 0, i32 0 %coerce.dive65 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive64, i32 0, i32 0 %coerce.dive66 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive65, i32 0, i32 0 %coerce.dive67 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive66, i32 0, i32 0 %32 = load i8*, i8** %coerce.dive67, align 8 %coerce.dive68 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp62, i32 0, i32 0 %coerce.dive69 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive68, i32 0, i32 0 %coerce.dive70 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive69, i32 0, i32 0 %coerce.dive71 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive70, i32 0, i32 0 %coerce.dive72 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive71, i32 0, i32 0 %33 = load i8*, i8** %coerce.dive72, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE7destroyENS0_15normal_iteratorINS_10device_ptrIaEEEES8_(%"class.thrust::detail::contiguous_storage.55"* %m_storage53, i8* %32, i8* %33) to label %invoke.cont73 unwind label %lpad51 invoke.cont73: ; preds = %invoke.cont55 %34 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %new_storage.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.55"* %34) to label %invoke.cont74 unwind label %lpad51 invoke.cont74: ; preds = %invoke.cont73 invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad51 lpad43: ; preds = %catch %35 = landingpad { i8*, i32 } cleanup %36 = extractvalue { i8*, i32 } %35, 0 store i8* %36, i8** %exn.slot, align 8 %37 = extractvalue { i8*, i32 } %35, 1 store i32 %37, i32* %ehselector.slot, align 4 br label %ehcleanup76 lpad51: ; preds = %invoke.cont74, %invoke.cont73, %invoke.cont55, %invoke.cont52, %invoke.cont44 %38 = landingpad { i8*, i32 } cleanup %39 = extractvalue { i8*, i32 } %38, 0 store i8* %39, i8** %exn.slot, align 8 %40 = extractvalue { i8*, i32 } %38, 1 store i32 %40, i32* %ehselector.slot, align 4 %41 = bitcast %"class.thrust::detail::normal_iterator.56"* %new_storage_end to i8* call void @llvm.lifetime.end(i64 8, i8* %41) #5 br label %ehcleanup76 ehcleanup76: ; preds = %lpad51, %lpad43 invoke void @__cxa_end_catch() to label %invoke.cont77 unwind label %terminate.lpad invoke.cont77: ; preds = %ehcleanup76 br label %ehcleanup78 try.cont: ; preds = %invoke.cont36 %42 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %42) #5 br label %return return: ; preds = %try.cont, %if.then ret void ehcleanup78: ; preds = %invoke.cont77, %cleanup.done %43 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %43) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup78 %exn79 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn79, 0 %lpad.val80 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val80 terminate.lpad: ; preds = %ehcleanup76 %44 = landingpad { i8*, i32 } catch i8* null %45 = extractvalue { i8*, i32 } %44, 0 call void @__clang_call_terminate(i8* %45) #13 unreachable unreachable: ; preds = %invoke.cont74, %invoke.cont14 unreachable } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKaEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_(i8* %first.coerce, i8* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp5 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive6, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp4, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive8, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKaEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE(i8* %4, i8* %5) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKaEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE(i8* %first.coerce, i8* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to %"class.thrust::iterator_facade.114"* %2 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to %"class.thrust::iterator_facade.114"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_aS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.114"* dereferenceable(1) %1, %"class.thrust::iterator_facade.114"* dereferenceable(1) %2) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_aS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.114"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.114"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.114"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.114"*, align 8 store %"class.thrust::iterator_facade.114"* %lhs, %"class.thrust::iterator_facade.114"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.114"* %rhs, %"class.thrust::iterator_facade.114"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.114"*, %"class.thrust::iterator_facade.114"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.114"* %0 to %"class.thrust::detail::normal_iterator.112"* %2 = load %"class.thrust::iterator_facade.114"*, %"class.thrust::iterator_facade.114"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.114"* %2 to %"class.thrust::detail::normal_iterator.112"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKaEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKaEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.112"* %f1, %"class.thrust::detail::normal_iterator.112"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.112"* %f2, %"class.thrust::detail::normal_iterator.112"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKaEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKaEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 store %"class.thrust::detail::normal_iterator.112"* %f1, %"class.thrust::detail::normal_iterator.112"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.112"* %f2, %"class.thrust::detail::normal_iterator.112"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.112"* %1 to %"class.thrust::iterator_adaptor.113"* %3 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.112"* %3 to %"class.thrust::iterator_adaptor.113"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.113"* %2, %"class.thrust::iterator_adaptor.113"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.113"* %this, %"class.thrust::iterator_adaptor.113"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.113"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.113"*, align 8 store %"class.thrust::iterator_adaptor.113"* %this, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.113"* %y, %"class.thrust::iterator_adaptor.113"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.113"*, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.113"*, %"class.thrust::iterator_adaptor.113"** %y.addr, align 8 %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.113"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %this1, i32 0, i32 0 %2 = load i8*, i8** %m_iterator, align 8, !tbaa !71 %sub.ptr.lhs.cast = ptrtoint i8* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i8* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast ret i64 %sub.ptr.sub } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.113"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.113"*, align 8 store %"class.thrust::iterator_adaptor.113"* %this, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.113"*, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %this1, i32 0, i32 0 ret i8** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.55"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp7 = alloca %"class.thrust::device_ptr", align 8 store %"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE4sizeEv(%"class.thrust::detail::contiguous_storage.55"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.56"* %m_begin to %"class.thrust::iterator_adaptor.57"* %call2 = call dereferenceable(8) %"class.thrust::device_ptr"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.57"* %0) %1 = bitcast %"class.thrust::device_ptr"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE4sizeEv(%"class.thrust::detail::contiguous_storage.55"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive5, align 8 call void @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE10deallocateERS3_NS_10device_ptrIaEEm(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %m_allocator, i8* %3, i64 %call3) %m_begin6 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 1 call void @_ZN6thrust10device_ptrIaEC2IaEEPT_(%"class.thrust::device_ptr"* %agg.tmp7, i8* null) %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive9, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive10, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIaEEEC2ES3_(%"class.thrust::detail::normal_iterator.56"* %ref.tmp, i8* %4) %5 = bitcast %"class.thrust::detail::normal_iterator.56"* %m_begin6 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.56"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !68 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZN6thrust3maxImEET_RKS1_S3_(i64* dereferenceable(8) %lhs, i64* dereferenceable(8) %rhs) #1 comdat { entry: %lhs.addr = alloca i64*, align 8 %rhs.addr = alloca i64*, align 8 store i64* %lhs, i64** %lhs.addr, align 8, !tbaa !7 store i64* %rhs, i64** %rhs.addr, align 8, !tbaa !7 %0 = load i64*, i64** %lhs.addr, align 8 %1 = load i64, i64* %0, align 8, !tbaa !13 %2 = load i64*, i64** %rhs.addr, align 8 %3 = load i64, i64* %2, align 8, !tbaa !13 %cmp = icmp ult i64 %1, %3 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %4 = load i64*, i64** %rhs.addr, align 8 %5 = load i64, i64* %4, align 8, !tbaa !13 br label %cond.end cond.false: ; preds = %entry %6 = load i64*, i64** %lhs.addr, align 8 %7 = load i64, i64* %6, align 8, !tbaa !13 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %5, %cond.true ], [ %7, %cond.false ] ret i64 %cond } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE8capacityEv(%"class.thrust::detail::vector_base.54"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE4sizeEv(%"class.thrust::detail::contiguous_storage.55"* %m_storage) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZN6thrust3minImEET_RKS1_S3_(i64* dereferenceable(8) %lhs, i64* dereferenceable(8) %rhs) #1 comdat { entry: %lhs.addr = alloca i64*, align 8 %rhs.addr = alloca i64*, align 8 store i64* %lhs, i64** %lhs.addr, align 8, !tbaa !7 store i64* %rhs, i64** %rhs.addr, align 8, !tbaa !7 %0 = load i64*, i64** %rhs.addr, align 8 %1 = load i64, i64* %0, align 8, !tbaa !13 %2 = load i64*, i64** %lhs.addr, align 8 %3 = load i64, i64* %2, align 8, !tbaa !13 %cmp = icmp ult i64 %1, %3 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %4 = load i64*, i64** %rhs.addr, align 8 %5 = load i64, i64* %4, align 8, !tbaa !13 br label %cond.end cond.false: ; preds = %entry %6 = load i64*, i64** %lhs.addr, align 8 %7 = load i64, i64* %6, align 8, !tbaa !13 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %5, %cond.true ], [ %7, %cond.false ] ret i64 %cond } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE8max_sizeEv(%"class.thrust::detail::vector_base.54"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.55"* %m_storage) ret i64 %call } declare i8* @__cxa_allocate_exception(i64) declare void @_ZNSt12length_errorC1ERKSs(%"class.std::length_error"*, %"class.std::basic_string"* dereferenceable(8)) unnamed_addr #3 ; Function Attrs: nounwind declare void @_ZNSt12length_errorD1Ev(%"class.std::length_error"*) unnamed_addr #4 declare void @__cxa_throw(i8*, i8*, i8*) declare void @__cxa_free_exception(i8*) ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE8allocateEm(%"class.thrust::detail::contiguous_storage.55"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 %ref.tmp8 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr", align 8 store %"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i8* @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE8allocateERS3_m(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %m_allocator, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive2, i32 0, i32 0 store i8* %call, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive6, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIaEEEC2ES3_(%"class.thrust::detail::normal_iterator.56"* %ref.tmp, i8* %2) %3 = bitcast %"class.thrust::detail::normal_iterator.56"* %m_begin to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.56"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 2 store i64 %5, i64* %m_size, align 8, !tbaa !68 br label %if.end if.else: ; preds = %entry %m_begin7 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 1 call void @_ZN6thrust10device_ptrIaEC2IaEEPT_(%"class.thrust::device_ptr"* %agg.tmp9, i8* null) %coerce.dive10 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive11, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive12, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIaEEEC2ES3_(%"class.thrust::detail::normal_iterator.56"* %ref.tmp8, i8* %6) %7 = bitcast %"class.thrust::detail::normal_iterator.56"* %m_begin7 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.56"* %ref.tmp8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %m_size13 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 2 store i64 0, i64* %m_size13, align 8, !tbaa !68 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE18uninitialized_copyINS0_15normal_iteratorIPKaEEEENS6_INS_10device_ptrIaEEEET_SD_SC_(%"class.thrust::detail::contiguous_storage.55"* %this, i8* %first.coerce, i8* %last.coerce, i8* %result.coerce) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.56", align 8 %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::detail::normal_iterator.56", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 %from_system = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp12 = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive7, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive8, align 8 store %"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8, !tbaa !1 %this9 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to %"struct.thrust::execution_policy.88"* %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this9, i32 0, i32 0 %2 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp10 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp11 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.56"* %result to %"class.thrust::iterator_adaptor.57"* %call = call dereferenceable(8) %"class.thrust::device_ptr"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.57"* %6) %7 = bitcast %"class.thrust::device_ptr"* %agg.tmp12 to i8* %8 = bitcast %"class.thrust::device_ptr"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp10, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive13, i32 0, i32 0 %9 = load i8*, i8** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp11, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive15, i32 0, i32 0 %10 = load i8*, i8** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp12, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive18, i32 0, i32 0 %11 = load i8*, i8** %coerce.dive19, align 8 %call20 = call i8* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIaEENS0_15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_RNS_16execution_policyIT_EERT0_T1_SL_SE_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"class.thrust::device_malloc_allocator"* dereferenceable(1) %m_allocator, i8* %9, i8* %10, i8* %11) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive22, i32 0, i32 0 store i8* %call20, i8** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive25, i32 0, i32 0 %12 = load i8*, i8** %coerce.dive26, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIaEEEC2ES3_(%"class.thrust::detail::normal_iterator.56"* %retval, i8* %12) %13 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.end(i64 1, i8* %13) #5 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %retval, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive27, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive30, i32 0, i32 0 %14 = load i8*, i8** %coerce.dive31, align 8 ret i8* %14 } ; Function Attrs: nounwind uwtable define linkonce_odr i8* @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE5beginEv(%"class.thrust::detail::contiguous_storage.55"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.56", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 store %"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.56"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.56"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive5, align 8 ret i8* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.56"* %i, %"class.thrust::detail::normal_iterator.56"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE7destroyENS0_15normal_iteratorINS_10device_ptrIaEEEES8_(%"class.thrust::detail::contiguous_storage.55"* %this, i8* %first.coerce, i8* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.56", align 8 %last = alloca %"class.thrust::detail::normal_iterator.56", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive3, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive8, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive9, align 8 store %"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8, !tbaa !1 %this10 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this10, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.56"* %first to %"class.thrust::iterator_adaptor.57"* %call = call dereferenceable(8) %"class.thrust::device_ptr"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.57"* %0) %1 = bitcast %"class.thrust::device_ptr"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.56"* %last to %"class.thrust::iterator_facade.58"* %4 = bitcast %"class.thrust::detail::normal_iterator.56"* %first to %"class.thrust::iterator_facade.58"* %call11 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElS5_aS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.58"* dereferenceable(1) %3, %"class.thrust::iterator_facade.58"* dereferenceable(1) %4) %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive13, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive14, align 8 call void @_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorIaEENS_10device_ptrIaEElEEvRT_T0_T1_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %m_allocator, i8* %5, i64 %call11) ret void } declare void @__cxa_rethrow() declare void @__cxa_end_catch() ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE4sizeEv(%"class.thrust::detail::contiguous_storage.55"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 store %"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !68 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE10deallocateERS3_NS_10device_ptrIaEEm(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %a, i8* %p.coerce, i64 %n) #8 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 store i8* %p.coerce, i8** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive5, align 8 call void @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE10deallocateERS3_NS_10device_ptrIaEEmEN19workaround_warnings10deallocateES5_S7_m(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %0, i8* %4, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.57"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.57"*, align 8 store %"class.thrust::iterator_adaptor.57"* %this, %"class.thrust::iterator_adaptor.57"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.57"*, %"class.thrust::iterator_adaptor.57"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %this1, i32 0, i32 0 ret %"class.thrust::device_ptr"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE10deallocateERS3_NS_10device_ptrIaEEmEN19workaround_warnings10deallocateES5_S7_m(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %a, i8* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 store i8* %p.coerce, i8** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive5, align 8 call void @_ZN6thrust23device_malloc_allocatorIaE10deallocateENS_10device_ptrIaEEm(%"class.thrust::device_malloc_allocator"* %0, i8* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorIaE10deallocateENS_10device_ptrIaEEm(%"class.thrust::device_malloc_allocator"* %this, i8* %p.coerce, i64 %cnt) #8 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr", align 8 %this.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %cnt.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.115", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 store i8* %p.coerce, i8** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator"* %this, %"class.thrust::device_malloc_allocator"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this3 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %this.addr, align 8 call void @_ZN6thrust10device_ptrIvEC2IaEERKNS0_IT_EE(%"class.thrust::device_ptr.115"* %agg.tmp, %"class.thrust::device_ptr"* dereferenceable(8) %p) %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive5, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive6, align 8 call void @_ZN6thrust11device_freeENS_10device_ptrIvEE(i8* %0) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust11device_freeENS_10device_ptrIvEE(i8* %ptr.coerce) #8 comdat { entry: %ptr = alloca %"class.thrust::device_ptr.115", align 8 %s = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::device_ptr.115", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive1, i32 0, i32 0 store i8* %ptr.coerce, i8** %coerce.dive2, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to %"struct.thrust::detail::execution_policy_base.121"* %2 = bitcast %"class.thrust::device_ptr.115"* %agg.tmp to i8* %3 = bitcast %"class.thrust::device_ptr.115"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive4, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive5, align 8 call void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_10device_ptrIvEEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i8* %4) %5 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.end(i64 1, i8* %5) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIvEC2IaEERKNS0_IT_EE(%"class.thrust::device_ptr.115"* %this, %"class.thrust::device_ptr"* dereferenceable(8) %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.115"*, align 8 %other.addr = alloca %"class.thrust::device_ptr"*, align 8 store %"class.thrust::device_ptr.115"* %this, %"class.thrust::device_ptr.115"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr"* %other, %"class.thrust::device_ptr"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_ptr.115"*, %"class.thrust::device_ptr.115"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.115"* %this1 to %"class.thrust::pointer.116"* %1 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %other.addr, align 8 call void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_IaEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISC_S9_vE4typeE(%"class.thrust::pointer.116"* %0, %"class.thrust::device_ptr"* dereferenceable(8) %1, i8* null) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_10device_ptrIvEEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i8* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::device_ptr.115", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.115", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive1, i32 0, i32 0 store i8* %ptr.coerce, i8** %coerce.dive2, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call3 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call3 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::device_ptr.115"* %agg.tmp to i8* %3 = bitcast %"class.thrust::device_ptr.115"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive5, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive6, align 8 call void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_10device_ptrIvEEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, i8* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_10device_ptrIvEEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1), i8* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::device_ptr.115", align 8 %.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive1, i32 0, i32 0 store i8* %ptr.coerce, i8** %coerce.dive2, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %0, %"struct.thrust::system::cuda::detail::execution_policy.119"** %.addr, align 8, !tbaa !7 %call = call i8* @_ZN6thrust16raw_pointer_castINS_10device_ptrIvEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(%"class.thrust::device_ptr.115"* dereferenceable(8) %ptr) %call3 = call i32 @cudaFree(i8* %call) call void @_ZN6thrust6system4cuda6detail14throw_on_errorE9cudaErrorPKc(i32 %call3, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.24, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %x) #9 comdat { entry: %x.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %x, %"struct.thrust::detail::execution_policy_base.121"** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %x.addr, align 8 %1 = bitcast %"struct.thrust::detail::execution_policy_base.121"* %0 to %"struct.thrust::system::cuda::detail::tag"* ret %"struct.thrust::system::cuda::detail::tag"* %1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %x) #9 comdat { entry: %x.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %x, %"struct.thrust::detail::execution_policy_base.121"** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %x.addr, align 8 ret %"struct.thrust::detail::execution_policy_base.121"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail14throw_on_errorE9cudaErrorPKc(i32 %error, i8* %message) #8 comdat { entry: %error.addr = alloca i32, align 4 %message.addr = alloca i8*, align 8 store i32 %error, i32* %error.addr, align 4, !tbaa !73 store i8* %message, i8** %message.addr, align 8, !tbaa !1 %0 = load i32, i32* %error.addr, align 4, !tbaa !73 %1 = load i8*, i8** %message.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %0, i8* %1) ret void } declare i32 @cudaFree(i8*) #3 ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust16raw_pointer_castINS_10device_ptrIvEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(%"class.thrust::device_ptr.115"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::device_ptr.115"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.115", align 8 store %"class.thrust::device_ptr.115"* %ptr, %"class.thrust::device_ptr.115"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.115"*, %"class.thrust::device_ptr.115"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.115"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.115"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive1, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive2, align 8 %call = call i8* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIvEEE3getES3_(i8* %3) ret i8* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %e, i8* %message) #8 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %e.addr = alloca i32, align 4 %message.addr = alloca i8*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store i32 %e, i32* %e.addr, align 4, !tbaa !73 store i8* %message, i8** %message.addr, align 8, !tbaa !1 %0 = load i32, i32* %e.addr, align 4, !tbaa !73 %tobool = icmp ne i32 %0, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %exception = call i8* @__cxa_allocate_exception(i64 40) #5 %1 = bitcast i8* %exception to %"class.thrust::system::system_error"* %2 = load i32, i32* %e.addr, align 4, !tbaa !73 %call = invoke dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system13cuda_categoryEv() to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then %3 = load i8*, i8** %message.addr, align 8, !tbaa !1 invoke void @_ZN6thrust6system12system_errorC2EiRKNS0_14error_categoryEPKc(%"class.thrust::system::system_error"* %1, i32 %2, %"class.thrust::system::error_category"* dereferenceable(8) %call, i8* %3) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont call void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system12system_errorE to i8*), i8* bitcast (void (%"class.thrust::system::system_error"*)* @_ZN6thrust6system12system_errorD2Ev to i8*)) #15 unreachable lpad: ; preds = %invoke.cont, %if.then %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @__cxa_free_exception(i8* %exception) #5 br label %eh.resume if.end: ; preds = %entry ret void eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system13cuda_categoryEv() #8 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %exn.slot = alloca i8* %ehselector.slot = alloca i32 %0 = load atomic i8, i8* bitcast (i64* @_ZGVZN6thrust6system13cuda_categoryEvE6result to i8*) acquire, align 8 %guard.uninitialized = icmp eq i8 %0, 0 br i1 %guard.uninitialized, label %init.check, label %init.end init.check: ; preds = %entry %1 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN6thrust6system13cuda_categoryEvE6result) #5 %tobool = icmp ne i32 %1, 0 br i1 %tobool, label %init, label %init.end init: ; preds = %init.check invoke void @_ZN6thrust6system4cuda6detail19cuda_error_categoryC2Ev(%"class.thrust::system::cuda::detail::cuda_error_category"* @_ZZN6thrust6system13cuda_categoryEvE6result) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %init %2 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to void (i8*)*), i8* bitcast (%"class.thrust::system::cuda::detail::cuda_error_category"* @_ZZN6thrust6system13cuda_categoryEvE6result to i8*), i8* @__dso_handle) #5 call void @__cxa_guard_release(i64* @_ZGVZN6thrust6system13cuda_categoryEvE6result) #5 br label %init.end init.end: ; preds = %invoke.cont, %init.check, %entry ret %"class.thrust::system::error_category"* getelementptr inbounds (%"class.thrust::system::cuda::detail::cuda_error_category", %"class.thrust::system::cuda::detail::cuda_error_category"* @_ZZN6thrust6system13cuda_categoryEvE6result, i32 0, i32 0) lpad: ; preds = %init %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 call void @__cxa_guard_abort(i64* @_ZGVZN6thrust6system13cuda_categoryEvE6result) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val1 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val1 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system12system_errorC2EiRKNS0_14error_categoryEPKc(%"class.thrust::system::system_error"* %this, i32 %ev, %"class.thrust::system::error_category"* dereferenceable(8) %ecat, i8* %what_arg) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::system::system_error"*, align 8 %ev.addr = alloca i32, align 4 %ecat.addr = alloca %"class.thrust::system::error_category"*, align 8 %what_arg.addr = alloca i8*, align 8 %ref.tmp = alloca %"class.std::basic_string", align 8 %ref.tmp2 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::system::system_error"* %this, %"class.thrust::system::system_error"** %this.addr, align 8, !tbaa !1 store i32 %ev, i32* %ev.addr, align 4, !tbaa !11 store %"class.thrust::system::error_category"* %ecat, %"class.thrust::system::error_category"** %ecat.addr, align 8, !tbaa !7 store i8* %what_arg, i8** %what_arg.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::system_error"*, %"class.thrust::system::system_error"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::system_error"* %this1 to %"class.std::runtime_error"* %1 = load i8*, i8** %what_arg.addr, align 8, !tbaa !1 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp2) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp, i8* %1, %"class.std::allocator"* dereferenceable(1) %ref.tmp2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZNSt13runtime_errorC2ERKSs(%"class.std::runtime_error"* %0, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp2) #5 %2 = bitcast %"class.thrust::system::system_error"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*], [5 x i8*]* @_ZTVN6thrust6system12system_errorE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %2, align 8, !tbaa !5 %m_error_code = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 1 %3 = load i32, i32* %ev.addr, align 4, !tbaa !11 %4 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %ecat.addr, align 8 invoke void @_ZN6thrust6system10error_codeC2EiRKNS0_14error_categoryE(%"class.thrust::system::error_code"* %m_error_code, i32 %3, %"class.thrust::system::error_category"* dereferenceable(8) %4) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %invoke.cont4 %m_what = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 2 invoke void @_ZNSsC2Ev(%"class.std::basic_string"* %m_what) to label %invoke.cont7 unwind label %lpad5 invoke.cont7: ; preds = %invoke.cont6 ret void lpad: ; preds = %entry %5 = landingpad { i8*, i32 } cleanup %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont %8 = landingpad { i8*, i32 } cleanup %9 = extractvalue { i8*, i32 } %8, 0 store i8* %9, i8** %exn.slot, align 8 %10 = extractvalue { i8*, i32 } %8, 1 store i32 %10, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp2) #5 br label %eh.resume lpad5: ; preds = %invoke.cont6, %invoke.cont4 %11 = landingpad { i8*, i32 } cleanup %12 = extractvalue { i8*, i32 } %11, 0 store i8* %12, i8** %exn.slot, align 8 %13 = extractvalue { i8*, i32 } %11, 1 store i32 %13, i32* %ehselector.slot, align 4 %14 = bitcast %"class.thrust::system::system_error"* %this1 to %"class.std::runtime_error"* call void @_ZNSt13runtime_errorD2Ev(%"class.std::runtime_error"* %14) #5 br label %eh.resume eh.resume: ; preds = %lpad5, %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val9 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val9 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system12system_errorD2Ev(%"class.thrust::system::system_error"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::system_error"*, align 8 store %"class.thrust::system::system_error"* %this, %"class.thrust::system::system_error"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::system_error"*, %"class.thrust::system::system_error"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::system_error"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*], [5 x i8*]* @_ZTVN6thrust6system12system_errorE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8, !tbaa !5 %m_what = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 2 call void @_ZNSsD2Ev(%"class.std::basic_string"* %m_what) #5 %1 = bitcast %"class.thrust::system::system_error"* %this1 to %"class.std::runtime_error"* call void @_ZNSt13runtime_errorD2Ev(%"class.std::runtime_error"* %1) #5 ret void } ; Function Attrs: nounwind declare i32 @__cxa_guard_acquire(i64*) #5 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail19cuda_error_categoryC2Ev(%"class.thrust::system::cuda::detail::cuda_error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::cuda_error_category"*, align 8 store %"class.thrust::system::cuda::detail::cuda_error_category"* %this, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::cuda_error_category"*, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::cuda_error_category"* %this1 to %"class.thrust::system::error_category"* call void @_ZN6thrust6system14error_categoryC2Ev(%"class.thrust::system::error_category"* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::cuda_error_category"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([9 x i8*], [9 x i8*]* @_ZTVN6thrust6system4cuda6detail19cuda_error_categoryE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !5 ret void } ; Function Attrs: nounwind declare void @__cxa_guard_abort(i64*) #5 ; Function Attrs: nounwind declare void @__cxa_guard_release(i64*) #5 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system14error_categoryC2Ev(%"class.thrust::system::error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_category"*, align 8 store %"class.thrust::system::error_category"* %this, %"class.thrust::system::error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::error_category"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([9 x i8*], [9 x i8*]* @_ZTVN6thrust6system14error_categoryE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8, !tbaa !5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail19cuda_error_categoryD0Ev(%"class.thrust::system::cuda::detail::cuda_error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::cuda_error_category"*, align 8 store %"class.thrust::system::cuda::detail::cuda_error_category"* %this, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::cuda_error_category"*, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8 call void bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to void (%"class.thrust::system::cuda::detail::cuda_error_category"*)*)(%"class.thrust::system::cuda::detail::cuda_error_category"* %this1) #5 %0 = bitcast %"class.thrust::system::cuda::detail::cuda_error_category"* %this1 to i8* call void @_ZdlPv(i8* %0) #14 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZNK6thrust6system4cuda6detail19cuda_error_category4nameEv(%"class.thrust::system::cuda::detail::cuda_error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::cuda_error_category"*, align 8 store %"class.thrust::system::cuda::detail::cuda_error_category"* %this, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::cuda_error_category"*, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8 ret i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i32 0, i32 0) } ; Function Attrs: inlinehint uwtable define linkonce_odr { i32, %"class.thrust::system::error_category"* } @_ZNK6thrust6system4cuda6detail19cuda_error_category23default_error_conditionEi(%"class.thrust::system::cuda::detail::cuda_error_category"* %this, i32 %ev) unnamed_addr #8 comdat align 2 { entry: %retval = alloca %"class.thrust::system::error_condition", align 8 %this.addr = alloca %"class.thrust::system::cuda::detail::cuda_error_category"*, align 8 %ev.addr = alloca i32, align 4 store %"class.thrust::system::cuda::detail::cuda_error_category"* %this, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8, !tbaa !1 store i32 %ev, i32* %ev.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::cuda_error_category"*, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8 %0 = load i32, i32* %ev.addr, align 4, !tbaa !11 %cmp = icmp slt i32 %0, 10000 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load i32, i32* %ev.addr, align 4, !tbaa !11 %call = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4cuda4errc6errc_tE(i32 %1) %2 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %3 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %2, i32 0, i32 0 %4 = extractvalue { i32, %"class.thrust::system::error_category"* } %call, 0 store i32 %4, i32* %3, align 8 %5 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %2, i32 0, i32 1 %6 = extractvalue { i32, %"class.thrust::system::error_category"* } %call, 1 store %"class.thrust::system::error_category"* %6, %"class.thrust::system::error_category"** %5, align 8 br label %return if.end: ; preds = %entry %call2 = call dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system15system_categoryEv() %7 = bitcast %"class.thrust::system::error_category"* %call2 to { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)*** %vtable = load { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)**, { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)*** %7, align 8, !tbaa !5 %vfn = getelementptr inbounds { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)*, { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)** %vtable, i64 3 %8 = load { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)*, { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)** %vfn, align 8 %9 = load i32, i32* %ev.addr, align 4, !tbaa !11 %call3 = call { i32, %"class.thrust::system::error_category"* } %8(%"class.thrust::system::error_category"* %call2, i32 %9) %10 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %11 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %10, i32 0, i32 0 %12 = extractvalue { i32, %"class.thrust::system::error_category"* } %call3, 0 store i32 %12, i32* %11, align 8 %13 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %10, i32 0, i32 1 %14 = extractvalue { i32, %"class.thrust::system::error_category"* } %call3, 1 store %"class.thrust::system::error_category"* %14, %"class.thrust::system::error_category"** %13, align 8 br label %return return: ; preds = %if.end, %if.then %15 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %16 = load { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %15, align 8 ret { i32, %"class.thrust::system::error_category"* } %16 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6system14error_category10equivalentEiRKNS0_15error_conditionE(%"class.thrust::system::error_category"* %this, i32 %code, %"class.thrust::system::error_condition"* dereferenceable(16) %condition) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_category"*, align 8 %code.addr = alloca i32, align 4 %condition.addr = alloca %"class.thrust::system::error_condition"*, align 8 %ref.tmp = alloca %"class.thrust::system::error_condition", align 8 store %"class.thrust::system::error_category"* %this, %"class.thrust::system::error_category"** %this.addr, align 8, !tbaa !1 store i32 %code, i32* %code.addr, align 4, !tbaa !11 store %"class.thrust::system::error_condition"* %condition, %"class.thrust::system::error_condition"** %condition.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::error_category"* %this1 to { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)*** %vtable = load { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)**, { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)*** %0, align 8, !tbaa !5 %vfn = getelementptr inbounds { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)*, { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)** %vtable, i64 3 %1 = load { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)*, { i32, %"class.thrust::system::error_category"* } (%"class.thrust::system::error_category"*, i32)** %vfn, align 8 %2 = load i32, i32* %code.addr, align 4, !tbaa !11 %call = call { i32, %"class.thrust::system::error_category"* } %1(%"class.thrust::system::error_category"* %this1, i32 %2) %3 = bitcast %"class.thrust::system::error_condition"* %ref.tmp to { i32, %"class.thrust::system::error_category"* }* %4 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %3, i32 0, i32 0 %5 = extractvalue { i32, %"class.thrust::system::error_category"* } %call, 0 store i32 %5, i32* %4, align 8 %6 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %3, i32 0, i32 1 %7 = extractvalue { i32, %"class.thrust::system::error_category"* } %call, 1 store %"class.thrust::system::error_category"* %7, %"class.thrust::system::error_category"** %6, align 8 %8 = load %"class.thrust::system::error_condition"*, %"class.thrust::system::error_condition"** %condition.addr, align 8 %call2 = call zeroext i1 @_ZN6thrust6systemeqERKNS0_15error_conditionES3_(%"class.thrust::system::error_condition"* dereferenceable(16) %ref.tmp, %"class.thrust::system::error_condition"* dereferenceable(16) %8) ret i1 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6system14error_category10equivalentERKNS0_10error_codeEi(%"class.thrust::system::error_category"* %this, %"class.thrust::system::error_code"* dereferenceable(16) %code, i32 %condition) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_category"*, align 8 %code.addr = alloca %"class.thrust::system::error_code"*, align 8 %condition.addr = alloca i32, align 4 %result = alloca i8, align 1 store %"class.thrust::system::error_category"* %this, %"class.thrust::system::error_category"** %this.addr, align 8, !tbaa !1 store %"class.thrust::system::error_code"* %code, %"class.thrust::system::error_code"** %code.addr, align 8, !tbaa !7 store i32 %condition, i32* %condition.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %this.addr, align 8 call void @llvm.lifetime.start(i64 1, i8* %result) #5 %0 = load %"class.thrust::system::error_code"*, %"class.thrust::system::error_code"** %code.addr, align 8 %call = call dereferenceable(8) %"class.thrust::system::error_category"* @_ZNK6thrust6system10error_code8categoryEv(%"class.thrust::system::error_code"* %0) %call2 = call zeroext i1 @_ZNK6thrust6system14error_categoryeqERKS1_(%"class.thrust::system::error_category"* %this1, %"class.thrust::system::error_category"* dereferenceable(8) %call) br i1 %call2, label %land.rhs, label %land.end land.rhs: ; preds = %entry %1 = load %"class.thrust::system::error_code"*, %"class.thrust::system::error_code"** %code.addr, align 8 %call3 = call i32 @_ZNK6thrust6system10error_code5valueEv(%"class.thrust::system::error_code"* %1) %2 = load i32, i32* %condition.addr, align 4, !tbaa !11 %cmp = icmp eq i32 %call3, %2 br label %land.end land.end: ; preds = %land.rhs, %entry %3 = phi i1 [ false, %entry ], [ %cmp, %land.rhs ] %frombool = zext i1 %3 to i8 store i8 %frombool, i8* %result, align 1, !tbaa !75 %4 = load i8, i8* %result, align 1, !tbaa !75, !range !77 %tobool = trunc i8 %4 to i1 call void @llvm.lifetime.end(i64 1, i8* %result) #5 ret i1 %tobool } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6system4cuda6detail19cuda_error_category7messageEi(%"class.std::basic_string"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::cuda_error_category"* %this, i32 %ev) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::cuda_error_category"*, align 8 %ev.addr = alloca i32, align 4 %ref.tmp = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %c_str = alloca i8*, align 8 %ref.tmp3 = alloca %"class.std::allocator", align 1 %cleanup.cond = alloca i1, align 1 store %"class.thrust::system::cuda::detail::cuda_error_category"* %this, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8, !tbaa !1 store i32 %ev, i32* %ev.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::cuda_error_category"*, %"class.thrust::system::cuda::detail::cuda_error_category"** %this.addr, align 8 %0 = load atomic i8, i8* bitcast (i64* @_ZGVZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err to i8*) acquire, align 8 %guard.uninitialized = icmp eq i8 %0, 0 br i1 %guard.uninitialized, label %init.check, label %init.end init.check: ; preds = %entry %1 = call i32 @__cxa_guard_acquire(i64* @_ZGVZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err) #5 %tobool = icmp ne i32 %1, 0 br i1 %tobool, label %init, label %init.end init: ; preds = %init.check call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* @_ZZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.28, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %init call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 %2 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.std::basic_string"*)* @_ZNSsD2Ev to void (i8*)*), i8* bitcast (%"class.std::basic_string"* @_ZZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err to i8*), i8* @__dso_handle) #5 call void @__cxa_guard_release(i64* @_ZGVZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err) #5 br label %init.end init.end: ; preds = %invoke.cont, %init.check, %entry %3 = bitcast i8** %c_str to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load i32, i32* %ev.addr, align 4, !tbaa !11 %call = call i8* @cudaGetErrorString(i32 %4) store i8* %call, i8** %c_str, align 8, !tbaa !1 %5 = load i8*, i8** %c_str, align 8, !tbaa !1 %tobool2 = icmp ne i8* %5, null store i1 false, i1* %cleanup.cond, align 1 br i1 %tobool2, label %cond.true, label %cond.false cond.true: ; preds = %init.end %6 = load i8*, i8** %c_str, align 8, !tbaa !1 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp3) #5 store i1 true, i1* %cleanup.cond, align 1 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %agg.result, i8* %6, %"class.std::allocator"* dereferenceable(1) %ref.tmp3) to label %invoke.cont5 unwind label %lpad4 invoke.cont5: ; preds = %cond.true br label %cond.end cond.false: ; preds = %init.end invoke void @_ZNSsC1ERKSs(%"class.std::basic_string"* %agg.result, %"class.std::basic_string"* dereferenceable(8) @_ZZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err) to label %invoke.cont6 unwind label %lpad4 invoke.cont6: ; preds = %cond.false br label %cond.end cond.end: ; preds = %invoke.cont6, %invoke.cont5 %cleanup.is_active = load i1, i1* %cleanup.cond, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %cond.end call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp3) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %cond.end %7 = bitcast i8** %c_str to i8* call void @llvm.lifetime.end(i64 8, i8* %7) #5 ret void lpad: ; preds = %init %8 = landingpad { i8*, i32 } cleanup %9 = extractvalue { i8*, i32 } %8, 0 store i8* %9, i8** %exn.slot, align 8 %10 = extractvalue { i8*, i32 } %8, 1 store i32 %10, i32* %ehselector.slot, align 4 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 call void @__cxa_guard_abort(i64* @_ZGVZNK6thrust6system4cuda6detail19cuda_error_category7messageEiE11unknown_err) #5 br label %eh.resume lpad4: ; preds = %cond.false, %cond.true %11 = landingpad { i8*, i32 } cleanup %12 = extractvalue { i8*, i32 } %11, 0 store i8* %12, i8** %exn.slot, align 8 %13 = extractvalue { i8*, i32 } %11, 1 store i32 %13, i32* %ehselector.slot, align 4 %cleanup.is_active7 = load i1, i1* %cleanup.cond, align 1 br i1 %cleanup.is_active7, label %cleanup.action8, label %cleanup.done9 cleanup.action8: ; preds = %lpad4 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp3) #5 br label %cleanup.done9 cleanup.done9: ; preds = %cleanup.action8, %lpad4 %14 = bitcast i8** %c_str to i8* call void @llvm.lifetime.end(i64 8, i8* %14) #5 br label %eh.resume eh.resume: ; preds = %cleanup.done9, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val10 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val10 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system14error_categoryD2Ev(%"class.thrust::system::error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_category"*, align 8 store %"class.thrust::system::error_category"* %this, %"class.thrust::system::error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::error_category"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([9 x i8*], [9 x i8*]* @_ZTVN6thrust6system14error_categoryE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8, !tbaa !5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system14error_categoryD0Ev(%"class.thrust::system::error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_category"*, align 8 store %"class.thrust::system::error_category"* %this, %"class.thrust::system::error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %this.addr, align 8 call void @_ZN6thrust6system14error_categoryD2Ev(%"class.thrust::system::error_category"* %this1) #5 %0 = bitcast %"class.thrust::system::error_category"* %this1 to i8* call void @_ZdlPv(i8* %0) #14 ret void } declare void @__cxa_pure_virtual() unnamed_addr ; Function Attrs: inlinehint uwtable define linkonce_odr { i32, %"class.thrust::system::error_category"* } @_ZNK6thrust6system14error_category23default_error_conditionEi(%"class.thrust::system::error_category"* %this, i32 %ev) unnamed_addr #8 comdat align 2 { entry: %retval = alloca %"class.thrust::system::error_condition", align 8 %this.addr = alloca %"class.thrust::system::error_category"*, align 8 %ev.addr = alloca i32, align 4 store %"class.thrust::system::error_category"* %this, %"class.thrust::system::error_category"** %this.addr, align 8, !tbaa !1 store i32 %ev, i32* %ev.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %this.addr, align 8 %0 = load i32, i32* %ev.addr, align 4, !tbaa !11 call void @_ZN6thrust6system15error_conditionC2EiRKNS0_14error_categoryE(%"class.thrust::system::error_condition"* %retval, i32 %0, %"class.thrust::system::error_category"* dereferenceable(8) %this1) %1 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %2 = load { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %1, align 8 ret { i32, %"class.thrust::system::error_category"* } %2 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system15error_conditionC2EiRKNS0_14error_categoryE(%"class.thrust::system::error_condition"* %this, i32 %val, %"class.thrust::system::error_category"* dereferenceable(8) %cat) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_condition"*, align 8 %val.addr = alloca i32, align 4 %cat.addr = alloca %"class.thrust::system::error_category"*, align 8 store %"class.thrust::system::error_condition"* %this, %"class.thrust::system::error_condition"** %this.addr, align 8, !tbaa !1 store i32 %val, i32* %val.addr, align 4, !tbaa !11 store %"class.thrust::system::error_category"* %cat, %"class.thrust::system::error_category"** %cat.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::error_condition"*, %"class.thrust::system::error_condition"** %this.addr, align 8 %m_val = getelementptr inbounds %"class.thrust::system::error_condition", %"class.thrust::system::error_condition"* %this1, i32 0, i32 0 %0 = load i32, i32* %val.addr, align 4, !tbaa !11 store i32 %0, i32* %m_val, align 8, !tbaa !78 %m_cat = getelementptr inbounds %"class.thrust::system::error_condition", %"class.thrust::system::error_condition"* %this1, i32 0, i32 1 %1 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %cat.addr, align 8 store %"class.thrust::system::error_category"* %1, %"class.thrust::system::error_category"** %m_cat, align 8, !tbaa !80 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4cuda4errc6errc_tE(i32 %e) #8 comdat { entry: %retval = alloca %"class.thrust::system::error_condition", align 8 %e.addr = alloca i32, align 4 store i32 %e, i32* %e.addr, align 4, !tbaa !81 %0 = load i32, i32* %e.addr, align 4, !tbaa !81 %call = call dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system13cuda_categoryEv() call void @_ZN6thrust6system15error_conditionC2EiRKNS0_14error_categoryE(%"class.thrust::system::error_condition"* %retval, i32 %0, %"class.thrust::system::error_category"* dereferenceable(8) %call) %1 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %2 = load { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %1, align 8 ret { i32, %"class.thrust::system::error_category"* } %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system15system_categoryEv() #8 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %exn.slot = alloca i8* %ehselector.slot = alloca i32 %0 = load atomic i8, i8* bitcast (i64* @_ZGVZN6thrust6system15system_categoryEvE6result to i8*) acquire, align 8 %guard.uninitialized = icmp eq i8 %0, 0 br i1 %guard.uninitialized, label %init.check, label %init.end init.check: ; preds = %entry %1 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN6thrust6system15system_categoryEvE6result) #5 %tobool = icmp ne i32 %1, 0 br i1 %tobool, label %init, label %init.end init: ; preds = %init.check invoke void @_ZN6thrust6system6detail21system_error_categoryC2Ev(%"class.thrust::system::detail::system_error_category"* @_ZZN6thrust6system15system_categoryEvE6result) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %init %2 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to void (i8*)*), i8* bitcast (%"class.thrust::system::detail::system_error_category"* @_ZZN6thrust6system15system_categoryEvE6result to i8*), i8* @__dso_handle) #5 call void @__cxa_guard_release(i64* @_ZGVZN6thrust6system15system_categoryEvE6result) #5 br label %init.end init.end: ; preds = %invoke.cont, %init.check, %entry ret %"class.thrust::system::error_category"* getelementptr inbounds (%"class.thrust::system::detail::system_error_category", %"class.thrust::system::detail::system_error_category"* @_ZZN6thrust6system15system_categoryEvE6result, i32 0, i32 0) lpad: ; preds = %init %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 call void @__cxa_guard_abort(i64* @_ZGVZN6thrust6system15system_categoryEvE6result) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val1 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail21system_error_categoryC2Ev(%"class.thrust::system::detail::system_error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::system_error_category"*, align 8 store %"class.thrust::system::detail::system_error_category"* %this, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::detail::system_error_category"*, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::detail::system_error_category"* %this1 to %"class.thrust::system::error_category"* call void @_ZN6thrust6system14error_categoryC2Ev(%"class.thrust::system::error_category"* %0) #5 %1 = bitcast %"class.thrust::system::detail::system_error_category"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([9 x i8*], [9 x i8*]* @_ZTVN6thrust6system6detail21system_error_categoryE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail21system_error_categoryD0Ev(%"class.thrust::system::detail::system_error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::system_error_category"*, align 8 store %"class.thrust::system::detail::system_error_category"* %this, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::detail::system_error_category"*, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8 call void bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to void (%"class.thrust::system::detail::system_error_category"*)*)(%"class.thrust::system::detail::system_error_category"* %this1) #5 %0 = bitcast %"class.thrust::system::detail::system_error_category"* %this1 to i8* call void @_ZdlPv(i8* %0) #14 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZNK6thrust6system6detail21system_error_category4nameEv(%"class.thrust::system::detail::system_error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::system_error_category"*, align 8 store %"class.thrust::system::detail::system_error_category"* %this, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::detail::system_error_category"*, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8 ret i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.26, i32 0, i32 0) } ; Function Attrs: inlinehint uwtable define linkonce_odr { i32, %"class.thrust::system::error_category"* } @_ZNK6thrust6system6detail21system_error_category23default_error_conditionEi(%"class.thrust::system::detail::system_error_category"* %this, i32 %ev) unnamed_addr #8 comdat align 2 { entry: %retval = alloca %"class.thrust::system::error_condition", align 8 %this.addr = alloca %"class.thrust::system::detail::system_error_category"*, align 8 %ev.addr = alloca i32, align 4 store %"class.thrust::system::detail::system_error_category"* %this, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8, !tbaa !1 store i32 %ev, i32* %ev.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::detail::system_error_category"*, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8 %0 = load i32, i32* %ev.addr, align 4, !tbaa !11 switch i32 %0, label %sw.default [ i32 9901, label %sw.bb i32 9902, label %sw.bb2 i32 9903, label %sw.bb4 i32 9904, label %sw.bb6 i32 9946, label %sw.bb8 i32 9947, label %sw.bb10 i32 9948, label %sw.bb12 i32 9949, label %sw.bb14 i32 9905, label %sw.bb16 i32 9950, label %sw.bb18 i32 9906, label %sw.bb20 i32 9907, label %sw.bb22 i32 9908, label %sw.bb24 i32 9909, label %sw.bb26 i32 9951, label %sw.bb28 i32 9910, label %sw.bb30 i32 9952, label %sw.bb32 i32 9953, label %sw.bb34 i32 9954, label %sw.bb36 i32 9955, label %sw.bb38 i32 9956, label %sw.bb40 i32 9957, label %sw.bb42 i32 9942, label %sw.bb44 i32 9911, label %sw.bb46 i32 9912, label %sw.bb48 i32 9945, label %sw.bb50 i32 9958, label %sw.bb52 i32 9959, label %sw.bb54 i32 9943, label %sw.bb56 i32 9960, label %sw.bb58 i32 9961, label %sw.bb60 i32 9962, label %sw.bb62 i32 9913, label %sw.bb64 i32 9914, label %sw.bb66 i32 9915, label %sw.bb68 i32 9916, label %sw.bb70 i32 9917, label %sw.bb72 i32 9963, label %sw.bb74 i32 9918, label %sw.bb76 i32 9964, label %sw.bb78 i32 9919, label %sw.bb80 i32 9920, label %sw.bb82 i32 9921, label %sw.bb84 i32 9965, label %sw.bb86 i32 9922, label %sw.bb88 i32 9966, label %sw.bb90 i32 9967, label %sw.bb92 i32 9968, label %sw.bb94 i32 9969, label %sw.bb96 i32 9970, label %sw.bb98 i32 9923, label %sw.bb100 i32 9924, label %sw.bb102 i32 9925, label %sw.bb104 i32 9971, label %sw.bb106 i32 9926, label %sw.bb108 i32 9927, label %sw.bb110 i32 9928, label %sw.bb112 i32 9972, label %sw.bb114 i32 9929, label %sw.bb116 i32 9930, label %sw.bb118 i32 9931, label %sw.bb120 i32 9973, label %sw.bb122 i32 9932, label %sw.bb124 i32 9933, label %sw.bb126 i32 9974, label %sw.bb128 i32 9975, label %sw.bb130 i32 9976, label %sw.bb132 i32 9944, label %sw.bb134 i32 9934, label %sw.bb136 i32 9935, label %sw.bb138 i32 9936, label %sw.bb140 i32 9938, label %sw.bb142 i32 9977, label %sw.bb144 i32 9978, label %sw.bb146 i32 9979, label %sw.bb148 i32 9939, label %sw.bb150 i32 9940, label %sw.bb152 i32 9941, label %sw.bb154 ] sw.bb: ; preds = %entry %call = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9901) %1 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %2 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %1, i32 0, i32 0 %3 = extractvalue { i32, %"class.thrust::system::error_category"* } %call, 0 store i32 %3, i32* %2, align 8 %4 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %1, i32 0, i32 1 %5 = extractvalue { i32, %"class.thrust::system::error_category"* } %call, 1 store %"class.thrust::system::error_category"* %5, %"class.thrust::system::error_category"** %4, align 8 br label %return sw.bb2: ; preds = %entry %call3 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9902) %6 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %7 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %6, i32 0, i32 0 %8 = extractvalue { i32, %"class.thrust::system::error_category"* } %call3, 0 store i32 %8, i32* %7, align 8 %9 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %6, i32 0, i32 1 %10 = extractvalue { i32, %"class.thrust::system::error_category"* } %call3, 1 store %"class.thrust::system::error_category"* %10, %"class.thrust::system::error_category"** %9, align 8 br label %return sw.bb4: ; preds = %entry %call5 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9903) %11 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %12 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %11, i32 0, i32 0 %13 = extractvalue { i32, %"class.thrust::system::error_category"* } %call5, 0 store i32 %13, i32* %12, align 8 %14 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %11, i32 0, i32 1 %15 = extractvalue { i32, %"class.thrust::system::error_category"* } %call5, 1 store %"class.thrust::system::error_category"* %15, %"class.thrust::system::error_category"** %14, align 8 br label %return sw.bb6: ; preds = %entry %call7 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9904) %16 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %17 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %16, i32 0, i32 0 %18 = extractvalue { i32, %"class.thrust::system::error_category"* } %call7, 0 store i32 %18, i32* %17, align 8 %19 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %16, i32 0, i32 1 %20 = extractvalue { i32, %"class.thrust::system::error_category"* } %call7, 1 store %"class.thrust::system::error_category"* %20, %"class.thrust::system::error_category"** %19, align 8 br label %return sw.bb8: ; preds = %entry %call9 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9946) %21 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %22 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %21, i32 0, i32 0 %23 = extractvalue { i32, %"class.thrust::system::error_category"* } %call9, 0 store i32 %23, i32* %22, align 8 %24 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %21, i32 0, i32 1 %25 = extractvalue { i32, %"class.thrust::system::error_category"* } %call9, 1 store %"class.thrust::system::error_category"* %25, %"class.thrust::system::error_category"** %24, align 8 br label %return sw.bb10: ; preds = %entry %call11 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9947) %26 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %27 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %26, i32 0, i32 0 %28 = extractvalue { i32, %"class.thrust::system::error_category"* } %call11, 0 store i32 %28, i32* %27, align 8 %29 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %26, i32 0, i32 1 %30 = extractvalue { i32, %"class.thrust::system::error_category"* } %call11, 1 store %"class.thrust::system::error_category"* %30, %"class.thrust::system::error_category"** %29, align 8 br label %return sw.bb12: ; preds = %entry %call13 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9948) %31 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %32 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %31, i32 0, i32 0 %33 = extractvalue { i32, %"class.thrust::system::error_category"* } %call13, 0 store i32 %33, i32* %32, align 8 %34 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %31, i32 0, i32 1 %35 = extractvalue { i32, %"class.thrust::system::error_category"* } %call13, 1 store %"class.thrust::system::error_category"* %35, %"class.thrust::system::error_category"** %34, align 8 br label %return sw.bb14: ; preds = %entry %call15 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9949) %36 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %37 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %36, i32 0, i32 0 %38 = extractvalue { i32, %"class.thrust::system::error_category"* } %call15, 0 store i32 %38, i32* %37, align 8 %39 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %36, i32 0, i32 1 %40 = extractvalue { i32, %"class.thrust::system::error_category"* } %call15, 1 store %"class.thrust::system::error_category"* %40, %"class.thrust::system::error_category"** %39, align 8 br label %return sw.bb16: ; preds = %entry %call17 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9905) %41 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %42 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %41, i32 0, i32 0 %43 = extractvalue { i32, %"class.thrust::system::error_category"* } %call17, 0 store i32 %43, i32* %42, align 8 %44 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %41, i32 0, i32 1 %45 = extractvalue { i32, %"class.thrust::system::error_category"* } %call17, 1 store %"class.thrust::system::error_category"* %45, %"class.thrust::system::error_category"** %44, align 8 br label %return sw.bb18: ; preds = %entry %call19 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9950) %46 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %47 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %46, i32 0, i32 0 %48 = extractvalue { i32, %"class.thrust::system::error_category"* } %call19, 0 store i32 %48, i32* %47, align 8 %49 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %46, i32 0, i32 1 %50 = extractvalue { i32, %"class.thrust::system::error_category"* } %call19, 1 store %"class.thrust::system::error_category"* %50, %"class.thrust::system::error_category"** %49, align 8 br label %return sw.bb20: ; preds = %entry %call21 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9906) %51 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %52 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %51, i32 0, i32 0 %53 = extractvalue { i32, %"class.thrust::system::error_category"* } %call21, 0 store i32 %53, i32* %52, align 8 %54 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %51, i32 0, i32 1 %55 = extractvalue { i32, %"class.thrust::system::error_category"* } %call21, 1 store %"class.thrust::system::error_category"* %55, %"class.thrust::system::error_category"** %54, align 8 br label %return sw.bb22: ; preds = %entry %call23 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9907) %56 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %57 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %56, i32 0, i32 0 %58 = extractvalue { i32, %"class.thrust::system::error_category"* } %call23, 0 store i32 %58, i32* %57, align 8 %59 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %56, i32 0, i32 1 %60 = extractvalue { i32, %"class.thrust::system::error_category"* } %call23, 1 store %"class.thrust::system::error_category"* %60, %"class.thrust::system::error_category"** %59, align 8 br label %return sw.bb24: ; preds = %entry %call25 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9908) %61 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %62 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %61, i32 0, i32 0 %63 = extractvalue { i32, %"class.thrust::system::error_category"* } %call25, 0 store i32 %63, i32* %62, align 8 %64 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %61, i32 0, i32 1 %65 = extractvalue { i32, %"class.thrust::system::error_category"* } %call25, 1 store %"class.thrust::system::error_category"* %65, %"class.thrust::system::error_category"** %64, align 8 br label %return sw.bb26: ; preds = %entry %call27 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9909) %66 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %67 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %66, i32 0, i32 0 %68 = extractvalue { i32, %"class.thrust::system::error_category"* } %call27, 0 store i32 %68, i32* %67, align 8 %69 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %66, i32 0, i32 1 %70 = extractvalue { i32, %"class.thrust::system::error_category"* } %call27, 1 store %"class.thrust::system::error_category"* %70, %"class.thrust::system::error_category"** %69, align 8 br label %return sw.bb28: ; preds = %entry %call29 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9951) %71 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %72 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %71, i32 0, i32 0 %73 = extractvalue { i32, %"class.thrust::system::error_category"* } %call29, 0 store i32 %73, i32* %72, align 8 %74 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %71, i32 0, i32 1 %75 = extractvalue { i32, %"class.thrust::system::error_category"* } %call29, 1 store %"class.thrust::system::error_category"* %75, %"class.thrust::system::error_category"** %74, align 8 br label %return sw.bb30: ; preds = %entry %call31 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9910) %76 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %77 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %76, i32 0, i32 0 %78 = extractvalue { i32, %"class.thrust::system::error_category"* } %call31, 0 store i32 %78, i32* %77, align 8 %79 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %76, i32 0, i32 1 %80 = extractvalue { i32, %"class.thrust::system::error_category"* } %call31, 1 store %"class.thrust::system::error_category"* %80, %"class.thrust::system::error_category"** %79, align 8 br label %return sw.bb32: ; preds = %entry %call33 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9952) %81 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %82 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %81, i32 0, i32 0 %83 = extractvalue { i32, %"class.thrust::system::error_category"* } %call33, 0 store i32 %83, i32* %82, align 8 %84 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %81, i32 0, i32 1 %85 = extractvalue { i32, %"class.thrust::system::error_category"* } %call33, 1 store %"class.thrust::system::error_category"* %85, %"class.thrust::system::error_category"** %84, align 8 br label %return sw.bb34: ; preds = %entry %call35 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9953) %86 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %87 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %86, i32 0, i32 0 %88 = extractvalue { i32, %"class.thrust::system::error_category"* } %call35, 0 store i32 %88, i32* %87, align 8 %89 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %86, i32 0, i32 1 %90 = extractvalue { i32, %"class.thrust::system::error_category"* } %call35, 1 store %"class.thrust::system::error_category"* %90, %"class.thrust::system::error_category"** %89, align 8 br label %return sw.bb36: ; preds = %entry %call37 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9954) %91 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %92 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %91, i32 0, i32 0 %93 = extractvalue { i32, %"class.thrust::system::error_category"* } %call37, 0 store i32 %93, i32* %92, align 8 %94 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %91, i32 0, i32 1 %95 = extractvalue { i32, %"class.thrust::system::error_category"* } %call37, 1 store %"class.thrust::system::error_category"* %95, %"class.thrust::system::error_category"** %94, align 8 br label %return sw.bb38: ; preds = %entry %call39 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9955) %96 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %97 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %96, i32 0, i32 0 %98 = extractvalue { i32, %"class.thrust::system::error_category"* } %call39, 0 store i32 %98, i32* %97, align 8 %99 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %96, i32 0, i32 1 %100 = extractvalue { i32, %"class.thrust::system::error_category"* } %call39, 1 store %"class.thrust::system::error_category"* %100, %"class.thrust::system::error_category"** %99, align 8 br label %return sw.bb40: ; preds = %entry %call41 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9956) %101 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %102 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %101, i32 0, i32 0 %103 = extractvalue { i32, %"class.thrust::system::error_category"* } %call41, 0 store i32 %103, i32* %102, align 8 %104 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %101, i32 0, i32 1 %105 = extractvalue { i32, %"class.thrust::system::error_category"* } %call41, 1 store %"class.thrust::system::error_category"* %105, %"class.thrust::system::error_category"** %104, align 8 br label %return sw.bb42: ; preds = %entry %call43 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9957) %106 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %107 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %106, i32 0, i32 0 %108 = extractvalue { i32, %"class.thrust::system::error_category"* } %call43, 0 store i32 %108, i32* %107, align 8 %109 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %106, i32 0, i32 1 %110 = extractvalue { i32, %"class.thrust::system::error_category"* } %call43, 1 store %"class.thrust::system::error_category"* %110, %"class.thrust::system::error_category"** %109, align 8 br label %return sw.bb44: ; preds = %entry %call45 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9942) %111 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %112 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %111, i32 0, i32 0 %113 = extractvalue { i32, %"class.thrust::system::error_category"* } %call45, 0 store i32 %113, i32* %112, align 8 %114 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %111, i32 0, i32 1 %115 = extractvalue { i32, %"class.thrust::system::error_category"* } %call45, 1 store %"class.thrust::system::error_category"* %115, %"class.thrust::system::error_category"** %114, align 8 br label %return sw.bb46: ; preds = %entry %call47 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9911) %116 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %117 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %116, i32 0, i32 0 %118 = extractvalue { i32, %"class.thrust::system::error_category"* } %call47, 0 store i32 %118, i32* %117, align 8 %119 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %116, i32 0, i32 1 %120 = extractvalue { i32, %"class.thrust::system::error_category"* } %call47, 1 store %"class.thrust::system::error_category"* %120, %"class.thrust::system::error_category"** %119, align 8 br label %return sw.bb48: ; preds = %entry %call49 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9912) %121 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %122 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %121, i32 0, i32 0 %123 = extractvalue { i32, %"class.thrust::system::error_category"* } %call49, 0 store i32 %123, i32* %122, align 8 %124 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %121, i32 0, i32 1 %125 = extractvalue { i32, %"class.thrust::system::error_category"* } %call49, 1 store %"class.thrust::system::error_category"* %125, %"class.thrust::system::error_category"** %124, align 8 br label %return sw.bb50: ; preds = %entry %call51 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9945) %126 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %127 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %126, i32 0, i32 0 %128 = extractvalue { i32, %"class.thrust::system::error_category"* } %call51, 0 store i32 %128, i32* %127, align 8 %129 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %126, i32 0, i32 1 %130 = extractvalue { i32, %"class.thrust::system::error_category"* } %call51, 1 store %"class.thrust::system::error_category"* %130, %"class.thrust::system::error_category"** %129, align 8 br label %return sw.bb52: ; preds = %entry %call53 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9958) %131 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %132 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %131, i32 0, i32 0 %133 = extractvalue { i32, %"class.thrust::system::error_category"* } %call53, 0 store i32 %133, i32* %132, align 8 %134 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %131, i32 0, i32 1 %135 = extractvalue { i32, %"class.thrust::system::error_category"* } %call53, 1 store %"class.thrust::system::error_category"* %135, %"class.thrust::system::error_category"** %134, align 8 br label %return sw.bb54: ; preds = %entry %call55 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9959) %136 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %137 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %136, i32 0, i32 0 %138 = extractvalue { i32, %"class.thrust::system::error_category"* } %call55, 0 store i32 %138, i32* %137, align 8 %139 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %136, i32 0, i32 1 %140 = extractvalue { i32, %"class.thrust::system::error_category"* } %call55, 1 store %"class.thrust::system::error_category"* %140, %"class.thrust::system::error_category"** %139, align 8 br label %return sw.bb56: ; preds = %entry %call57 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9943) %141 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %142 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %141, i32 0, i32 0 %143 = extractvalue { i32, %"class.thrust::system::error_category"* } %call57, 0 store i32 %143, i32* %142, align 8 %144 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %141, i32 0, i32 1 %145 = extractvalue { i32, %"class.thrust::system::error_category"* } %call57, 1 store %"class.thrust::system::error_category"* %145, %"class.thrust::system::error_category"** %144, align 8 br label %return sw.bb58: ; preds = %entry %call59 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9960) %146 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %147 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %146, i32 0, i32 0 %148 = extractvalue { i32, %"class.thrust::system::error_category"* } %call59, 0 store i32 %148, i32* %147, align 8 %149 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %146, i32 0, i32 1 %150 = extractvalue { i32, %"class.thrust::system::error_category"* } %call59, 1 store %"class.thrust::system::error_category"* %150, %"class.thrust::system::error_category"** %149, align 8 br label %return sw.bb60: ; preds = %entry %call61 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9961) %151 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %152 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %151, i32 0, i32 0 %153 = extractvalue { i32, %"class.thrust::system::error_category"* } %call61, 0 store i32 %153, i32* %152, align 8 %154 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %151, i32 0, i32 1 %155 = extractvalue { i32, %"class.thrust::system::error_category"* } %call61, 1 store %"class.thrust::system::error_category"* %155, %"class.thrust::system::error_category"** %154, align 8 br label %return sw.bb62: ; preds = %entry %call63 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9962) %156 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %157 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %156, i32 0, i32 0 %158 = extractvalue { i32, %"class.thrust::system::error_category"* } %call63, 0 store i32 %158, i32* %157, align 8 %159 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %156, i32 0, i32 1 %160 = extractvalue { i32, %"class.thrust::system::error_category"* } %call63, 1 store %"class.thrust::system::error_category"* %160, %"class.thrust::system::error_category"** %159, align 8 br label %return sw.bb64: ; preds = %entry %call65 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9913) %161 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %162 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %161, i32 0, i32 0 %163 = extractvalue { i32, %"class.thrust::system::error_category"* } %call65, 0 store i32 %163, i32* %162, align 8 %164 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %161, i32 0, i32 1 %165 = extractvalue { i32, %"class.thrust::system::error_category"* } %call65, 1 store %"class.thrust::system::error_category"* %165, %"class.thrust::system::error_category"** %164, align 8 br label %return sw.bb66: ; preds = %entry %call67 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9914) %166 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %167 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %166, i32 0, i32 0 %168 = extractvalue { i32, %"class.thrust::system::error_category"* } %call67, 0 store i32 %168, i32* %167, align 8 %169 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %166, i32 0, i32 1 %170 = extractvalue { i32, %"class.thrust::system::error_category"* } %call67, 1 store %"class.thrust::system::error_category"* %170, %"class.thrust::system::error_category"** %169, align 8 br label %return sw.bb68: ; preds = %entry %call69 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9915) %171 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %172 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %171, i32 0, i32 0 %173 = extractvalue { i32, %"class.thrust::system::error_category"* } %call69, 0 store i32 %173, i32* %172, align 8 %174 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %171, i32 0, i32 1 %175 = extractvalue { i32, %"class.thrust::system::error_category"* } %call69, 1 store %"class.thrust::system::error_category"* %175, %"class.thrust::system::error_category"** %174, align 8 br label %return sw.bb70: ; preds = %entry %call71 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9916) %176 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %177 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %176, i32 0, i32 0 %178 = extractvalue { i32, %"class.thrust::system::error_category"* } %call71, 0 store i32 %178, i32* %177, align 8 %179 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %176, i32 0, i32 1 %180 = extractvalue { i32, %"class.thrust::system::error_category"* } %call71, 1 store %"class.thrust::system::error_category"* %180, %"class.thrust::system::error_category"** %179, align 8 br label %return sw.bb72: ; preds = %entry %call73 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9917) %181 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %182 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %181, i32 0, i32 0 %183 = extractvalue { i32, %"class.thrust::system::error_category"* } %call73, 0 store i32 %183, i32* %182, align 8 %184 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %181, i32 0, i32 1 %185 = extractvalue { i32, %"class.thrust::system::error_category"* } %call73, 1 store %"class.thrust::system::error_category"* %185, %"class.thrust::system::error_category"** %184, align 8 br label %return sw.bb74: ; preds = %entry %call75 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9963) %186 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %187 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %186, i32 0, i32 0 %188 = extractvalue { i32, %"class.thrust::system::error_category"* } %call75, 0 store i32 %188, i32* %187, align 8 %189 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %186, i32 0, i32 1 %190 = extractvalue { i32, %"class.thrust::system::error_category"* } %call75, 1 store %"class.thrust::system::error_category"* %190, %"class.thrust::system::error_category"** %189, align 8 br label %return sw.bb76: ; preds = %entry %call77 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9918) %191 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %192 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %191, i32 0, i32 0 %193 = extractvalue { i32, %"class.thrust::system::error_category"* } %call77, 0 store i32 %193, i32* %192, align 8 %194 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %191, i32 0, i32 1 %195 = extractvalue { i32, %"class.thrust::system::error_category"* } %call77, 1 store %"class.thrust::system::error_category"* %195, %"class.thrust::system::error_category"** %194, align 8 br label %return sw.bb78: ; preds = %entry %call79 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9964) %196 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %197 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %196, i32 0, i32 0 %198 = extractvalue { i32, %"class.thrust::system::error_category"* } %call79, 0 store i32 %198, i32* %197, align 8 %199 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %196, i32 0, i32 1 %200 = extractvalue { i32, %"class.thrust::system::error_category"* } %call79, 1 store %"class.thrust::system::error_category"* %200, %"class.thrust::system::error_category"** %199, align 8 br label %return sw.bb80: ; preds = %entry %call81 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9919) %201 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %202 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %201, i32 0, i32 0 %203 = extractvalue { i32, %"class.thrust::system::error_category"* } %call81, 0 store i32 %203, i32* %202, align 8 %204 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %201, i32 0, i32 1 %205 = extractvalue { i32, %"class.thrust::system::error_category"* } %call81, 1 store %"class.thrust::system::error_category"* %205, %"class.thrust::system::error_category"** %204, align 8 br label %return sw.bb82: ; preds = %entry %call83 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9920) %206 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %207 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %206, i32 0, i32 0 %208 = extractvalue { i32, %"class.thrust::system::error_category"* } %call83, 0 store i32 %208, i32* %207, align 8 %209 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %206, i32 0, i32 1 %210 = extractvalue { i32, %"class.thrust::system::error_category"* } %call83, 1 store %"class.thrust::system::error_category"* %210, %"class.thrust::system::error_category"** %209, align 8 br label %return sw.bb84: ; preds = %entry %call85 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9921) %211 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %212 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %211, i32 0, i32 0 %213 = extractvalue { i32, %"class.thrust::system::error_category"* } %call85, 0 store i32 %213, i32* %212, align 8 %214 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %211, i32 0, i32 1 %215 = extractvalue { i32, %"class.thrust::system::error_category"* } %call85, 1 store %"class.thrust::system::error_category"* %215, %"class.thrust::system::error_category"** %214, align 8 br label %return sw.bb86: ; preds = %entry %call87 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9965) %216 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %217 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %216, i32 0, i32 0 %218 = extractvalue { i32, %"class.thrust::system::error_category"* } %call87, 0 store i32 %218, i32* %217, align 8 %219 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %216, i32 0, i32 1 %220 = extractvalue { i32, %"class.thrust::system::error_category"* } %call87, 1 store %"class.thrust::system::error_category"* %220, %"class.thrust::system::error_category"** %219, align 8 br label %return sw.bb88: ; preds = %entry %call89 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9922) %221 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %222 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %221, i32 0, i32 0 %223 = extractvalue { i32, %"class.thrust::system::error_category"* } %call89, 0 store i32 %223, i32* %222, align 8 %224 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %221, i32 0, i32 1 %225 = extractvalue { i32, %"class.thrust::system::error_category"* } %call89, 1 store %"class.thrust::system::error_category"* %225, %"class.thrust::system::error_category"** %224, align 8 br label %return sw.bb90: ; preds = %entry %call91 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9966) %226 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %227 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %226, i32 0, i32 0 %228 = extractvalue { i32, %"class.thrust::system::error_category"* } %call91, 0 store i32 %228, i32* %227, align 8 %229 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %226, i32 0, i32 1 %230 = extractvalue { i32, %"class.thrust::system::error_category"* } %call91, 1 store %"class.thrust::system::error_category"* %230, %"class.thrust::system::error_category"** %229, align 8 br label %return sw.bb92: ; preds = %entry %call93 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9967) %231 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %232 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %231, i32 0, i32 0 %233 = extractvalue { i32, %"class.thrust::system::error_category"* } %call93, 0 store i32 %233, i32* %232, align 8 %234 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %231, i32 0, i32 1 %235 = extractvalue { i32, %"class.thrust::system::error_category"* } %call93, 1 store %"class.thrust::system::error_category"* %235, %"class.thrust::system::error_category"** %234, align 8 br label %return sw.bb94: ; preds = %entry %call95 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9968) %236 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %237 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %236, i32 0, i32 0 %238 = extractvalue { i32, %"class.thrust::system::error_category"* } %call95, 0 store i32 %238, i32* %237, align 8 %239 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %236, i32 0, i32 1 %240 = extractvalue { i32, %"class.thrust::system::error_category"* } %call95, 1 store %"class.thrust::system::error_category"* %240, %"class.thrust::system::error_category"** %239, align 8 br label %return sw.bb96: ; preds = %entry %call97 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9969) %241 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %242 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %241, i32 0, i32 0 %243 = extractvalue { i32, %"class.thrust::system::error_category"* } %call97, 0 store i32 %243, i32* %242, align 8 %244 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %241, i32 0, i32 1 %245 = extractvalue { i32, %"class.thrust::system::error_category"* } %call97, 1 store %"class.thrust::system::error_category"* %245, %"class.thrust::system::error_category"** %244, align 8 br label %return sw.bb98: ; preds = %entry %call99 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9970) %246 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %247 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %246, i32 0, i32 0 %248 = extractvalue { i32, %"class.thrust::system::error_category"* } %call99, 0 store i32 %248, i32* %247, align 8 %249 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %246, i32 0, i32 1 %250 = extractvalue { i32, %"class.thrust::system::error_category"* } %call99, 1 store %"class.thrust::system::error_category"* %250, %"class.thrust::system::error_category"** %249, align 8 br label %return sw.bb100: ; preds = %entry %call101 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9923) %251 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %252 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %251, i32 0, i32 0 %253 = extractvalue { i32, %"class.thrust::system::error_category"* } %call101, 0 store i32 %253, i32* %252, align 8 %254 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %251, i32 0, i32 1 %255 = extractvalue { i32, %"class.thrust::system::error_category"* } %call101, 1 store %"class.thrust::system::error_category"* %255, %"class.thrust::system::error_category"** %254, align 8 br label %return sw.bb102: ; preds = %entry %call103 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9924) %256 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %257 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %256, i32 0, i32 0 %258 = extractvalue { i32, %"class.thrust::system::error_category"* } %call103, 0 store i32 %258, i32* %257, align 8 %259 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %256, i32 0, i32 1 %260 = extractvalue { i32, %"class.thrust::system::error_category"* } %call103, 1 store %"class.thrust::system::error_category"* %260, %"class.thrust::system::error_category"** %259, align 8 br label %return sw.bb104: ; preds = %entry %call105 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9925) %261 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %262 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %261, i32 0, i32 0 %263 = extractvalue { i32, %"class.thrust::system::error_category"* } %call105, 0 store i32 %263, i32* %262, align 8 %264 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %261, i32 0, i32 1 %265 = extractvalue { i32, %"class.thrust::system::error_category"* } %call105, 1 store %"class.thrust::system::error_category"* %265, %"class.thrust::system::error_category"** %264, align 8 br label %return sw.bb106: ; preds = %entry %call107 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9971) %266 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %267 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %266, i32 0, i32 0 %268 = extractvalue { i32, %"class.thrust::system::error_category"* } %call107, 0 store i32 %268, i32* %267, align 8 %269 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %266, i32 0, i32 1 %270 = extractvalue { i32, %"class.thrust::system::error_category"* } %call107, 1 store %"class.thrust::system::error_category"* %270, %"class.thrust::system::error_category"** %269, align 8 br label %return sw.bb108: ; preds = %entry %call109 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9926) %271 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %272 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %271, i32 0, i32 0 %273 = extractvalue { i32, %"class.thrust::system::error_category"* } %call109, 0 store i32 %273, i32* %272, align 8 %274 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %271, i32 0, i32 1 %275 = extractvalue { i32, %"class.thrust::system::error_category"* } %call109, 1 store %"class.thrust::system::error_category"* %275, %"class.thrust::system::error_category"** %274, align 8 br label %return sw.bb110: ; preds = %entry %call111 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9927) %276 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %277 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %276, i32 0, i32 0 %278 = extractvalue { i32, %"class.thrust::system::error_category"* } %call111, 0 store i32 %278, i32* %277, align 8 %279 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %276, i32 0, i32 1 %280 = extractvalue { i32, %"class.thrust::system::error_category"* } %call111, 1 store %"class.thrust::system::error_category"* %280, %"class.thrust::system::error_category"** %279, align 8 br label %return sw.bb112: ; preds = %entry %call113 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9928) %281 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %282 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %281, i32 0, i32 0 %283 = extractvalue { i32, %"class.thrust::system::error_category"* } %call113, 0 store i32 %283, i32* %282, align 8 %284 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %281, i32 0, i32 1 %285 = extractvalue { i32, %"class.thrust::system::error_category"* } %call113, 1 store %"class.thrust::system::error_category"* %285, %"class.thrust::system::error_category"** %284, align 8 br label %return sw.bb114: ; preds = %entry %call115 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9972) %286 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %287 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %286, i32 0, i32 0 %288 = extractvalue { i32, %"class.thrust::system::error_category"* } %call115, 0 store i32 %288, i32* %287, align 8 %289 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %286, i32 0, i32 1 %290 = extractvalue { i32, %"class.thrust::system::error_category"* } %call115, 1 store %"class.thrust::system::error_category"* %290, %"class.thrust::system::error_category"** %289, align 8 br label %return sw.bb116: ; preds = %entry %call117 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9929) %291 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %292 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %291, i32 0, i32 0 %293 = extractvalue { i32, %"class.thrust::system::error_category"* } %call117, 0 store i32 %293, i32* %292, align 8 %294 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %291, i32 0, i32 1 %295 = extractvalue { i32, %"class.thrust::system::error_category"* } %call117, 1 store %"class.thrust::system::error_category"* %295, %"class.thrust::system::error_category"** %294, align 8 br label %return sw.bb118: ; preds = %entry %call119 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9930) %296 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %297 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %296, i32 0, i32 0 %298 = extractvalue { i32, %"class.thrust::system::error_category"* } %call119, 0 store i32 %298, i32* %297, align 8 %299 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %296, i32 0, i32 1 %300 = extractvalue { i32, %"class.thrust::system::error_category"* } %call119, 1 store %"class.thrust::system::error_category"* %300, %"class.thrust::system::error_category"** %299, align 8 br label %return sw.bb120: ; preds = %entry %call121 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9931) %301 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %302 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %301, i32 0, i32 0 %303 = extractvalue { i32, %"class.thrust::system::error_category"* } %call121, 0 store i32 %303, i32* %302, align 8 %304 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %301, i32 0, i32 1 %305 = extractvalue { i32, %"class.thrust::system::error_category"* } %call121, 1 store %"class.thrust::system::error_category"* %305, %"class.thrust::system::error_category"** %304, align 8 br label %return sw.bb122: ; preds = %entry %call123 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9973) %306 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %307 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %306, i32 0, i32 0 %308 = extractvalue { i32, %"class.thrust::system::error_category"* } %call123, 0 store i32 %308, i32* %307, align 8 %309 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %306, i32 0, i32 1 %310 = extractvalue { i32, %"class.thrust::system::error_category"* } %call123, 1 store %"class.thrust::system::error_category"* %310, %"class.thrust::system::error_category"** %309, align 8 br label %return sw.bb124: ; preds = %entry %call125 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9932) %311 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %312 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %311, i32 0, i32 0 %313 = extractvalue { i32, %"class.thrust::system::error_category"* } %call125, 0 store i32 %313, i32* %312, align 8 %314 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %311, i32 0, i32 1 %315 = extractvalue { i32, %"class.thrust::system::error_category"* } %call125, 1 store %"class.thrust::system::error_category"* %315, %"class.thrust::system::error_category"** %314, align 8 br label %return sw.bb126: ; preds = %entry %call127 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9933) %316 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %317 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %316, i32 0, i32 0 %318 = extractvalue { i32, %"class.thrust::system::error_category"* } %call127, 0 store i32 %318, i32* %317, align 8 %319 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %316, i32 0, i32 1 %320 = extractvalue { i32, %"class.thrust::system::error_category"* } %call127, 1 store %"class.thrust::system::error_category"* %320, %"class.thrust::system::error_category"** %319, align 8 br label %return sw.bb128: ; preds = %entry %call129 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9974) %321 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %322 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %321, i32 0, i32 0 %323 = extractvalue { i32, %"class.thrust::system::error_category"* } %call129, 0 store i32 %323, i32* %322, align 8 %324 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %321, i32 0, i32 1 %325 = extractvalue { i32, %"class.thrust::system::error_category"* } %call129, 1 store %"class.thrust::system::error_category"* %325, %"class.thrust::system::error_category"** %324, align 8 br label %return sw.bb130: ; preds = %entry %call131 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9975) %326 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %327 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %326, i32 0, i32 0 %328 = extractvalue { i32, %"class.thrust::system::error_category"* } %call131, 0 store i32 %328, i32* %327, align 8 %329 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %326, i32 0, i32 1 %330 = extractvalue { i32, %"class.thrust::system::error_category"* } %call131, 1 store %"class.thrust::system::error_category"* %330, %"class.thrust::system::error_category"** %329, align 8 br label %return sw.bb132: ; preds = %entry %call133 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9976) %331 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %332 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %331, i32 0, i32 0 %333 = extractvalue { i32, %"class.thrust::system::error_category"* } %call133, 0 store i32 %333, i32* %332, align 8 %334 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %331, i32 0, i32 1 %335 = extractvalue { i32, %"class.thrust::system::error_category"* } %call133, 1 store %"class.thrust::system::error_category"* %335, %"class.thrust::system::error_category"** %334, align 8 br label %return sw.bb134: ; preds = %entry %call135 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9944) %336 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %337 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %336, i32 0, i32 0 %338 = extractvalue { i32, %"class.thrust::system::error_category"* } %call135, 0 store i32 %338, i32* %337, align 8 %339 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %336, i32 0, i32 1 %340 = extractvalue { i32, %"class.thrust::system::error_category"* } %call135, 1 store %"class.thrust::system::error_category"* %340, %"class.thrust::system::error_category"** %339, align 8 br label %return sw.bb136: ; preds = %entry %call137 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9934) %341 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %342 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %341, i32 0, i32 0 %343 = extractvalue { i32, %"class.thrust::system::error_category"* } %call137, 0 store i32 %343, i32* %342, align 8 %344 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %341, i32 0, i32 1 %345 = extractvalue { i32, %"class.thrust::system::error_category"* } %call137, 1 store %"class.thrust::system::error_category"* %345, %"class.thrust::system::error_category"** %344, align 8 br label %return sw.bb138: ; preds = %entry %call139 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9935) %346 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %347 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %346, i32 0, i32 0 %348 = extractvalue { i32, %"class.thrust::system::error_category"* } %call139, 0 store i32 %348, i32* %347, align 8 %349 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %346, i32 0, i32 1 %350 = extractvalue { i32, %"class.thrust::system::error_category"* } %call139, 1 store %"class.thrust::system::error_category"* %350, %"class.thrust::system::error_category"** %349, align 8 br label %return sw.bb140: ; preds = %entry %call141 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9936) %351 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %352 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %351, i32 0, i32 0 %353 = extractvalue { i32, %"class.thrust::system::error_category"* } %call141, 0 store i32 %353, i32* %352, align 8 %354 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %351, i32 0, i32 1 %355 = extractvalue { i32, %"class.thrust::system::error_category"* } %call141, 1 store %"class.thrust::system::error_category"* %355, %"class.thrust::system::error_category"** %354, align 8 br label %return sw.bb142: ; preds = %entry %call143 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9938) %356 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %357 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %356, i32 0, i32 0 %358 = extractvalue { i32, %"class.thrust::system::error_category"* } %call143, 0 store i32 %358, i32* %357, align 8 %359 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %356, i32 0, i32 1 %360 = extractvalue { i32, %"class.thrust::system::error_category"* } %call143, 1 store %"class.thrust::system::error_category"* %360, %"class.thrust::system::error_category"** %359, align 8 br label %return sw.bb144: ; preds = %entry %call145 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9977) %361 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %362 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %361, i32 0, i32 0 %363 = extractvalue { i32, %"class.thrust::system::error_category"* } %call145, 0 store i32 %363, i32* %362, align 8 %364 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %361, i32 0, i32 1 %365 = extractvalue { i32, %"class.thrust::system::error_category"* } %call145, 1 store %"class.thrust::system::error_category"* %365, %"class.thrust::system::error_category"** %364, align 8 br label %return sw.bb146: ; preds = %entry %call147 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9978) %366 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %367 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %366, i32 0, i32 0 %368 = extractvalue { i32, %"class.thrust::system::error_category"* } %call147, 0 store i32 %368, i32* %367, align 8 %369 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %366, i32 0, i32 1 %370 = extractvalue { i32, %"class.thrust::system::error_category"* } %call147, 1 store %"class.thrust::system::error_category"* %370, %"class.thrust::system::error_category"** %369, align 8 br label %return sw.bb148: ; preds = %entry %call149 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9979) %371 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %372 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %371, i32 0, i32 0 %373 = extractvalue { i32, %"class.thrust::system::error_category"* } %call149, 0 store i32 %373, i32* %372, align 8 %374 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %371, i32 0, i32 1 %375 = extractvalue { i32, %"class.thrust::system::error_category"* } %call149, 1 store %"class.thrust::system::error_category"* %375, %"class.thrust::system::error_category"** %374, align 8 br label %return sw.bb150: ; preds = %entry %call151 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9939) %376 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %377 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %376, i32 0, i32 0 %378 = extractvalue { i32, %"class.thrust::system::error_category"* } %call151, 0 store i32 %378, i32* %377, align 8 %379 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %376, i32 0, i32 1 %380 = extractvalue { i32, %"class.thrust::system::error_category"* } %call151, 1 store %"class.thrust::system::error_category"* %380, %"class.thrust::system::error_category"** %379, align 8 br label %return sw.bb152: ; preds = %entry %call153 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9940) %381 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %382 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %381, i32 0, i32 0 %383 = extractvalue { i32, %"class.thrust::system::error_category"* } %call153, 0 store i32 %383, i32* %382, align 8 %384 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %381, i32 0, i32 1 %385 = extractvalue { i32, %"class.thrust::system::error_category"* } %call153, 1 store %"class.thrust::system::error_category"* %385, %"class.thrust::system::error_category"** %384, align 8 br label %return sw.bb154: ; preds = %entry %call155 = call { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 9941) %386 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %387 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %386, i32 0, i32 0 %388 = extractvalue { i32, %"class.thrust::system::error_category"* } %call155, 0 store i32 %388, i32* %387, align 8 %389 = getelementptr inbounds { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %386, i32 0, i32 1 %390 = extractvalue { i32, %"class.thrust::system::error_category"* } %call155, 1 store %"class.thrust::system::error_category"* %390, %"class.thrust::system::error_category"** %389, align 8 br label %return sw.default: ; preds = %entry %391 = load i32, i32* %ev.addr, align 4, !tbaa !11 %call156 = call dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system15system_categoryEv() call void @_ZN6thrust6system15error_conditionC2EiRKNS0_14error_categoryE(%"class.thrust::system::error_condition"* %retval, i32 %391, %"class.thrust::system::error_category"* dereferenceable(8) %call156) br label %return return: ; preds = %sw.default, %sw.bb154, %sw.bb152, %sw.bb150, %sw.bb148, %sw.bb146, %sw.bb144, %sw.bb142, %sw.bb140, %sw.bb138, %sw.bb136, %sw.bb134, %sw.bb132, %sw.bb130, %sw.bb128, %sw.bb126, %sw.bb124, %sw.bb122, %sw.bb120, %sw.bb118, %sw.bb116, %sw.bb114, %sw.bb112, %sw.bb110, %sw.bb108, %sw.bb106, %sw.bb104, %sw.bb102, %sw.bb100, %sw.bb98, %sw.bb96, %sw.bb94, %sw.bb92, %sw.bb90, %sw.bb88, %sw.bb86, %sw.bb84, %sw.bb82, %sw.bb80, %sw.bb78, %sw.bb76, %sw.bb74, %sw.bb72, %sw.bb70, %sw.bb68, %sw.bb66, %sw.bb64, %sw.bb62, %sw.bb60, %sw.bb58, %sw.bb56, %sw.bb54, %sw.bb52, %sw.bb50, %sw.bb48, %sw.bb46, %sw.bb44, %sw.bb42, %sw.bb40, %sw.bb38, %sw.bb36, %sw.bb34, %sw.bb32, %sw.bb30, %sw.bb28, %sw.bb26, %sw.bb24, %sw.bb22, %sw.bb20, %sw.bb18, %sw.bb16, %sw.bb14, %sw.bb12, %sw.bb10, %sw.bb8, %sw.bb6, %sw.bb4, %sw.bb2, %sw.bb %392 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %393 = load { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %392, align 8 ret { i32, %"class.thrust::system::error_category"* } %393 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6system6detail21system_error_category7messageEi(%"class.std::basic_string"* noalias sret %agg.result, %"class.thrust::system::detail::system_error_category"* %this, i32 %ev) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::system_error_category"*, align 8 %ev.addr = alloca i32, align 4 store %"class.thrust::system::detail::system_error_category"* %this, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8, !tbaa !1 store i32 %ev, i32* %ev.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::detail::system_error_category"*, %"class.thrust::system::detail::system_error_category"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system16generic_categoryEv() %0 = bitcast %"class.thrust::system::error_category"* %call to void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*** %vtable = load void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)**, void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*** %0, align 8, !tbaa !5 %vfn = getelementptr inbounds void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*, void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)** %vtable, i64 6 %1 = load void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*, void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)** %vfn, align 8 %2 = load i32, i32* %ev.addr, align 4, !tbaa !11 call void %1(%"class.std::basic_string"* sret %agg.result, %"class.thrust::system::error_category"* %call, i32 %2) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr { i32, %"class.thrust::system::error_category"* } @_ZN6thrust6system20make_error_conditionENS0_4errc6errc_tE(i32 %e) #8 comdat { entry: %retval = alloca %"class.thrust::system::error_condition", align 8 %e.addr = alloca i32, align 4 store i32 %e, i32* %e.addr, align 4, !tbaa !83 %0 = load i32, i32* %e.addr, align 4, !tbaa !83 %call = call dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system16generic_categoryEv() call void @_ZN6thrust6system15error_conditionC2EiRKNS0_14error_categoryE(%"class.thrust::system::error_condition"* %retval, i32 %0, %"class.thrust::system::error_category"* dereferenceable(8) %call) %1 = bitcast %"class.thrust::system::error_condition"* %retval to { i32, %"class.thrust::system::error_category"* }* %2 = load { i32, %"class.thrust::system::error_category"* }, { i32, %"class.thrust::system::error_category"* }* %1, align 8 ret { i32, %"class.thrust::system::error_category"* } %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system16generic_categoryEv() #8 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %exn.slot = alloca i8* %ehselector.slot = alloca i32 %0 = load atomic i8, i8* bitcast (i64* @_ZGVZN6thrust6system16generic_categoryEvE6result to i8*) acquire, align 8 %guard.uninitialized = icmp eq i8 %0, 0 br i1 %guard.uninitialized, label %init.check, label %init.end init.check: ; preds = %entry %1 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN6thrust6system16generic_categoryEvE6result) #5 %tobool = icmp ne i32 %1, 0 br i1 %tobool, label %init, label %init.end init: ; preds = %init.check invoke void @_ZN6thrust6system6detail22generic_error_categoryC2Ev(%"class.thrust::system::detail::generic_error_category"* @_ZZN6thrust6system16generic_categoryEvE6result) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %init %2 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to void (i8*)*), i8* bitcast (%"class.thrust::system::detail::generic_error_category"* @_ZZN6thrust6system16generic_categoryEvE6result to i8*), i8* @__dso_handle) #5 call void @__cxa_guard_release(i64* @_ZGVZN6thrust6system16generic_categoryEvE6result) #5 br label %init.end init.end: ; preds = %invoke.cont, %init.check, %entry ret %"class.thrust::system::error_category"* getelementptr inbounds (%"class.thrust::system::detail::generic_error_category", %"class.thrust::system::detail::generic_error_category"* @_ZZN6thrust6system16generic_categoryEvE6result, i32 0, i32 0) lpad: ; preds = %init %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 call void @__cxa_guard_abort(i64* @_ZGVZN6thrust6system16generic_categoryEvE6result) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val1 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail22generic_error_categoryC2Ev(%"class.thrust::system::detail::generic_error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::generic_error_category"*, align 8 store %"class.thrust::system::detail::generic_error_category"* %this, %"class.thrust::system::detail::generic_error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::detail::generic_error_category"*, %"class.thrust::system::detail::generic_error_category"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::detail::generic_error_category"* %this1 to %"class.thrust::system::error_category"* call void @_ZN6thrust6system14error_categoryC2Ev(%"class.thrust::system::error_category"* %0) #5 %1 = bitcast %"class.thrust::system::detail::generic_error_category"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([9 x i8*], [9 x i8*]* @_ZTVN6thrust6system6detail22generic_error_categoryE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail22generic_error_categoryD0Ev(%"class.thrust::system::detail::generic_error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::generic_error_category"*, align 8 store %"class.thrust::system::detail::generic_error_category"* %this, %"class.thrust::system::detail::generic_error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::detail::generic_error_category"*, %"class.thrust::system::detail::generic_error_category"** %this.addr, align 8 call void bitcast (void (%"class.thrust::system::error_category"*)* @_ZN6thrust6system14error_categoryD2Ev to void (%"class.thrust::system::detail::generic_error_category"*)*)(%"class.thrust::system::detail::generic_error_category"* %this1) #5 %0 = bitcast %"class.thrust::system::detail::generic_error_category"* %this1 to i8* call void @_ZdlPv(i8* %0) #14 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZNK6thrust6system6detail22generic_error_category4nameEv(%"class.thrust::system::detail::generic_error_category"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::generic_error_category"*, align 8 store %"class.thrust::system::detail::generic_error_category"* %this, %"class.thrust::system::detail::generic_error_category"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::detail::generic_error_category"*, %"class.thrust::system::detail::generic_error_category"** %this.addr, align 8 ret i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.27, i32 0, i32 0) } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6system6detail22generic_error_category7messageEi(%"class.std::basic_string"* noalias sret %agg.result, %"class.thrust::system::detail::generic_error_category"* %this, i32 %ev) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::system::detail::generic_error_category"*, align 8 %ev.addr = alloca i32, align 4 %ref.tmp = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %c_str = alloca i8*, align 8 %ref.tmp3 = alloca %"class.std::allocator", align 1 %cleanup.cond = alloca i1, align 1 store %"class.thrust::system::detail::generic_error_category"* %this, %"class.thrust::system::detail::generic_error_category"** %this.addr, align 8, !tbaa !1 store i32 %ev, i32* %ev.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::detail::generic_error_category"*, %"class.thrust::system::detail::generic_error_category"** %this.addr, align 8 %0 = load atomic i8, i8* bitcast (i64* @_ZGVZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err to i8*) acquire, align 8 %guard.uninitialized = icmp eq i8 %0, 0 br i1 %guard.uninitialized, label %init.check, label %init.end init.check: ; preds = %entry %1 = call i32 @__cxa_guard_acquire(i64* @_ZGVZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err) #5 %tobool = icmp ne i32 %1, 0 br i1 %tobool, label %init, label %init.end init: ; preds = %init.check call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* @_ZZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.28, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %init call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 %2 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.std::basic_string"*)* @_ZNSsD2Ev to void (i8*)*), i8* bitcast (%"class.std::basic_string"* @_ZZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err to i8*), i8* @__dso_handle) #5 call void @__cxa_guard_release(i64* @_ZGVZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err) #5 br label %init.end init.end: ; preds = %invoke.cont, %init.check, %entry %3 = bitcast i8** %c_str to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load i32, i32* %ev.addr, align 4, !tbaa !11 %call = call i8* @strerror(i32 %4) #5 store i8* %call, i8** %c_str, align 8, !tbaa !1 %5 = load i8*, i8** %c_str, align 8, !tbaa !1 %tobool2 = icmp ne i8* %5, null store i1 false, i1* %cleanup.cond, align 1 br i1 %tobool2, label %cond.true, label %cond.false cond.true: ; preds = %init.end %6 = load i8*, i8** %c_str, align 8, !tbaa !1 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp3) #5 store i1 true, i1* %cleanup.cond, align 1 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %agg.result, i8* %6, %"class.std::allocator"* dereferenceable(1) %ref.tmp3) to label %invoke.cont5 unwind label %lpad4 invoke.cont5: ; preds = %cond.true br label %cond.end cond.false: ; preds = %init.end invoke void @_ZNSsC1ERKSs(%"class.std::basic_string"* %agg.result, %"class.std::basic_string"* dereferenceable(8) @_ZZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err) to label %invoke.cont6 unwind label %lpad4 invoke.cont6: ; preds = %cond.false br label %cond.end cond.end: ; preds = %invoke.cont6, %invoke.cont5 %cleanup.is_active = load i1, i1* %cleanup.cond, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %cond.end call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp3) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %cond.end %7 = bitcast i8** %c_str to i8* call void @llvm.lifetime.end(i64 8, i8* %7) #5 ret void lpad: ; preds = %init %8 = landingpad { i8*, i32 } cleanup %9 = extractvalue { i8*, i32 } %8, 0 store i8* %9, i8** %exn.slot, align 8 %10 = extractvalue { i8*, i32 } %8, 1 store i32 %10, i32* %ehselector.slot, align 4 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 call void @__cxa_guard_abort(i64* @_ZGVZNK6thrust6system6detail22generic_error_category7messageEiE11unknown_err) #5 br label %eh.resume lpad4: ; preds = %cond.false, %cond.true %11 = landingpad { i8*, i32 } cleanup %12 = extractvalue { i8*, i32 } %11, 0 store i8* %12, i8** %exn.slot, align 8 %13 = extractvalue { i8*, i32 } %11, 1 store i32 %13, i32* %ehselector.slot, align 4 %cleanup.is_active7 = load i1, i1* %cleanup.cond, align 1 br i1 %cleanup.is_active7, label %cleanup.action8, label %cleanup.done9 cleanup.action8: ; preds = %lpad4 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp3) #5 br label %cleanup.done9 cleanup.done9: ; preds = %cleanup.action8, %lpad4 %14 = bitcast i8** %c_str to i8* call void @llvm.lifetime.end(i64 8, i8* %14) #5 br label %eh.resume eh.resume: ; preds = %cleanup.done9, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val10 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val10 } ; Function Attrs: nounwind declare i8* @strerror(i32) #4 ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrust6systemeqERKNS0_15error_conditionES3_(%"class.thrust::system::error_condition"* dereferenceable(16) %lhs, %"class.thrust::system::error_condition"* dereferenceable(16) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::system::error_condition"*, align 8 %rhs.addr = alloca %"class.thrust::system::error_condition"*, align 8 store %"class.thrust::system::error_condition"* %lhs, %"class.thrust::system::error_condition"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::system::error_condition"* %rhs, %"class.thrust::system::error_condition"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::system::error_condition"*, %"class.thrust::system::error_condition"** %lhs.addr, align 8 %call = call dereferenceable(8) %"class.thrust::system::error_category"* @_ZNK6thrust6system15error_condition8categoryEv(%"class.thrust::system::error_condition"* %0) %1 = load %"class.thrust::system::error_condition"*, %"class.thrust::system::error_condition"** %rhs.addr, align 8 %call1 = call dereferenceable(8) %"class.thrust::system::error_category"* @_ZNK6thrust6system15error_condition8categoryEv(%"class.thrust::system::error_condition"* %1) %call2 = call zeroext i1 @_ZNK6thrust6system14error_categoryeqERKS1_(%"class.thrust::system::error_category"* %call, %"class.thrust::system::error_category"* dereferenceable(8) %call1) br i1 %call2, label %land.rhs, label %land.end land.rhs: ; preds = %entry %2 = load %"class.thrust::system::error_condition"*, %"class.thrust::system::error_condition"** %lhs.addr, align 8 %call3 = call i32 @_ZNK6thrust6system15error_condition5valueEv(%"class.thrust::system::error_condition"* %2) %3 = load %"class.thrust::system::error_condition"*, %"class.thrust::system::error_condition"** %rhs.addr, align 8 %call4 = call i32 @_ZNK6thrust6system15error_condition5valueEv(%"class.thrust::system::error_condition"* %3) %cmp = icmp eq i32 %call3, %call4 br label %land.end land.end: ; preds = %land.rhs, %entry %4 = phi i1 [ false, %entry ], [ %cmp, %land.rhs ] ret i1 %4 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::system::error_category"* @_ZNK6thrust6system15error_condition8categoryEv(%"class.thrust::system::error_condition"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_condition"*, align 8 store %"class.thrust::system::error_condition"* %this, %"class.thrust::system::error_condition"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::error_condition"*, %"class.thrust::system::error_condition"** %this.addr, align 8 %m_cat = getelementptr inbounds %"class.thrust::system::error_condition", %"class.thrust::system::error_condition"* %this1, i32 0, i32 1 %0 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %m_cat, align 8, !tbaa !80 ret %"class.thrust::system::error_category"* %0 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6system14error_categoryeqERKS1_(%"class.thrust::system::error_category"* %this, %"class.thrust::system::error_category"* dereferenceable(8) %rhs) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_category"*, align 8 %rhs.addr = alloca %"class.thrust::system::error_category"*, align 8 store %"class.thrust::system::error_category"* %this, %"class.thrust::system::error_category"** %this.addr, align 8, !tbaa !1 store %"class.thrust::system::error_category"* %rhs, %"class.thrust::system::error_category"** %rhs.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %this.addr, align 8 %0 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %rhs.addr, align 8 %cmp = icmp eq %"class.thrust::system::error_category"* %this1, %0 ret i1 %cmp } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system15error_condition5valueEv(%"class.thrust::system::error_condition"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_condition"*, align 8 store %"class.thrust::system::error_condition"* %this, %"class.thrust::system::error_condition"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::error_condition"*, %"class.thrust::system::error_condition"** %this.addr, align 8 %m_val = getelementptr inbounds %"class.thrust::system::error_condition", %"class.thrust::system::error_condition"* %this1, i32 0, i32 0 %0 = load i32, i32* %m_val, align 8, !tbaa !78 ret i32 %0 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::system::error_category"* @_ZNK6thrust6system10error_code8categoryEv(%"class.thrust::system::error_code"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_code"*, align 8 store %"class.thrust::system::error_code"* %this, %"class.thrust::system::error_code"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::error_code"*, %"class.thrust::system::error_code"** %this.addr, align 8 %m_cat = getelementptr inbounds %"class.thrust::system::error_code", %"class.thrust::system::error_code"* %this1, i32 0, i32 1 %0 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %m_cat, align 8, !tbaa !85 ret %"class.thrust::system::error_category"* %0 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system10error_code5valueEv(%"class.thrust::system::error_code"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_code"*, align 8 store %"class.thrust::system::error_code"* %this, %"class.thrust::system::error_code"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::error_code"*, %"class.thrust::system::error_code"** %this.addr, align 8 %m_val = getelementptr inbounds %"class.thrust::system::error_code", %"class.thrust::system::error_code"* %this1, i32 0, i32 0 %0 = load i32, i32* %m_val, align 8, !tbaa !87 ret i32 %0 } declare i8* @cudaGetErrorString(i32) #3 declare void @_ZNSt13runtime_errorC2ERKSs(%"class.std::runtime_error"*, %"class.std::basic_string"* dereferenceable(8)) unnamed_addr #3 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system10error_codeC2EiRKNS0_14error_categoryE(%"class.thrust::system::error_code"* %this, i32 %val, %"class.thrust::system::error_category"* dereferenceable(8) %cat) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_code"*, align 8 %val.addr = alloca i32, align 4 %cat.addr = alloca %"class.thrust::system::error_category"*, align 8 store %"class.thrust::system::error_code"* %this, %"class.thrust::system::error_code"** %this.addr, align 8, !tbaa !1 store i32 %val, i32* %val.addr, align 4, !tbaa !11 store %"class.thrust::system::error_category"* %cat, %"class.thrust::system::error_category"** %cat.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::error_code"*, %"class.thrust::system::error_code"** %this.addr, align 8 %m_val = getelementptr inbounds %"class.thrust::system::error_code", %"class.thrust::system::error_code"* %this1, i32 0, i32 0 %0 = load i32, i32* %val.addr, align 4, !tbaa !11 store i32 %0, i32* %m_val, align 8, !tbaa !87 %m_cat = getelementptr inbounds %"class.thrust::system::error_code", %"class.thrust::system::error_code"* %this1, i32 0, i32 1 %1 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %cat.addr, align 8 store %"class.thrust::system::error_category"* %1, %"class.thrust::system::error_category"** %m_cat, align 8, !tbaa !85 ret void } ; Function Attrs: uwtable define available_externally void @_ZNSsC2Ev(%"class.std::basic_string"* %this) unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %ref.tmp = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %_M_dataplus = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %this1, i32 0, i32 0 %call = call dereferenceable(24) %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs12_S_empty_repEv() %call2 = call i8* @_ZNSs4_Rep10_M_refdataEv(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %call) #5 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp) #5 invoke void @_ZNSs12_Alloc_hiderC2EPcRKSaIcE(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %_M_dataplus, i8* %call2, %"class.std::allocator"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } cleanup %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val3 } ; Function Attrs: nounwind declare void @_ZNSt13runtime_errorD2Ev(%"class.std::runtime_error"*) unnamed_addr #4 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system12system_errorD0Ev(%"class.thrust::system::system_error"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::system_error"*, align 8 store %"class.thrust::system::system_error"* %this, %"class.thrust::system::system_error"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::system_error"*, %"class.thrust::system::system_error"** %this.addr, align 8 call void @_ZN6thrust6system12system_errorD2Ev(%"class.thrust::system::system_error"* %this1) #5 %0 = bitcast %"class.thrust::system::system_error"* %this1 to i8* call void @_ZdlPv(i8* %0) #14 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZNK6thrust6system12system_error4whatEv(%"class.thrust::system::system_error"* %this) unnamed_addr #9 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca i8*, align 8 %this.addr = alloca %"class.thrust::system::system_error"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 store %"class.thrust::system::system_error"* %this, %"class.thrust::system::system_error"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::system_error"*, %"class.thrust::system::system_error"** %this.addr, align 8 %m_what = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 2 %call = call zeroext i1 @_ZNKSs5emptyEv(%"class.std::basic_string"* %m_what) #5 br i1 %call, label %if.then, label %if.end24 if.then: ; preds = %entry %m_what2 = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 2 %0 = bitcast %"class.thrust::system::system_error"* %this1 to %"class.std::runtime_error"* %call3 = call i8* @_ZNKSt13runtime_error4whatEv(%"class.std::runtime_error"* %0) #5 %call4 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSsaSEPKc(%"class.std::basic_string"* %m_what2, i8* %call3) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then %m_error_code = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 1 %call6 = invoke zeroext i1 @_ZNK6thrust6system10error_codecvbEv(%"class.thrust::system::error_code"* %m_error_code) to label %invoke.cont5 unwind label %lpad invoke.cont5: ; preds = %invoke.cont br i1 %call6, label %if.then7, label %if.end20 if.then7: ; preds = %invoke.cont5 %m_what8 = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 2 %call9 = call zeroext i1 @_ZNKSs5emptyEv(%"class.std::basic_string"* %m_what8) #5 br i1 %call9, label %if.end, label %if.then10 if.then10: ; preds = %if.then7 %m_what11 = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 2 %call13 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLEPKc(%"class.std::basic_string"* %m_what11, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i32 0, i32 0)) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %if.then10 br label %if.end lpad: ; preds = %if.end, %if.then10, %invoke.cont, %if.then %1 = landingpad { i8*, i32 } catch i8* null %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 br label %catch if.end: ; preds = %invoke.cont12, %if.then7 %m_what14 = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 2 %m_error_code15 = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 1 invoke void @_ZNK6thrust6system10error_code7messageEv(%"class.std::basic_string"* sret %ref.tmp, %"class.thrust::system::error_code"* %m_error_code15) to label %invoke.cont16 unwind label %lpad invoke.cont16: ; preds = %if.end %call19 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLERKSs(%"class.std::basic_string"* %m_what14, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont18 unwind label %lpad17 invoke.cont18: ; preds = %invoke.cont16 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %if.end20 lpad17: ; preds = %invoke.cont16 %4 = landingpad { i8*, i32 } catch i8* null %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %catch catch: ; preds = %lpad17, %lpad %exn = load i8*, i8** %exn.slot, align 8 %7 = call i8* @__cxa_begin_catch(i8* %exn) #5 %8 = bitcast %"class.thrust::system::system_error"* %this1 to %"class.std::runtime_error"* %call21 = call i8* @_ZNKSt13runtime_error4whatEv(%"class.std::runtime_error"* %8) #5 store i8* %call21, i8** %retval, align 8 invoke void @__cxa_end_catch() to label %invoke.cont23 unwind label %lpad22 if.end20: ; preds = %invoke.cont18, %invoke.cont5 br label %try.cont invoke.cont23: ; preds = %catch br label %return lpad22: ; preds = %catch %9 = landingpad { i8*, i32 } filter [0 x i8*] zeroinitializer %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 br label %filter.dispatch filter.dispatch: ; preds = %lpad22 %exn27 = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn27) #15 unreachable try.cont: ; preds = %if.end20 br label %if.end24 if.end24: ; preds = %try.cont, %entry %m_what25 = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 2 %call26 = call i8* @_ZNKSs5c_strEv(%"class.std::basic_string"* %m_what25) #5 store i8* %call26, i8** %retval, align 8 br label %return return: ; preds = %if.end24, %invoke.cont23 %12 = load i8*, i8** %retval, align 8 ret i8* %12 } ; Function Attrs: nounwind uwtable define available_externally dereferenceable(24) %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs12_S_empty_repEv() #1 align 2 { entry: %call = call dereferenceable(24) %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs4_Rep12_S_empty_repEv() ret %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %call } ; Function Attrs: nounwind uwtable define available_externally i8* @_ZNSs4_Rep10_M_refdataEv(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this) #1 align 2 { entry: %this.addr = alloca %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, align 8 store %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %this.addr, align 8 %add.ptr = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this1, i64 1 %0 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %add.ptr to i8* ret i8* %0 } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSs12_Alloc_hiderC2EPcRKSaIcE(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %this, i8* %__dat, %"class.std::allocator"* dereferenceable(1) %__a) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*, align 8 %__dat.addr = alloca i8*, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 store %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %this, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"** %this.addr, align 8, !tbaa !1 store i8* %__dat, i8** %__dat.addr, align 8, !tbaa !1 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8, !tbaa !7 %this1 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"** %this.addr, align 8 %0 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %this1 to %"class.std::allocator"* %1 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 call void @_ZNSaIcEC2ERKS_(%"class.std::allocator"* %0, %"class.std::allocator"* dereferenceable(1) %1) #5 %_M_p = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %this1, i32 0, i32 0 %2 = load i8*, i8** %__dat.addr, align 8, !tbaa !1 store i8* %2, i8** %_M_p, align 8, !tbaa !88 ret void } ; Function Attrs: nounwind uwtable define available_externally zeroext i1 @_ZNKSs5emptyEv(%"class.std::basic_string"* %this) #1 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %call = call i64 @_ZNKSs4sizeEv(%"class.std::basic_string"* %this1) #5 %cmp = icmp eq i64 %call, 0 ret i1 %cmp } ; Function Attrs: uwtable define available_externally dereferenceable(8) %"class.std::basic_string"* @_ZNSsaSEPKc(%"class.std::basic_string"* %this, i8* %__s) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__s.addr = alloca i8*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store i8* %__s, i8** %__s.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %call = call dereferenceable(8) %"class.std::basic_string"* @_ZNSs6assignEPKc(%"class.std::basic_string"* %this1, i8* %0) ret %"class.std::basic_string"* %call } ; Function Attrs: nounwind declare i8* @_ZNKSt13runtime_error4whatEv(%"class.std::runtime_error"*) unnamed_addr #4 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6system10error_codecvbEv(%"class.thrust::system::error_code"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_code"*, align 8 store %"class.thrust::system::error_code"* %this, %"class.thrust::system::error_code"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::error_code"*, %"class.thrust::system::error_code"** %this.addr, align 8 %call = call i32 @_ZNK6thrust6system10error_code5valueEv(%"class.thrust::system::error_code"* %this1) %cmp = icmp ne i32 %call, 0 ret i1 %cmp } ; Function Attrs: uwtable define available_externally dereferenceable(8) %"class.std::basic_string"* @_ZNSspLEPKc(%"class.std::basic_string"* %this, i8* %__s) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__s.addr = alloca i8*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store i8* %__s, i8** %__s.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %call = call dereferenceable(8) %"class.std::basic_string"* @_ZNSs6appendEPKc(%"class.std::basic_string"* %this1, i8* %0) ret %"class.std::basic_string"* %call } ; Function Attrs: uwtable define available_externally dereferenceable(8) %"class.std::basic_string"* @_ZNSspLERKSs(%"class.std::basic_string"* %this, %"class.std::basic_string"* dereferenceable(8) %__str) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__str.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store %"class.std::basic_string"* %__str, %"class.std::basic_string"** %__str.addr, align 8, !tbaa !7 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load %"class.std::basic_string"*, %"class.std::basic_string"** %__str.addr, align 8 %call = call dereferenceable(8) %"class.std::basic_string"* @_ZNSs6appendERKSs(%"class.std::basic_string"* %this1, %"class.std::basic_string"* dereferenceable(8) %0) ret %"class.std::basic_string"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6system10error_code7messageEv(%"class.std::basic_string"* noalias sret %agg.result, %"class.thrust::system::error_code"* %this) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::error_code"*, align 8 store %"class.thrust::system::error_code"* %this, %"class.thrust::system::error_code"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::error_code"*, %"class.thrust::system::error_code"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::system::error_category"* @_ZNK6thrust6system10error_code8categoryEv(%"class.thrust::system::error_code"* %this1) %0 = bitcast %"class.thrust::system::error_category"* %call to void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*** %vtable = load void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)**, void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*** %0, align 8, !tbaa !5 %vfn = getelementptr inbounds void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*, void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)** %vtable, i64 6 %1 = load void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*, void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)** %vfn, align 8 %call2 = call i32 @_ZNK6thrust6system10error_code5valueEv(%"class.thrust::system::error_code"* %this1) call void %1(%"class.std::basic_string"* sret %agg.result, %"class.thrust::system::error_category"* %call, i32 %call2) ret void } ; Function Attrs: uwtable define available_externally dereferenceable(8) %"class.std::basic_string"* @_ZNSs6assignEPKc(%"class.std::basic_string"* %this, i8* %__s) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__s.addr = alloca i8*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store i8* %__s, i8** %__s.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %1 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %call = call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %1) %call2 = call dereferenceable(8) %"class.std::basic_string"* @_ZNSs6assignEPKcm(%"class.std::basic_string"* %this1, i8* %0, i64 %call) ret %"class.std::basic_string"* %call2 } declare dereferenceable(8) %"class.std::basic_string"* @_ZNSs6assignEPKcm(%"class.std::basic_string"*, i8*, i64) #3 ; Function Attrs: uwtable define available_externally dereferenceable(8) %"class.std::basic_string"* @_ZNSs6appendEPKc(%"class.std::basic_string"* %this, i8* %__s) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__s.addr = alloca i8*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store i8* %__s, i8** %__s.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %1 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %call = call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %1) %call2 = call dereferenceable(8) %"class.std::basic_string"* @_ZNSs6appendEPKcm(%"class.std::basic_string"* %this1, i8* %0, i64 %call) ret %"class.std::basic_string"* %call2 } declare dereferenceable(8) %"class.std::basic_string"* @_ZNSs6appendEPKcm(%"class.std::basic_string"*, i8*, i64) #3 declare dereferenceable(8) %"class.std::basic_string"* @_ZNSs6appendERKSs(%"class.std::basic_string"*, %"class.std::basic_string"* dereferenceable(8)) #3 ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIvEEE3getES3_(i8* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::device_ptr.115", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive1, i32 0, i32 0 store i8* %ptr.coerce, i8** %coerce.dive2, align 8 %0 = bitcast %"class.thrust::device_ptr.115"* %ptr to %"class.thrust::pointer.116"* %call = call i8* @_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEE3getEv(%"class.thrust::pointer.116"* %0) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEE3getEv(%"class.thrust::pointer.116"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.116"*, align 8 store %"class.thrust::pointer.116"* %this, %"class.thrust::pointer.116"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.116"*, %"class.thrust::pointer.116"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.116"* %this1 to %"class.thrust::iterator_adaptor.117"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIvEEPvvNS_6system4cuda6detail3tagENS_27random_access_traversal_tagEvlE4baseEv(%"class.thrust::iterator_adaptor.117"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 ret i8* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIvEEPvvNS_6system4cuda6detail3tagENS_27random_access_traversal_tagEvlE4baseEv(%"class.thrust::iterator_adaptor.117"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.117"*, align 8 store %"class.thrust::iterator_adaptor.117"* %this, %"class.thrust::iterator_adaptor.117"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.117"*, %"class.thrust::iterator_adaptor.117"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %this1, i32 0, i32 0 ret i8** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_IaEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISC_S9_vE4typeE(%"class.thrust::pointer.116"* %this, %"class.thrust::device_ptr"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.116"*, align 8 %other.addr = alloca %"class.thrust::device_ptr"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 store %"class.thrust::pointer.116"* %this, %"class.thrust::pointer.116"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr"* %other, %"class.thrust::device_ptr"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.116"*, %"class.thrust::pointer.116"** %this.addr, align 8 %1 = bitcast %"class.thrust::pointer.116"* %this1 to %"class.thrust::iterator_adaptor.117"* %2 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %other.addr, align 8 %3 = bitcast %"class.thrust::device_ptr"* %agg.tmp to i8* %4 = bitcast %"class.thrust::device_ptr"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive2, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive3, align 8 %call = call i8* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIaEEE3getES3_(i8* %5) store i8* %call, i8** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIvEEPvvNS_6system4cuda6detail3tagENS_27random_access_traversal_tagEvlEC2ERKS3_(%"class.thrust::iterator_adaptor.117"* %1, i8** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIaEEE3getES3_(i8* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 store i8* %ptr.coerce, i8** %coerce.dive2, align 8 %0 = bitcast %"class.thrust::device_ptr"* %ptr to %"class.thrust::pointer"* %call = call i8* @_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_16device_referenceIaEENS_10device_ptrIaEEE3getEv(%"class.thrust::pointer"* %0) ret i8* %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIvEEPvvNS_6system4cuda6detail3tagENS_27random_access_traversal_tagEvlEC2ERKS3_(%"class.thrust::iterator_adaptor.117"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.117"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor.117"* %this, %"class.thrust::iterator_adaptor.117"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.117"*, %"class.thrust::iterator_adaptor.117"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.117"* %this1 to %"class.thrust::iterator_facade.118"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !89 ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_16device_referenceIaEENS_10device_ptrIaEEE3getEv(%"class.thrust::pointer"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer"*, align 8 store %"class.thrust::pointer"* %this, %"class.thrust::pointer"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer"*, %"class.thrust::pointer"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer"* %this1 to %"class.thrust::iterator_adaptor.59"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE4baseEv(%"class.thrust::iterator_adaptor.59"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 ret i8* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE4baseEv(%"class.thrust::iterator_adaptor.59"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.59"*, align 8 store %"class.thrust::iterator_adaptor.59"* %this, %"class.thrust::iterator_adaptor.59"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.59"*, %"class.thrust::iterator_adaptor.59"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %this1, i32 0, i32 0 ret i8** %m_iterator } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIaNS_23device_malloc_allocatorIaEEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.55"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.55"*, align 8 store %"class.thrust::detail::contiguous_storage.55"* %this, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.55"*, %"class.thrust::detail::contiguous_storage.55"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.55", %"class.thrust::detail::contiguous_storage.55"* %this1, i32 0, i32 0 %call = call i64 @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE8max_sizeERKS3_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %m_allocator) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE8max_sizeERKS3_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %a) #8 comdat align 2 { entry: %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %a.addr, align 8 %call = call i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorIaEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS6_E9size_typeEE4typeERKS6_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %0) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorIaEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS6_E9size_typeEE4typeERKS6_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %a) #1 comdat { entry: %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 ret i64 -1 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE8allocateERS3_m(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %a, i64 %n) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i8* @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE8allocateERS3_mEN19workaround_warnings8allocateES5_m(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive5, align 8 ret i8* %2 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIaEEE8allocateERS3_mEN19workaround_warnings8allocateES5_m(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %a, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.122", align 8 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust10device_ptrIKaEC2IaEEPT_(%"class.thrust::device_ptr.122"* %agg.tmp, i8* null) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.122", %"class.thrust::device_ptr.122"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.123", %"class.thrust::pointer.123"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.124", %"class.thrust::iterator_adaptor.124"* %coerce.dive1, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive2, align 8 %call = call i8* @_ZN6thrust23device_malloc_allocatorIaE8allocateEmNS_10device_ptrIKaEE(%"class.thrust::device_malloc_allocator"* %0, i64 %1, i8* %2) %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 store i8* %call, i8** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive7, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive8, align 8 ret i8* %3 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust23device_malloc_allocatorIaE8allocateEmNS_10device_ptrIKaEE(%"class.thrust::device_malloc_allocator"* %this, i64 %cnt, i8* %.coerce) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %0 = alloca %"class.thrust::device_ptr.122", align 8 %this.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %cnt.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.122", %"class.thrust::device_ptr.122"* %0, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.123", %"class.thrust::pointer.123"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.124", %"class.thrust::iterator_adaptor.124"* %coerce.dive1, i32 0, i32 0 store i8* %.coerce, i8** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator"* %this, %"class.thrust::device_malloc_allocator"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this3 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %this.addr, align 8 %1 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call = call i64 @_ZNK6thrust23device_malloc_allocatorIaE8max_sizeEv(%"class.thrust::device_malloc_allocator"* %this3) %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %exception = call i8* @__cxa_allocate_exception(i64 8) #5 %2 = bitcast i8* %exception to %"class.std::bad_alloc"* call void @_ZNSt9bad_allocC2Ev(%"class.std::bad_alloc"* %2) #5 call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt9bad_alloc to i8*), i8* bitcast (void (%"class.std::bad_alloc"*)* @_ZNSt9bad_allocD1Ev to i8*)) #15 unreachable if.end: ; preds = %entry %3 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call4 = call i8* @_ZN6thrust13device_mallocIaEENS_10device_ptrIT_EEm(i64 %3) %coerce.dive5 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive6, i32 0, i32 0 store i8* %call4, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive9, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive10, align 8 ret i8* %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIKaEC2IaEEPT_(%"class.thrust::device_ptr.122"* %this, i8* %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.122"*, align 8 %ptr.addr = alloca i8*, align 8 store %"class.thrust::device_ptr.122"* %this, %"class.thrust::device_ptr.122"** %this.addr, align 8, !tbaa !1 store i8* %ptr, i8** %ptr.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_ptr.122"*, %"class.thrust::device_ptr.122"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.122"* %this1 to %"class.thrust::pointer.123"* %1 = load i8*, i8** %ptr.addr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIKaNS_6system4cuda6detail3tagENS_16device_referenceIS1_EENS_10device_ptrIS1_EEEC2IaEEPT_(%"class.thrust::pointer.123"* %0, i8* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZNK6thrust23device_malloc_allocatorIaE8max_sizeEv(%"class.thrust::device_malloc_allocator"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 store %"class.thrust::device_malloc_allocator"* %this, %"class.thrust::device_malloc_allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %this.addr, align 8 %call = call i64 @_ZNSt14numeric_limitsImE3maxEv() #5 %div = udiv i64 %call, 1 ret i64 %div } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSt9bad_allocC2Ev(%"class.std::bad_alloc"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::bad_alloc"*, align 8 store %"class.std::bad_alloc"* %this, %"class.std::bad_alloc"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::bad_alloc"*, %"class.std::bad_alloc"** %this.addr, align 8 %0 = bitcast %"class.std::bad_alloc"* %this1 to %"class.std::exception"* call void @_ZNSt9exceptionC2Ev(%"class.std::exception"* %0) #5 %1 = bitcast %"class.std::bad_alloc"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*], [5 x i8*]* @_ZTVSt9bad_alloc, i32 0, i32 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !5 ret void } ; Function Attrs: nounwind declare void @_ZNSt9bad_allocD1Ev(%"class.std::bad_alloc"*) unnamed_addr #4 ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust13device_mallocIaEENS_10device_ptrIT_EEm(i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %n.addr = alloca i64, align 8 %s = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %coerce = alloca %"class.thrust::pointer.126", align 8 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to %"struct.thrust::detail::execution_policy_base.121"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i8* @_ZN6thrust6mallocIaNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i64 %2) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.126", %"class.thrust::pointer.126"* %coerce, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.127", %"class.thrust::iterator_adaptor.127"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive1, align 8 %call2 = call i8* @_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.126"* %coerce) call void @_ZN6thrust10device_ptrIaEC2IaEEPT_(%"class.thrust::device_ptr"* %retval, i8* %call2) %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.end(i64 1, i8* %3) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive5, align 8 ret i8* %4 } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNSt14numeric_limitsImE3maxEv() #1 comdat align 2 { entry: ret i64 -1 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSt9exceptionC2Ev(%"class.std::exception"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::exception"*, align 8 store %"class.std::exception"* %this, %"class.std::exception"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::exception"*, %"class.std::exception"** %this.addr, align 8 %0 = bitcast %"class.std::exception"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*], [5 x i8*]* @_ZTVSt9exception, i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8, !tbaa !5 ret void } ; Function Attrs: nounwind declare void @_ZNSt9bad_allocD0Ev(%"class.std::bad_alloc"*) unnamed_addr #4 ; Function Attrs: nounwind declare i8* @_ZNKSt9bad_alloc4whatEv(%"class.std::bad_alloc"*) unnamed_addr #4 ; Function Attrs: nounwind declare void @_ZNSt9exceptionD1Ev(%"class.std::exception"*) unnamed_addr #4 ; Function Attrs: nounwind declare void @_ZNSt9exceptionD0Ev(%"class.std::exception"*) unnamed_addr #4 ; Function Attrs: nounwind declare i8* @_ZNKSt9exception4whatEv(%"class.std::exception"*) unnamed_addr #4 ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6mallocIaNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.126", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %raw_ptr = alloca i8*, align 8 %ref.tmp = alloca %"class.thrust::pointer.126", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %raw_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call i8* @_ZN6thrust6system6detail7generic6mallocIaNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.126", %"class.thrust::pointer.126"* %ref.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.127", %"class.thrust::iterator_adaptor.127"* %coerce.dive, i32 0, i32 0 store i8* %call2, i8** %coerce.dive3, align 8 %call4 = call i8* @_ZN6thrust16raw_pointer_castINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_(%"class.thrust::pointer.126"* dereferenceable(8) %ref.tmp) store i8* %call4, i8** %raw_ptr, align 8, !tbaa !1 %4 = load i8*, i8** %raw_ptr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IaEEPT_(%"class.thrust::pointer.126"* %retval, i8* %4) %5 = bitcast i8** %raw_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.126", %"class.thrust::pointer.126"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.127", %"class.thrust::iterator_adaptor.127"* %coerce.dive5, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive6, align 8 ret i8* %6 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.126"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.126"*, align 8 store %"class.thrust::pointer.126"* %this, %"class.thrust::pointer.126"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.126"*, %"class.thrust::pointer.126"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.126"* %this1 to %"class.thrust::iterator_adaptor.127"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPaaS5_NS_27random_access_traversal_tagENS_9referenceIaS7_S6_EElE4baseEv(%"class.thrust::iterator_adaptor.127"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 ret i8* %1 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust16raw_pointer_castINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_(%"class.thrust::pointer.126"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::pointer.126"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.126", align 8 store %"class.thrust::pointer.126"* %ptr, %"class.thrust::pointer.126"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.126"*, %"class.thrust::pointer.126"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.126"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.126"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.126", %"class.thrust::pointer.126"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.127", %"class.thrust::iterator_adaptor.127"* %coerce.dive, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive1, align 8 %call = call i8* @_ZN6thrust6detail14pointer_traitsINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_(i8* %3) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic6mallocIaNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.126", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %void_ptr = alloca %"class.thrust::pointer.129", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 1, %3 %call = call i8* @_ZN6thrust6mallocINS_6system4cuda6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %mul) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.129", %"class.thrust::pointer.129"* %void_ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.130", %"class.thrust::iterator_adaptor.130"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive1, align 8 %call2 = call i8* @_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.129"* %void_ptr) call void @_ZN6thrust7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IaEEPT_(%"class.thrust::pointer.126"* %retval, i8* %call2) %4 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %4) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.126", %"class.thrust::pointer.126"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.127", %"class.thrust::iterator_adaptor.127"* %coerce.dive3, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive4, align 8 ret i8* %5 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IaEEPT_(%"class.thrust::pointer.126"* %this, i8* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.126"*, align 8 %other.addr = alloca i8*, align 8 store %"class.thrust::pointer.126"* %this, %"class.thrust::pointer.126"** %this.addr, align 8, !tbaa !1 store i8* %other, i8** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.126"*, %"class.thrust::pointer.126"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.126"* %this1 to %"class.thrust::iterator_adaptor.127"* call void @_ZN6thrust16iterator_adaptorINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPaaS5_NS_27random_access_traversal_tagENS_9referenceIaS7_S6_EElEC2ERKS8_(%"class.thrust::iterator_adaptor.127"* %0, i8** dereferenceable(8) %other.addr) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust6detail14pointer_traitsINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_(i8* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::pointer.126", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.126", %"class.thrust::pointer.126"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.127", %"class.thrust::iterator_adaptor.127"* %coerce.dive, i32 0, i32 0 store i8* %ptr.coerce, i8** %coerce.dive1, align 8 %call = call i8* @_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.126"* %ptr) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6mallocINS_6system4cuda6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.129", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %raw_ptr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %raw_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call i8* @_ZN6thrust6system4cuda6detail6mallocINS2_3tagEEEPvRNS2_16execution_policyIT_EEm(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %2, i64 %3) store i8* %call2, i8** %ref.tmp, align 8, !tbaa !1 %call3 = call i8* @_ZN6thrust16raw_pointer_castIPvEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_(i8** dereferenceable(8) %ref.tmp) store i8* %call3, i8** %raw_ptr, align 8, !tbaa !1 %4 = load i8*, i8** %raw_ptr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IvEEPT_(%"class.thrust::pointer.129"* %retval, i8* %4) %5 = bitcast i8** %raw_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.129", %"class.thrust::pointer.129"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.130", %"class.thrust::iterator_adaptor.130"* %coerce.dive, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive4, align 8 ret i8* %6 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.129"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.129"*, align 8 store %"class.thrust::pointer.129"* %this, %"class.thrust::pointer.129"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.129"*, %"class.thrust::pointer.129"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.129"* %this1 to %"class.thrust::iterator_adaptor.130"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlE4baseEv(%"class.thrust::iterator_adaptor.130"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 ret i8* %1 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust16raw_pointer_castIPvEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_(i8** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca i8**, align 8 store i8** %ptr, i8*** %ptr.addr, align 8, !tbaa !7 %0 = load i8**, i8*** %ptr.addr, align 8 %1 = load i8*, i8** %0, align 8, !tbaa !1 %call = call i8* @_ZN6thrust6detail14pointer_traitsIPvE3getES2_(i8* %1) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system4cuda6detail6mallocINS2_3tagEEEPvRNS2_16execution_policyIT_EEm(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1), i64 %n) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %result = alloca i8*, align 8 %error = alloca i32, align 4 %ref.tmp = alloca %"class.std::basic_string", align 8 %temp.lvalue = alloca %"class.std::basic_string", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp4 = alloca %"class.std::allocator", align 1 %cleanup.isactive = alloca i1, align 1 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %0, %"struct.thrust::system::cuda::detail::execution_policy.119"** %.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = bitcast i8** %result to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 store i8* null, i8** %result, align 8, !tbaa !1 %2 = bitcast i32* %error to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i32 @cudaMalloc(i8** %result, i64 %3) store i32 %call, i32* %error, align 4, !tbaa !73 %4 = load i32, i32* %error, align 4, !tbaa !73 %tobool = icmp ne i32 %4, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %5 = bitcast i8* %exception to %"class.thrust::system::detail::bad_alloc"* %call1 = invoke dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system13cuda_categoryEv() to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then %6 = bitcast %"class.thrust::system::error_category"* %call1 to void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*** %vtable = load void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)**, void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*** %6, align 8, !tbaa !5 %vfn = getelementptr inbounds void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*, void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)** %vtable, i64 6 %7 = load void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)*, void (%"class.std::basic_string"*, %"class.thrust::system::error_category"*, i32)** %vfn, align 8 %8 = load i32, i32* %error, align 4, !tbaa !73 invoke void %7(%"class.std::basic_string"* sret %temp.lvalue, %"class.thrust::system::error_category"* %call1, i32 %8) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call3 = call i8* @_ZNKSs5c_strEv(%"class.std::basic_string"* %temp.lvalue) #5 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp4) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp, i8* %call3, %"class.std::allocator"* dereferenceable(1) %ref.tmp4) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %invoke.cont2 invoke void @_ZN6thrust6system6detail9bad_allocC2ERKSs(%"class.thrust::system::detail::bad_alloc"* %5, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont8 unwind label %lpad7 invoke.cont8: ; preds = %invoke.cont6 store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system6detail9bad_allocE to i8*), i8* bitcast (void (%"class.thrust::system::detail::bad_alloc"*)* @_ZN6thrust6system6detail9bad_allocD2Ev to i8*)) #15 to label %unreachable unwind label %lpad7 lpad: ; preds = %invoke.cont, %if.then %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 br label %ehcleanup10 lpad5: ; preds = %invoke.cont2 %12 = landingpad { i8*, i32 } cleanup %13 = extractvalue { i8*, i32 } %12, 0 store i8* %13, i8** %exn.slot, align 8 %14 = extractvalue { i8*, i32 } %12, 1 store i32 %14, i32* %ehselector.slot, align 4 br label %ehcleanup lpad7: ; preds = %invoke.cont8, %invoke.cont6 %15 = landingpad { i8*, i32 } cleanup %16 = extractvalue { i8*, i32 } %15, 0 store i8* %16, i8** %exn.slot, align 8 %17 = extractvalue { i8*, i32 } %15, 1 store i32 %17, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad7, %lpad5 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp4) #5 call void @_ZNSsD2Ev(%"class.std::basic_string"* %temp.lvalue) #5 br label %ehcleanup10 ehcleanup10: ; preds = %ehcleanup, %lpad %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup10 call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup10 %18 = bitcast i32* %error to i8* call void @llvm.lifetime.end(i64 4, i8* %18) #5 %19 = bitcast i8** %result to i8* call void @llvm.lifetime.end(i64 8, i8* %19) #5 br label %eh.resume if.end: ; preds = %entry %20 = load i8*, i8** %result, align 8, !tbaa !1 %21 = bitcast i32* %error to i8* call void @llvm.lifetime.end(i64 4, i8* %21) #5 %22 = bitcast i8** %result to i8* call void @llvm.lifetime.end(i64 8, i8* %22) #5 ret i8* %20 eh.resume: ; preds = %cleanup.done %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val13 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val13 unreachable: ; preds = %invoke.cont8 unreachable } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IvEEPT_(%"class.thrust::pointer.129"* %this, i8* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.129"*, align 8 %other.addr = alloca i8*, align 8 store %"class.thrust::pointer.129"* %this, %"class.thrust::pointer.129"** %this.addr, align 8, !tbaa !1 store i8* %other, i8** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.129"*, %"class.thrust::pointer.129"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.129"* %this1 to %"class.thrust::iterator_adaptor.130"* call void @_ZN6thrust16iterator_adaptorINS_7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlEC2ERKS8_(%"class.thrust::iterator_adaptor.130"* %0, i8** dereferenceable(8) %other.addr) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZN6thrust6detail14pointer_traitsIPvE3getES2_(i8* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca i8*, align 8 store i8* %ptr, i8** %ptr.addr, align 8, !tbaa !1 %0 = load i8*, i8** %ptr.addr, align 8, !tbaa !1 ret i8* %0 } declare i32 @cudaMalloc(i8**, i64) #3 ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system6detail9bad_allocC2ERKSs(%"class.thrust::system::detail::bad_alloc"* %this, %"class.std::basic_string"* dereferenceable(8) %w) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::system::detail::bad_alloc"*, align 8 %w.addr = alloca %"class.std::basic_string"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::system::detail::bad_alloc"* %this, %"class.thrust::system::detail::bad_alloc"** %this.addr, align 8, !tbaa !1 store %"class.std::basic_string"* %w, %"class.std::basic_string"** %w.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::detail::bad_alloc"*, %"class.thrust::system::detail::bad_alloc"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::detail::bad_alloc"* %this1 to %"class.std::bad_alloc"* call void @_ZNSt9bad_allocC2Ev(%"class.std::bad_alloc"* %0) #5 %1 = bitcast %"class.thrust::system::detail::bad_alloc"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*], [5 x i8*]* @_ZTVN6thrust6system6detail9bad_allocE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !5 %m_what = getelementptr inbounds %"class.thrust::system::detail::bad_alloc", %"class.thrust::system::detail::bad_alloc"* %this1, i32 0, i32 1 invoke void @_ZNSsC2Ev(%"class.std::basic_string"* %m_what) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_what2 = getelementptr inbounds %"class.thrust::system::detail::bad_alloc", %"class.thrust::system::detail::bad_alloc"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::detail::bad_alloc"* %this1 to %"class.std::bad_alloc"* %call = call i8* @_ZNKSt9bad_alloc4whatEv(%"class.std::bad_alloc"* %2) #5 %call5 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSsaSEPKc(%"class.std::basic_string"* %m_what2, i8* %call) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont %m_what6 = getelementptr inbounds %"class.thrust::system::detail::bad_alloc", %"class.thrust::system::detail::bad_alloc"* %this1, i32 0, i32 1 %call8 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLEPKc(%"class.std::basic_string"* %m_what6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i32 0, i32 0)) to label %invoke.cont7 unwind label %lpad3 invoke.cont7: ; preds = %invoke.cont4 %m_what9 = getelementptr inbounds %"class.thrust::system::detail::bad_alloc", %"class.thrust::system::detail::bad_alloc"* %this1, i32 0, i32 1 %3 = load %"class.std::basic_string"*, %"class.std::basic_string"** %w.addr, align 8 %call11 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLERKSs(%"class.std::basic_string"* %m_what9, %"class.std::basic_string"* dereferenceable(8) %3) to label %invoke.cont10 unwind label %lpad3 invoke.cont10: ; preds = %invoke.cont7 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont7, %invoke.cont4, %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %m_what) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad %10 = bitcast %"class.thrust::system::detail::bad_alloc"* %this1 to %"class.std::bad_alloc"* call void @_ZNSt9bad_allocD2Ev(%"class.std::bad_alloc"* %10) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val12 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val12 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail9bad_allocD2Ev(%"class.thrust::system::detail::bad_alloc"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::bad_alloc"*, align 8 store %"class.thrust::system::detail::bad_alloc"* %this, %"class.thrust::system::detail::bad_alloc"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::detail::bad_alloc"*, %"class.thrust::system::detail::bad_alloc"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::detail::bad_alloc"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*], [5 x i8*]* @_ZTVN6thrust6system6detail9bad_allocE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8, !tbaa !5 %m_what = getelementptr inbounds %"class.thrust::system::detail::bad_alloc", %"class.thrust::system::detail::bad_alloc"* %this1, i32 0, i32 1 call void @_ZNSsD2Ev(%"class.std::basic_string"* %m_what) #5 %1 = bitcast %"class.thrust::system::detail::bad_alloc"* %this1 to %"class.std::bad_alloc"* call void @_ZNSt9bad_allocD2Ev(%"class.std::bad_alloc"* %1) #5 ret void } ; Function Attrs: nounwind declare void @_ZNSt9bad_allocD2Ev(%"class.std::bad_alloc"*) unnamed_addr #4 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail9bad_allocD0Ev(%"class.thrust::system::detail::bad_alloc"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::bad_alloc"*, align 8 store %"class.thrust::system::detail::bad_alloc"* %this, %"class.thrust::system::detail::bad_alloc"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::detail::bad_alloc"*, %"class.thrust::system::detail::bad_alloc"** %this.addr, align 8 call void @_ZN6thrust6system6detail9bad_allocD2Ev(%"class.thrust::system::detail::bad_alloc"* %this1) #5 %0 = bitcast %"class.thrust::system::detail::bad_alloc"* %this1 to i8* call void @_ZdlPv(i8* %0) #14 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZNK6thrust6system6detail9bad_alloc4whatEv(%"class.thrust::system::detail::bad_alloc"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::detail::bad_alloc"*, align 8 store %"class.thrust::system::detail::bad_alloc"* %this, %"class.thrust::system::detail::bad_alloc"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::detail::bad_alloc"*, %"class.thrust::system::detail::bad_alloc"** %this.addr, align 8 %m_what = getelementptr inbounds %"class.thrust::system::detail::bad_alloc", %"class.thrust::system::detail::bad_alloc"* %this1, i32 0, i32 1 %call = call i8* @_ZNKSs5c_strEv(%"class.std::basic_string"* %m_what) #5 ret i8* %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlEC2ERKS8_(%"class.thrust::iterator_adaptor.130"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.130"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor.130"* %this, %"class.thrust::iterator_adaptor.130"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.130"*, %"class.thrust::iterator_adaptor.130"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.130"* %this1 to %"class.thrust::iterator_facade.131"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.130", %"class.thrust::iterator_adaptor.130"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !91 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlE4baseEv(%"class.thrust::iterator_adaptor.130"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.130"*, align 8 store %"class.thrust::iterator_adaptor.130"* %this, %"class.thrust::iterator_adaptor.130"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.130"*, %"class.thrust::iterator_adaptor.130"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.130", %"class.thrust::iterator_adaptor.130"* %this1, i32 0, i32 0 ret i8** %m_iterator } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPaaS5_NS_27random_access_traversal_tagENS_9referenceIaS7_S6_EElEC2ERKS8_(%"class.thrust::iterator_adaptor.127"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.127"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor.127"* %this, %"class.thrust::iterator_adaptor.127"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.127"*, %"class.thrust::iterator_adaptor.127"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.127"* %this1 to %"class.thrust::iterator_facade.128"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.127", %"class.thrust::iterator_adaptor.127"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !93 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_7pointerIaNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPaaS5_NS_27random_access_traversal_tagENS_9referenceIaS7_S6_EElE4baseEv(%"class.thrust::iterator_adaptor.127"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.127"*, align 8 store %"class.thrust::iterator_adaptor.127"* %this, %"class.thrust::iterator_adaptor.127"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.127"*, %"class.thrust::iterator_adaptor.127"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.127", %"class.thrust::iterator_adaptor.127"* %this1, i32 0, i32 0 ret i8** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIKaNS_6system4cuda6detail3tagENS_16device_referenceIS1_EENS_10device_ptrIS1_EEEC2IaEEPT_(%"class.thrust::pointer.123"* %this, i8* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.123"*, align 8 %other.addr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 store %"class.thrust::pointer.123"* %this, %"class.thrust::pointer.123"** %this.addr, align 8, !tbaa !1 store i8* %other, i8** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.123"*, %"class.thrust::pointer.123"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.123"* %this1 to %"class.thrust::iterator_adaptor.124"* %1 = load i8*, i8** %other.addr, align 8, !tbaa !1 store i8* %1, i8** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKaEEPS2_aNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS2_EElEC2ERKS4_(%"class.thrust::iterator_adaptor.124"* %0, i8** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKaEEPS2_aNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS2_EElEC2ERKS4_(%"class.thrust::iterator_adaptor.124"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.124"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor.124"* %this, %"class.thrust::iterator_adaptor.124"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.124"*, %"class.thrust::iterator_adaptor.124"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.124"* %this1 to %"class.thrust::iterator_facade.125"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.124", %"class.thrust::iterator_adaptor.124"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !95 ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIaEENS0_15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_RNS_16execution_policyIT_EERT0_T1_SL_SE_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.thrust::device_malloc_allocator"* dereferenceable(1) %a, i8* %first.coerce, i8* %last.coerce, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::device_ptr", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp8 = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %a.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp7 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::device_ptr"* %agg.tmp8 to i8* %7 = bitcast %"class.thrust::device_ptr"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive9, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp7, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive11, i32 0, i32 0 %9 = load i8*, i8** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp8, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive14, i32 0, i32 0 %10 = load i8*, i8** %coerce.dive15, align 8 %call = call i8* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIaEENS0_15normal_iteratorIPKaEENS_10device_ptrIaEEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESI_E4typeERNS_16execution_policyIT_EERSG_T1_SS_SI_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"class.thrust::device_malloc_allocator"* dereferenceable(1) %1, i8* %8, i8* %9, i8* %10) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive17, i32 0, i32 0 store i8* %call, i8** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive20, i32 0, i32 0 %11 = load i8*, i8** %coerce.dive21, align 8 ret i8* %11 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIaEENS0_15normal_iteratorIPKaEENS_10device_ptrIaEEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESI_E4typeERNS_16execution_policyIT_EERSG_T1_SS_SI_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.thrust::device_malloc_allocator"* dereferenceable(1) %a, i8* %first.coerce, i8* %last.coerce, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::device_ptr", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp8 = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorIaEEE3getERS3_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %1) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %ref.tmp to %"struct.thrust::execution_policy.120"* %3 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::device_ptr"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::device_ptr"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive9, i32 0, i32 0 %9 = load i8*, i8** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp7, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive11, i32 0, i32 0 %10 = load i8*, i8** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp8, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive14, i32 0, i32 0 %11 = load i8*, i8** %coerce.dive15, align 8 %call = call i8* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_RKNS_16execution_policyIT_EERKNSG_IT0_EET1_SP_SF_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i8* %9, i8* %10, i8* %11) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive17, i32 0, i32 0 store i8* %call, i8** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive20, i32 0, i32 0 %12 = load i8*, i8** %coerce.dive21, align 8 ret i8* %12 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_RKNS_16execution_policyIT_EERKNSG_IT0_EET1_SP_SF_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system2, i8* %first.coerce, i8* %last.coerce, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::device_ptr", align 8 %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp12 = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %system2, %"struct.thrust::execution_policy.120"** %system2.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call7 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call7 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %3 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2.addr, align 8 %4 = bitcast %"struct.thrust::execution_policy.120"* %3 to %"struct.thrust::detail::execution_policy_base.121"* %call8 = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %4) %call9 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call8) %5 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call9 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call10 = call { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } @_ZN6thrust6system4cuda6detail13select_systemINS0_3cpp6detail3tagENS2_3tagEEENS2_12cross_systemIT_T0_EERKNS5_16execution_policyIS9_EERNS2_16execution_policyISA_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %2, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %5) %6 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %ref.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %7 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %6, i32 0, i32 0 %8 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call10, 0 store %"struct.thrust::execution_policy.88"* %8, %"struct.thrust::execution_policy.88"** %7, align 8 %9 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %6, i32 0, i32 1 %10 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call10, 1 store %"struct.thrust::execution_policy.120"* %10, %"struct.thrust::execution_policy.120"** %9, align 8 %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.132"* %12 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp11 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::device_ptr"* %agg.tmp12 to i8* %17 = bitcast %"class.thrust::device_ptr"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive13, i32 0, i32 0 %18 = load i8*, i8** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp11, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive15, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp12, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive18, i32 0, i32 0 %20 = load i8*, i8** %coerce.dive19, align 8 %call20 = call i8* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET1_RKNSA_21execution_policy_baseIT_EET0_SN_SH_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %11, i8* %18, i8* %19, i8* %20) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive22, i32 0, i32 0 store i8* %call20, i8** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive25, i32 0, i32 0 %21 = load i8*, i8** %coerce.dive26, align 8 ret i8* %21 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorIaEEE3getERS3_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %a) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorIaEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS6_E4typeEE4typeERS6_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET1_RKNSA_21execution_policy_baseIT_EET0_SN_SH_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %exec, i8* %first.coerce, i8* %last.coerce, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::device_ptr", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.132"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp10 = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive6, align 8 store %"struct.thrust::detail::execution_policy_base.132"* %exec, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.132"*, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.132"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %0) %call7 = call dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %call7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp8 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp9 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::device_ptr"* %agg.tmp10 to i8* %8 = bitcast %"class.thrust::device_ptr"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp8, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive11, i32 0, i32 0 %14 = load i8*, i8** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp9, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive13, i32 0, i32 0 %15 = load i8*, i8** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp10, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive16, i32 0, i32 0 %16 = load i8*, i8** %coerce.dive17, align 8 %call18 = call i8* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, i8* %14, i8* %15, i8* %16) %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive20, i32 0, i32 0 store i8* %call18, i8** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive23, i32 0, i32 0 %17 = load i8*, i8** %coerce.dive24, align 8 ret i8* %17 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } @_ZN6thrust6system4cuda6detail13select_systemINS0_3cpp6detail3tagENS2_3tagEEENS2_12cross_systemIT_T0_EERKNS5_16execution_policyIS9_EERNS2_16execution_policyISA_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %system1, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %system2) #8 comdat { entry: %retval = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %system1.addr = alloca %"struct.thrust::system::cpp::detail::execution_policy.86"*, align 8 %system2.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %non_const_system1 = alloca %"struct.thrust::system::cpp::detail::execution_policy.86"*, align 8 %non_const_system2 = alloca %"struct.thrust::execution_policy.120"*, align 8 store %"struct.thrust::system::cpp::detail::execution_policy.86"* %system1, %"struct.thrust::system::cpp::detail::execution_policy.86"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %system2, %"struct.thrust::system::cuda::detail::execution_policy.119"** %system2.addr, align 8, !tbaa !7 %0 = bitcast %"struct.thrust::system::cpp::detail::execution_policy.86"** %non_const_system1 to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::system::cpp::detail::execution_policy.86"*, %"struct.thrust::system::cpp::detail::execution_policy.86"** %system1.addr, align 8 store %"struct.thrust::system::cpp::detail::execution_policy.86"* %1, %"struct.thrust::system::cpp::detail::execution_policy.86"** %non_const_system1, align 8, !tbaa !7 %2 = bitcast %"struct.thrust::execution_policy.120"** %non_const_system2 to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 %3 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %system2.addr, align 8 %4 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %3 to %"struct.thrust::execution_policy.120"* store %"struct.thrust::execution_policy.120"* %4, %"struct.thrust::execution_policy.120"** %non_const_system2, align 8, !tbaa !7 %5 = load %"struct.thrust::system::cpp::detail::execution_policy.86"*, %"struct.thrust::system::cpp::detail::execution_policy.86"** %non_const_system1, align 8 %6 = bitcast %"struct.thrust::system::cpp::detail::execution_policy.86"* %5 to %"struct.thrust::execution_policy.88"* %7 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %non_const_system2, align 8 call void @_ZN6thrust6system4cuda6detail12cross_systemINS0_3cpp6detail3tagENS2_3tagEEC2ERNS_16execution_policyIS6_EERNS9_IS7_EE(%"struct.thrust::system::cuda::detail::cross_system"* %retval, %"struct.thrust::execution_policy.88"* dereferenceable(1) %6, %"struct.thrust::execution_policy.120"* dereferenceable(1) %7) %8 = bitcast %"struct.thrust::execution_policy.120"** %non_const_system2 to i8* call void @llvm.lifetime.end(i64 8, i8* %8) #5 %9 = bitcast %"struct.thrust::system::cpp::detail::execution_policy.86"** %non_const_system1 to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %10 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %retval to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11 = load { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10, align 8 ret { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %11 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i8* %first.coerce, i8* %last.coerce, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %last = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::device_ptr", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr", align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.112"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr"* %agg.tmp9 to i8* %10 = bitcast %"class.thrust::device_ptr"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp7, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive10, i32 0, i32 0 %16 = load i8*, i8** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp8, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive12, i32 0, i32 0 %17 = load i8*, i8** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp9, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive15, i32 0, i32 0 %18 = load i8*, i8** %coerce.dive16, align 8 %call = call i8* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, i8* %16, i8* %17, i8* %18) %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive18, i32 0, i32 0 store i8* %call, i8** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive21, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive22, align 8 ret i8* %19 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %x) #9 comdat { entry: %x.addr = alloca %"struct.thrust::detail::execution_policy_base.132"*, align 8 store %"struct.thrust::detail::execution_policy_base.132"* %x, %"struct.thrust::detail::execution_policy_base.132"** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.132"*, %"struct.thrust::detail::execution_policy_base.132"** %x.addr, align 8 %1 = bitcast %"struct.thrust::detail::execution_policy_base.132"* %0 to %"struct.thrust::system::cuda::detail::cross_system"* ret %"struct.thrust::system::cuda::detail::cross_system"* %1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::detail::execution_policy_base.132"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %x) #9 comdat { entry: %x.addr = alloca %"struct.thrust::detail::execution_policy_base.132"*, align 8 store %"struct.thrust::detail::execution_policy_base.132"* %x, %"struct.thrust::detail::execution_policy_base.132"** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.132"*, %"struct.thrust::detail::execution_policy_base.132"** %x.addr, align 8 ret %"struct.thrust::detail::execution_policy_base.132"* %0 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i8* %begin.coerce, i8* %end.coerce, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.112", align 8 %end = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::device_ptr", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr", align 8 %agg.tmp10 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp11 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %begin.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %end.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.112"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.112"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr"* %agg.tmp9 to i8* %10 = bitcast %"class.thrust::device_ptr"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp7, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive12, i32 0, i32 0 %16 = load i8*, i8** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive14, i32 0, i32 0 %17 = load i8*, i8** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive17, i32 0, i32 0 %18 = load i8*, i8** %coerce.dive18, align 8 %call = call i8* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, i8* %16, i8* %17, i8* %18) %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive20, i32 0, i32 0 store i8* %call, i8** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive23, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive24, align 8 ret i8* %19 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i8* %begin.coerce, i8* %end.coerce, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.112", align 8 %end = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::device_ptr", align 8 %input_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %output_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp10 = alloca %"class.thrust::device_ptr", align 8 %agg.tmp11 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp12 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp13 = alloca %"struct.thrust::detail::integral_constant", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %begin.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %end.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp8 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.112"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp9 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.112"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::device_ptr"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive14, i32 0, i32 0 %16 = load i8*, i8** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive16, i32 0, i32 0 %17 = load i8*, i8** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp10, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive19, i32 0, i32 0 %18 = load i8*, i8** %coerce.dive20, align 8 %call = call i8* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, i8* %16, i8* %17, i8* %18) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive22, i32 0, i32 0 store i8* %call, i8** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive25, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive26, align 8 ret i8* %19 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEENS_10device_ptrIaEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i8* %begin.coerce, i8* %end.coerce, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.112", align 8 %end = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::device_ptr", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %2 = alloca %"struct.thrust::detail::integral_constant", align 1 %n = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.112", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr", align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %4 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %5, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %begin.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive2, i32 0, i32 0 store i8* %end.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive6, align 8 %6 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %6) #5 %7 = bitcast %"class.thrust::detail::normal_iterator.112"* %end to %"class.thrust::iterator_facade.114"* %8 = bitcast %"class.thrust::detail::normal_iterator.112"* %begin to %"class.thrust::iterator_facade.114"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_aS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.114"* dereferenceable(1) %7, %"class.thrust::iterator_facade.114"* dereferenceable(1) %8) store i64 %call, i64* %n, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.112"* %agg.tmp to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.112"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = load i64, i64* %n, align 8, !tbaa !13 %12 = bitcast %"class.thrust::device_ptr"* %agg.tmp9 to i8* %13 = bitcast %"class.thrust::device_ptr"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive10, i32 0, i32 0 %14 = load i8*, i8** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp9, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive13, i32 0, i32 0 %15 = load i8*, i8** %coerce.dive14, align 8 call void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEElNS_10device_ptrIaEEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, i8* %14, i64 %11, i8* %15) %16 = bitcast %"class.thrust::device_ptr"* %result to %"class.thrust::iterator_facade.60"* %17 = load i64, i64* %n, align 8, !tbaa !13 %call15 = call i8* @_ZN6thrustplINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEET_RKNS_15iterator_facadeISA_T0_T1_T2_T3_T4_EENSA_15difference_typeE(%"class.thrust::iterator_facade.60"* dereferenceable(1) %16, i64 %17) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive17, i32 0, i32 0 store i8* %call15, i8** %coerce.dive18, align 8 %18 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %18) #5 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive20, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive21, align 8 ret i8* %19 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKaEElNS_10device_ptrIaEEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, i8* %first.coerce, i64 %n, i8* %result.coerce) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.112", align 8 %result = alloca %"class.thrust::device_ptr", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system"*, align 8 %n.addr = alloca i64, align 8 %dst = alloca i8*, align 8 %ref.tmp = alloca %"class.thrust::device_ptr", align 8 %coerce = alloca %"class.thrust::device_reference", align 8 %src = alloca i8*, align 8 %ref.tmp15 = alloca i8*, align 8 %kind = alloca i32, align 4 %s = alloca %struct.CUstream_st*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %result, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive3, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive4, align 8 store %"struct.thrust::system::cuda::detail::cross_system"* %systems, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %dst to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = bitcast %"class.thrust::device_ptr"* %result to %"class.thrust::iterator_facade.60"* %call = call i8* @_ZNK6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEdeEv(%"class.thrust::iterator_facade.60"* %1) %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference", %"class.thrust::device_reference"* %coerce, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference", %"class.thrust::reference"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive8, i32 0, i32 0 store i8* %call, i8** %coerce.dive9, align 8 %2 = bitcast %"class.thrust::device_reference"* %coerce to %"class.thrust::reference"* %call10 = call i8* @_ZNK6thrust9referenceIaNS_10device_ptrIaEENS_16device_referenceIaEEEadEv(%"class.thrust::reference"* %2) %coerce.dive11 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %ref.tmp, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive12, i32 0, i32 0 store i8* %call10, i8** %coerce.dive13, align 8 %call14 = call i8* @_ZN6thrust16raw_pointer_castINS_10device_ptrIaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(%"class.thrust::device_ptr"* dereferenceable(8) %ref.tmp) store i8* %call14, i8** %dst, align 8, !tbaa !1 %3 = bitcast i8** %src to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = bitcast %"class.thrust::detail::normal_iterator.112"* %first to %"class.thrust::iterator_facade.114"* %call16 = call dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv(%"class.thrust::iterator_facade.114"* %4) store i8* %call16, i8** %ref.tmp15, align 8, !tbaa !1 %call17 = call i8* @_ZN6thrust16raw_pointer_castIPKaEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(i8** dereferenceable(8) %ref.tmp15) store i8* %call17, i8** %src, align 8, !tbaa !1 %5 = bitcast i32* %kind to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system1 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %6, i32 0, i32 0 %ref = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1, align 8, !tbaa !7 %7 = bitcast %"struct.thrust::execution_policy.88"* %ref to %"struct.thrust::detail::execution_policy_base.85"* %call18 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %7) %8 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call18 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %9 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system2 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %9, i32 0, i32 1 %ref19 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2, align 8, !tbaa !7 %10 = bitcast %"struct.thrust::execution_policy.120"* %ref19 to %"struct.thrust::detail::execution_policy_base.121"* %call20 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %10) %11 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call20 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call21 = call i32 @_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS0_3cpp6detail3tagENS2_3tagEEE14cudaMemcpyKindRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %8, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %11) store i32 %call21, i32* %kind, align 4, !tbaa !97 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %12) #5 %13 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system122 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %13, i32 0, i32 0 %ref23 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system122, align 8, !tbaa !7 %14 = bitcast %"struct.thrust::execution_policy.88"* %ref23 to %"struct.thrust::detail::execution_policy_base.85"* %call24 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %14) %15 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call24 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %16 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system225 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %16, i32 0, i32 1 %ref26 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system225, align 8, !tbaa !7 %17 = bitcast %"struct.thrust::execution_policy.120"* %ref26 to %"struct.thrust::detail::execution_policy_base.121"* %call27 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %17) %18 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call27 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call28 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS0_3cpp6detail3tagENS2_3tagEEEP11CUstream_stRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %15, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %18) store %struct.CUstream_st* %call28, %struct.CUstream_st** %s, align 8, !tbaa !1 %19 = load i8*, i8** %dst, align 8, !tbaa !1 %20 = load i8*, i8** %src, align 8, !tbaa !1 %21 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 %21, 1 %22 = load i32, i32* %kind, align 4, !tbaa !97 %23 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail19trivial_copy_detail23checked_cudaMemcpyAsyncEPvPKvm14cudaMemcpyKindP11CUstream_st(i8* %19, i8* %20, i64 %mul, i32 %22, %struct.CUstream_st* %23) %24 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail11synchronizeEP11CUstream_stPKc(%struct.CUstream_st* %24, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.30, i32 0, i32 0)) %25 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %25) #5 %26 = bitcast i32* %kind to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 %27 = bitcast i8** %src to i8* call void @llvm.lifetime.end(i64 8, i8* %27) #5 %28 = bitcast i8** %dst to i8* call void @llvm.lifetime.end(i64 8, i8* %28) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrustplINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEET_RKNS_15iterator_facadeISA_T0_T1_T2_T3_T4_EENSA_15difference_typeE(%"class.thrust::iterator_facade.60"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %i.addr = alloca %"class.thrust::iterator_facade.60"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::device_ptr", align 8 store %"class.thrust::iterator_facade.60"* %i, %"class.thrust::iterator_facade.60"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::device_ptr"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.60"*, %"class.thrust::iterator_facade.60"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.60"* %1 to %"class.thrust::device_ptr"* %3 = bitcast %"class.thrust::device_ptr"* %tmp to i8* %4 = bitcast %"class.thrust::device_ptr"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::device_ptr"* %tmp to %"class.thrust::iterator_facade.60"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::device_ptr"* @_ZN6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEpLEl(%"class.thrust::iterator_facade.60"* %5, i64 %6) %7 = bitcast %"class.thrust::device_ptr"* %retval to i8* %8 = bitcast %"class.thrust::device_ptr"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 %10 = load i8*, i8** %coerce.dive2, align 8 ret i8* %10 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust16raw_pointer_castINS_10device_ptrIaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(%"class.thrust::device_ptr"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::device_ptr"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 store %"class.thrust::device_ptr"* %ptr, %"class.thrust::device_ptr"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive2, align 8 %call = call i8* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIaEEE3getES3_(i8* %3) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEdeEv(%"class.thrust::iterator_facade.60"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference", align 8 %this.addr = alloca %"class.thrust::iterator_facade.60"*, align 8 store %"class.thrust::iterator_facade.60"* %this, %"class.thrust::iterator_facade.60"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.60"*, %"class.thrust::iterator_facade.60"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr"* @_ZNK6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.60"* %this1) %call2 = call i8* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIaEEEENT_9referenceERKS4_(%"class.thrust::device_ptr"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference", %"class.thrust::device_reference"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference", %"class.thrust::reference"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 store i8* %call2, i8** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_reference", %"class.thrust::device_reference"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::reference", %"class.thrust::reference"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive10, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive11, align 8 ret i8* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr i8* @_ZNK6thrust9referenceIaNS_10device_ptrIaEENS_16device_referenceIaEEEadEv(%"class.thrust::reference"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr", align 8 %this.addr = alloca %"class.thrust::reference"*, align 8 store %"class.thrust::reference"* %this, %"class.thrust::reference"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference"*, %"class.thrust::reference"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference", %"class.thrust::reference"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr"* %retval to i8* %1 = bitcast %"class.thrust::device_ptr"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive2, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive3, align 8 ret i8* %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust16raw_pointer_castIPKaEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(i8** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca i8**, align 8 store i8** %ptr, i8*** %ptr.addr, align 8, !tbaa !7 %0 = load i8**, i8*** %ptr.addr, align 8 %1 = load i8*, i8** %0, align 8, !tbaa !1 %call = call i8* @_ZN6thrust6detail14pointer_traitsIPKaE3getES3_(i8* %1) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv(%"class.thrust::iterator_facade.114"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.114"*, align 8 store %"class.thrust::iterator_facade.114"* %this, %"class.thrust::iterator_facade.114"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.114"*, %"class.thrust::iterator_facade.114"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.112"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.114"* %this1) %call2 = call dereferenceable(1) i8* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKaEEEENT_9referenceERKS7_(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %call) ret i8* %call2 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS0_3cpp6detail3tagENS2_3tagEEE14cudaMemcpyKindRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1), %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1)) #1 comdat { entry: %.addr = alloca %"struct.thrust::system::cpp::detail::execution_policy.86"*, align 8 %.addr1 = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 store %"struct.thrust::system::cpp::detail::execution_policy.86"* %0, %"struct.thrust::system::cpp::detail::execution_policy.86"** %.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %1, %"struct.thrust::system::cuda::detail::execution_policy.119"** %.addr1, align 8, !tbaa !7 ret i32 1 } ; Function Attrs: uwtable define linkonce_odr %struct.CUstream_st* @_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS0_3cpp6detail3tagENS2_3tagEEEP11CUstream_stRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1), %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec) #0 comdat { entry: %retval = alloca %struct.CUstream_st*, align 8 %.addr = alloca %"struct.thrust::system::cpp::detail::execution_policy.86"*, align 8 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 store %"struct.thrust::system::cpp::detail::execution_policy.86"* %0, %"struct.thrust::system::cpp::detail::execution_policy.86"** %.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %call = call zeroext i1 @_ZN6thrust6system4cuda6detail19trivial_copy_detail12_GLOBAL__N_115is_valid_policyINS2_16execution_policyINS2_3tagEEEEEbRKT_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1) br i1 %call, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 to %"struct.thrust::detail::execution_policy_base.121"* %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERKT_RKNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %3) %4 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call2 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %4) store %struct.CUstream_st* %call2, %struct.CUstream_st** %retval, align 8 br label %return if.end: ; preds = %entry %call3 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail13legacy_streamEv() store %struct.CUstream_st* %call3, %struct.CUstream_st** %retval, align 8 br label %return return: ; preds = %if.end, %if.then %5 = load %struct.CUstream_st*, %struct.CUstream_st** %retval, align 8 ret %struct.CUstream_st* %5 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail19trivial_copy_detail23checked_cudaMemcpyAsyncEPvPKvm14cudaMemcpyKindP11CUstream_st(i8* %dst, i8* %src, i64 %count, i32 %kind, %struct.CUstream_st* %stream) #8 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %dst.addr = alloca i8*, align 8 %src.addr = alloca i8*, align 8 %count.addr = alloca i64, align 8 %kind.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %error = alloca i32, align 4 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store i8* %dst, i8** %dst.addr, align 8, !tbaa !1 store i8* %src, i8** %src.addr, align 8, !tbaa !1 store i64 %count, i64* %count.addr, align 8, !tbaa !13 store i32 %kind, i32* %kind.addr, align 4, !tbaa !97 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = bitcast i32* %error to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i8*, i8** %dst.addr, align 8, !tbaa !1 %2 = load i8*, i8** %src.addr, align 8, !tbaa !1 %3 = load i64, i64* %count.addr, align 8, !tbaa !13 %4 = load i32, i32* %kind.addr, align 4, !tbaa !97 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %call = call i32 @cudaMemcpyAsync(i8* %1, i8* %2, i64 %3, i32 %4, %struct.CUstream_st* %5) store i32 %call, i32* %error, align 4, !tbaa !73 %6 = load i32, i32* %error, align 4, !tbaa !73 %tobool = icmp ne i32 %6, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %exception = call i8* @__cxa_allocate_exception(i64 40) #5 %7 = bitcast i8* %exception to %"class.thrust::system::system_error"* %8 = load i32, i32* %error, align 4, !tbaa !73 %call1 = invoke dereferenceable(8) %"class.thrust::system::error_category"* @_ZN6thrust6system13cuda_categoryEv() to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then invoke void @_ZN6thrust6system12system_errorC2EiRKNS0_14error_categoryE(%"class.thrust::system::system_error"* %7, i32 %8, %"class.thrust::system::error_category"* dereferenceable(8) %call1) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont call void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system12system_errorE to i8*), i8* bitcast (void (%"class.thrust::system::system_error"*)* @_ZN6thrust6system12system_errorD2Ev to i8*)) #15 unreachable lpad: ; preds = %invoke.cont, %if.then %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 call void @__cxa_free_exception(i8* %exception) #5 %12 = bitcast i32* %error to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 br label %eh.resume if.end: ; preds = %entry %13 = bitcast i32* %error to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 ret void eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val3 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail11synchronizeEP11CUstream_stPKc(%struct.CUstream_st* %stream, i8* %message) #8 comdat { entry: %stream.addr = alloca %struct.CUstream_st*, align 8 %message.addr = alloca i8*, align 8 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 store i8* %message, i8** %message.addr, align 8, !tbaa !1 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamSynchronize(%struct.CUstream_st* %0) %1 = load i8*, i8** %message.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* %1) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIaEEEENT_9referenceERKS4_(%"class.thrust::device_ptr"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference", align 8 %f.addr = alloca %"class.thrust::device_ptr"*, align 8 store %"class.thrust::device_ptr"* %f, %"class.thrust::device_ptr"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr"* %0 to %"class.thrust::pointer"* %call = call i8* @_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_16device_referenceIaEENS_10device_ptrIaEEE11dereferenceEv(%"class.thrust::pointer"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference", %"class.thrust::device_reference"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::reference", %"class.thrust::reference"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive3, i32 0, i32 0 store i8* %call, i8** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference", %"class.thrust::device_reference"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference", %"class.thrust::reference"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive8, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive9, align 8 ret i8* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr"* @_ZNK6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.60"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.60"*, align 8 store %"class.thrust::iterator_facade.60"* %this, %"class.thrust::iterator_facade.60"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.60"*, %"class.thrust::iterator_facade.60"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.60"* %this1 to %"class.thrust::device_ptr"* ret %"class.thrust::device_ptr"* %0 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust7pointerIaNS_6system4cuda6detail3tagENS_16device_referenceIaEENS_10device_ptrIaEEE11dereferenceEv(%"class.thrust::pointer"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference", align 8 %this.addr = alloca %"class.thrust::pointer"*, align 8 store %"class.thrust::pointer"* %this, %"class.thrust::pointer"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer"*, %"class.thrust::pointer"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer"* %this1 to %"class.thrust::device_ptr"* call void @_ZN6thrust16device_referenceIaEC2ERKNS_10device_ptrIaEE(%"class.thrust::device_reference"* %retval, %"class.thrust::device_ptr"* dereferenceable(8) %0) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference", %"class.thrust::device_reference"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::reference", %"class.thrust::reference"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 %1 = load i8*, i8** %coerce.dive5, align 8 ret i8* %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16device_referenceIaEC2ERKNS_10device_ptrIaEE(%"class.thrust::device_reference"* %this, %"class.thrust::device_ptr"* dereferenceable(8) %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_reference"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr"*, align 8 store %"class.thrust::device_reference"* %this, %"class.thrust::device_reference"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr"* %ptr, %"class.thrust::device_ptr"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_reference"*, %"class.thrust::device_reference"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_reference"* %this1 to %"class.thrust::reference"* %1 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %ptr.addr, align 8 call void @_ZN6thrust9referenceIaNS_10device_ptrIaEENS_16device_referenceIaEEEC2ERKS2_(%"class.thrust::reference"* %0, %"class.thrust::device_ptr"* dereferenceable(8) %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust9referenceIaNS_10device_ptrIaEENS_16device_referenceIaEEEC2ERKS2_(%"class.thrust::reference"* %this, %"class.thrust::device_ptr"* dereferenceable(8) %ptr) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr"*, align 8 store %"class.thrust::reference"* %this, %"class.thrust::reference"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr"* %ptr, %"class.thrust::device_ptr"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference"*, %"class.thrust::reference"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference", %"class.thrust::reference"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr"* %m_ptr to i8* %2 = bitcast %"class.thrust::device_ptr"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZN6thrust6detail14pointer_traitsIPKaE3getES3_(i8* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca i8*, align 8 store i8* %ptr, i8** %ptr.addr, align 8, !tbaa !1 %0 = load i8*, i8** %ptr.addr, align 8, !tbaa !1 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKaEEEENT_9referenceERKS7_(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 store %"class.thrust::detail::normal_iterator.112"* %f, %"class.thrust::detail::normal_iterator.112"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.112"* %0 to %"class.thrust::iterator_adaptor.113"* %call = call dereferenceable(1) i8* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv(%"class.thrust::iterator_adaptor.113"* %1) ret i8* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.112"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.114"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.114"*, align 8 store %"class.thrust::iterator_facade.114"* %this, %"class.thrust::iterator_facade.114"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.114"*, %"class.thrust::iterator_facade.114"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.114"* %this1 to %"class.thrust::detail::normal_iterator.112"* ret %"class.thrust::detail::normal_iterator.112"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) i8* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv(%"class.thrust::iterator_adaptor.113"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.113"*, align 8 store %"class.thrust::iterator_adaptor.113"* %this, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.113"*, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %this1, i32 0, i32 0 %0 = load i8*, i8** %m_iterator, align 8, !tbaa !71 ret i8* %0 } ; Function Attrs: uwtable define internal zeroext i1 @_ZN6thrust6system4cuda6detail19trivial_copy_detail12_GLOBAL__N_115is_valid_policyINS2_16execution_policyINS2_3tagEEEEEbRKT_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %t) #0 { entry: %retval = alloca i1, align 1 %t.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %value = alloca i64, align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %t, %"struct.thrust::system::cuda::detail::execution_policy.119"** %t.addr, align 8, !tbaa !7 %0 = bitcast i64* %value to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %t.addr, align 8 %2 = ptrtoint %"struct.thrust::system::cuda::detail::execution_policy.119"* %1 to i64 store volatile i64 %2, i64* %value, align 8, !tbaa !13 %3 = load volatile i64, i64* %value, align 8, !tbaa !13 %tobool = icmp ne i64 %3, 0 br i1 %tobool, label %if.then, label %if.end2 if.then: ; preds = %entry %4 = load volatile i64, i64* %value, align 8, !tbaa !13 %cmp = icmp eq i64 %4, 0 br i1 %cmp, label %if.then1, label %if.end if.then1: ; preds = %if.then %5 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !tbaa !1 %call = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %5, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.31, i32 0, i32 0)) call void @_ZSt9terminatev() #13 unreachable if.end: ; preds = %if.then store i1 true, i1* %retval, align 1 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end2: ; preds = %entry store i1 false, i1* %retval, align 1 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end2, %if.end %6 = bitcast i64* %value to i8* call void @llvm.lifetime.end(i64 8, i8* %6) #5 %7 = load i1, i1* %retval, align 1 ret i1 %7 } ; Function Attrs: inlinehint uwtable define linkonce_odr %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec) #8 comdat { entry: %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 %call = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail14default_streamEv() ret %struct.CUstream_st* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERKT_RKNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %x) #9 comdat { entry: %x.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %x, %"struct.thrust::detail::execution_policy_base.121"** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %x.addr, align 8 %1 = bitcast %"struct.thrust::detail::execution_policy_base.121"* %0 to %"struct.thrust::system::cuda::detail::tag"* ret %"struct.thrust::system::cuda::detail::tag"* %1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %struct.CUstream_st* @_ZN6thrust6system4cuda6detail13legacy_streamEv() #9 comdat { entry: ret %struct.CUstream_st* inttoptr (i64 1 to %struct.CUstream_st*) } declare i32 @fprintf(%struct._IO_FILE*, i8*, ...) #3 ; Function Attrs: inlinehint uwtable define linkonce_odr %struct.CUstream_st* @_ZN6thrust6system4cuda6detail14default_streamEv() #8 comdat { entry: %call = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail13legacy_streamEv() ret %struct.CUstream_st* %call } declare i32 @cudaMemcpyAsync(i8*, i8*, i64, i32, %struct.CUstream_st*) #3 ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system12system_errorC2EiRKNS0_14error_categoryE(%"class.thrust::system::system_error"* %this, i32 %ev, %"class.thrust::system::error_category"* dereferenceable(8) %ecat) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::system::system_error"*, align 8 %ev.addr = alloca i32, align 4 %ecat.addr = alloca %"class.thrust::system::error_category"*, align 8 %ref.tmp = alloca %"class.std::basic_string", align 8 %ref.tmp2 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::system::system_error"* %this, %"class.thrust::system::system_error"** %this.addr, align 8, !tbaa !1 store i32 %ev, i32* %ev.addr, align 4, !tbaa !11 store %"class.thrust::system::error_category"* %ecat, %"class.thrust::system::error_category"** %ecat.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::system_error"*, %"class.thrust::system::system_error"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::system_error"* %this1 to %"class.std::runtime_error"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp2) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.21, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZNSt13runtime_errorC2ERKSs(%"class.std::runtime_error"* %0, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp2) #5 %1 = bitcast %"class.thrust::system::system_error"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*], [5 x i8*]* @_ZTVN6thrust6system12system_errorE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !5 %m_error_code = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 1 %2 = load i32, i32* %ev.addr, align 4, !tbaa !11 %3 = load %"class.thrust::system::error_category"*, %"class.thrust::system::error_category"** %ecat.addr, align 8 invoke void @_ZN6thrust6system10error_codeC2EiRKNS0_14error_categoryE(%"class.thrust::system::error_code"* %m_error_code, i32 %2, %"class.thrust::system::error_category"* dereferenceable(8) %3) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %invoke.cont4 %m_what = getelementptr inbounds %"class.thrust::system::system_error", %"class.thrust::system::system_error"* %this1, i32 0, i32 2 invoke void @_ZNSsC2Ev(%"class.std::basic_string"* %m_what) to label %invoke.cont7 unwind label %lpad5 invoke.cont7: ; preds = %invoke.cont6 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp2) #5 br label %eh.resume lpad5: ; preds = %invoke.cont6, %invoke.cont4 %10 = landingpad { i8*, i32 } cleanup %11 = extractvalue { i8*, i32 } %10, 0 store i8* %11, i8** %exn.slot, align 8 %12 = extractvalue { i8*, i32 } %10, 1 store i32 %12, i32* %ehselector.slot, align 4 %13 = bitcast %"class.thrust::system::system_error"* %this1 to %"class.std::runtime_error"* call void @_ZNSt13runtime_errorD2Ev(%"class.std::runtime_error"* %13) #5 br label %eh.resume eh.resume: ; preds = %lpad5, %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val9 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val9 } declare i32 @cudaStreamSynchronize(%struct.CUstream_st*) #3 ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr"* @_ZN6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEpLEl(%"class.thrust::iterator_facade.60"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.60"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.60"* %this, %"class.thrust::iterator_facade.60"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.60"*, %"class.thrust::iterator_facade.60"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr"* @_ZN6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.60"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIaEEEEvRT_NS4_15difference_typeE(%"class.thrust::device_ptr"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::device_ptr"* @_ZN6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.60"* %this1) ret %"class.thrust::device_ptr"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIaEEEEvRT_NS4_15difference_typeE(%"class.thrust::device_ptr"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::device_ptr"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::device_ptr"* %f, %"class.thrust::device_ptr"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr"* %0 to %"class.thrust::iterator_adaptor.59"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7advanceEl(%"class.thrust::iterator_adaptor.59"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr"* @_ZN6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.60"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.60"*, align 8 store %"class.thrust::iterator_facade.60"* %this, %"class.thrust::iterator_facade.60"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.60"*, %"class.thrust::iterator_facade.60"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.60"* %this1 to %"class.thrust::device_ptr"* ret %"class.thrust::device_ptr"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7advanceEl(%"class.thrust::iterator_adaptor.59"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.59"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.59"* %this, %"class.thrust::iterator_adaptor.59"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.59"*, %"class.thrust::iterator_adaptor.59"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %this1, i32 0, i32 0 %1 = load i8*, i8** %m_iterator, align 8, !tbaa !69 %add.ptr = getelementptr inbounds i8, i8* %1, i64 %0 store i8* %add.ptr, i8** %m_iterator, align 8, !tbaa !69 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail12cross_systemINS0_3cpp6detail3tagENS2_3tagEEC2ERNS_16execution_policyIS6_EERNS9_IS7_EE(%"struct.thrust::system::cuda::detail::cross_system"* %this, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system2) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::cross_system"*, align 8 %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 store %"struct.thrust::system::cuda::detail::cross_system"* %this, %"struct.thrust::system::cuda::detail::cross_system"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %system2, %"struct.thrust::execution_policy.120"** %system2.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %this1 to %"struct.thrust::execution_policy.133"* %system12 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 store %"struct.thrust::execution_policy.88"* %1, %"struct.thrust::execution_policy.88"** %system12, align 8, !tbaa !7 %system23 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %this1, i32 0, i32 1 %2 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2.addr, align 8 store %"struct.thrust::execution_policy.120"* %2, %"struct.thrust::execution_policy.120"** %system23, align 8, !tbaa !7 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorIaEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS6_E4typeEE4typeERS6_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %a) #1 comdat { entry: %retval = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.56"* %i, %"class.thrust::detail::normal_iterator.56"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.56"* %i, %"class.thrust::detail::normal_iterator.56"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.56"* %1 to %"class.thrust::iterator_facade.58"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEpLEl(%"class.thrust::iterator_facade.58"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEpLEl(%"class.thrust::iterator_facade.58"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.58"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.58"* %this, %"class.thrust::iterator_facade.58"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.58"*, %"class.thrust::iterator_facade.58"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.58"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.58"* %this1) ret %"class.thrust::detail::normal_iterator.56"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.56"* %f, %"class.thrust::detail::normal_iterator.56"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.56"* %0 to %"class.thrust::iterator_adaptor.57"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.57"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.58"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.58"*, align 8 store %"class.thrust::iterator_facade.58"* %this, %"class.thrust::iterator_facade.58"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.58"*, %"class.thrust::iterator_facade.58"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.58"* %this1 to %"class.thrust::detail::normal_iterator.56"* ret %"class.thrust::detail::normal_iterator.56"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.57"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.57"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.57"* %this, %"class.thrust::iterator_adaptor.57"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.57"*, %"class.thrust::iterator_adaptor.57"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr"* %m_iterator to %"class.thrust::iterator_facade.60"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::device_ptr"* @_ZN6thrust15iterator_facadeINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEpLEl(%"class.thrust::iterator_facade.60"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorIaEENS_10device_ptrIaEElEEvRT_T0_T1_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %a, i8* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::device_ptr", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 store i8* %p.coerce, i8** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator"* %a, %"class.thrust::device_malloc_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator"*, %"class.thrust::device_malloc_allocator"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive4, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive5, align 8 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorIaEENS_10device_ptrIaEElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS8_S9_T1_(%"class.thrust::device_malloc_allocator"* dereferenceable(1) %0, i8* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElS5_aS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.58"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.58"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.58"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.58"*, align 8 store %"class.thrust::iterator_facade.58"* %lhs, %"class.thrust::iterator_facade.58"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.58"* %rhs, %"class.thrust::iterator_facade.58"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.58"*, %"class.thrust::iterator_facade.58"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.58"* %0 to %"class.thrust::detail::normal_iterator.56"* %2 = load %"class.thrust::iterator_facade.58"*, %"class.thrust::iterator_facade.58"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.58"* %2 to %"class.thrust::detail::normal_iterator.56"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorIaEENS_10device_ptrIaEElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS8_S9_T1_(%"class.thrust::device_malloc_allocator"* dereferenceable(1), i8* %.coerce, i64) #1 comdat { entry: %2 = alloca %"class.thrust::device_ptr", align 8 %.addr = alloca %"class.thrust::device_malloc_allocator"*, align 8 %.addr3 = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %2, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive1, i32 0, i32 0 store i8* %.coerce, i8** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator"* %0, %"class.thrust::device_malloc_allocator"** %.addr, align 8, !tbaa !7 store i64 %1, i64* %.addr3, align 8, !tbaa !13 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.56"* %f1, %"class.thrust::detail::normal_iterator.56"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.56"* %f2, %"class.thrust::detail::normal_iterator.56"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 store %"class.thrust::detail::normal_iterator.56"* %f1, %"class.thrust::detail::normal_iterator.56"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.56"* %f2, %"class.thrust::detail::normal_iterator.56"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.56"* %1 to %"class.thrust::iterator_adaptor.57"* %3 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.56"* %3 to %"class.thrust::iterator_adaptor.57"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.57"* %2, %"class.thrust::iterator_adaptor.57"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.57"* %this, %"class.thrust::iterator_adaptor.57"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.57"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.57"*, align 8 store %"class.thrust::iterator_adaptor.57"* %this, %"class.thrust::iterator_adaptor.57"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.57"* %y, %"class.thrust::iterator_adaptor.57"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.57"*, %"class.thrust::iterator_adaptor.57"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.57"*, %"class.thrust::iterator_adaptor.57"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIaEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.57"* %0) %1 = bitcast %"class.thrust::device_ptr"* %call to %"class.thrust::iterator_facade.60"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %this1, i32 0, i32 0 %2 = bitcast %"class.thrust::device_ptr"* %m_iterator to %"class.thrust::iterator_facade.60"* %call2 = call i64 @_ZN6thrustmiINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElS2_aS6_S7_S9_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade.60"* dereferenceable(1) %1, %"class.thrust::iterator_facade.60"* dereferenceable(1) %2) ret i64 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_10device_ptrIaEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElS2_aS6_S7_S9_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade.60"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.60"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.60"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.60"*, align 8 store %"class.thrust::iterator_facade.60"* %lhs, %"class.thrust::iterator_facade.60"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.60"* %rhs, %"class.thrust::iterator_facade.60"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.60"*, %"class.thrust::iterator_facade.60"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.60"* %0 to %"class.thrust::device_ptr"* %2 = load %"class.thrust::iterator_facade.60"*, %"class.thrust::iterator_facade.60"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.60"* %2 to %"class.thrust::device_ptr"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIaEES3_EENS_6detail20distance_from_resultIT_T0_E4typeERKS6_RKS7_(%"class.thrust::device_ptr"* dereferenceable(8) %1, %"class.thrust::device_ptr"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIaEES3_EENS_6detail20distance_from_resultIT_T0_E4typeERKS6_RKS7_(%"class.thrust::device_ptr"* dereferenceable(8) %f1, %"class.thrust::device_ptr"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::device_ptr"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::device_ptr"* %f1, %"class.thrust::device_ptr"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr"* %f2, %"class.thrust::device_ptr"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %f1.addr, align 8 %1 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIaEES3_EENT_15difference_typeERKS4_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr"* dereferenceable(8) %0, %"class.thrust::device_ptr"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIaEES3_EENT_15difference_typeERKS4_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr"* dereferenceable(8) %f1, %"class.thrust::device_ptr"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::device_ptr"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr"*, align 8 store %"class.thrust::device_ptr"* %f1, %"class.thrust::device_ptr"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr"* %f2, %"class.thrust::device_ptr"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %f1.addr, align 8 %2 = bitcast %"class.thrust::device_ptr"* %1 to %"class.thrust::iterator_adaptor.59"* %3 = load %"class.thrust::device_ptr"*, %"class.thrust::device_ptr"** %f2.addr, align 8 %4 = bitcast %"class.thrust::device_ptr"* %3 to %"class.thrust::iterator_adaptor.59"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE11distance_toIS2_S3_aS7_S8_SA_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.59"* %2, %"class.thrust::iterator_adaptor.59"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE11distance_toIS2_S3_aS7_S8_SA_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.59"* %this, %"class.thrust::iterator_adaptor.59"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.59"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.59"*, align 8 store %"class.thrust::iterator_adaptor.59"* %this, %"class.thrust::iterator_adaptor.59"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.59"* %y, %"class.thrust::iterator_adaptor.59"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.59"*, %"class.thrust::iterator_adaptor.59"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.59"*, %"class.thrust::iterator_adaptor.59"** %y.addr, align 8 %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIaEEPaaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE4baseEv(%"class.thrust::iterator_adaptor.59"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %this1, i32 0, i32 0 %2 = load i8*, i8** %m_iterator, align 8, !tbaa !69 %sub.ptr.lhs.cast = ptrtoint i8* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i8* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast ret i64 %sub.ptr.sub } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust6detail18contiguous_storageIaSaIaEE5beginEv(%"class.thrust::detail::contiguous_storage"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.112", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPKaEC2IPaEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE(%"class.thrust::detail::normal_iterator.112"* %retval, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %m_begin, i8* null) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.112", %"class.thrust::detail::normal_iterator.112"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %coerce.dive, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive2, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPKaEC2IPaEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE(%"class.thrust::detail::normal_iterator.112"* %this, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 %other.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 store %"class.thrust::detail::normal_iterator.112"* %this, %"class.thrust::detail::normal_iterator.112"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator"* %other, %"class.thrust::detail::normal_iterator"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %this.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.112"* %this1 to %"class.thrust::iterator_adaptor.113"* %2 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %other.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator"* %2 to %"class.thrust::iterator_adaptor"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor"* %3) %4 = load i8*, i8** %call, align 8, !tbaa !1 store i8* %4, i8** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.113"* %1, i8** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.113"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.113"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor.113"* %this, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.113"*, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.113"* %this1 to %"class.thrust::iterator_facade.114"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !71 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKaEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.112"* %i, %"class.thrust::detail::normal_iterator.112"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKaEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKaEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.112"* %i, %"class.thrust::detail::normal_iterator.112"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKaEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKaEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.112"* %i, %"class.thrust::detail::normal_iterator.112"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.112"* %1 to %"class.thrust::iterator_facade.114"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.112"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl(%"class.thrust::iterator_facade.114"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.112"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl(%"class.thrust::iterator_facade.114"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.114"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.114"* %this, %"class.thrust::iterator_facade.114"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.114"*, %"class.thrust::iterator_facade.114"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.112"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.114"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKaEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.112"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.114"* %this1) ret %"class.thrust::detail::normal_iterator.112"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKaEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.112"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.112"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.112"* %f, %"class.thrust::detail::normal_iterator.112"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.112"*, %"class.thrust::detail::normal_iterator.112"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.112"* %0 to %"class.thrust::iterator_adaptor.113"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.113"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.112"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.114"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.114"*, align 8 store %"class.thrust::iterator_facade.114"* %this, %"class.thrust::iterator_facade.114"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.114"*, %"class.thrust::iterator_facade.114"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.114"* %this1 to %"class.thrust::detail::normal_iterator.112"* ret %"class.thrust::detail::normal_iterator.112"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKaEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.113"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.113"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.113"* %this, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.113"*, %"class.thrust::iterator_adaptor.113"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.113", %"class.thrust::iterator_adaptor.113"* %this1, i32 0, i32 0 %1 = load i8*, i8** %m_iterator, align 8, !tbaa !71 %add.ptr = getelementptr inbounds i8, i8* %1, i64 %0 store i8* %add.ptr, i8** %m_iterator, align 8, !tbaa !71 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEEC2IS3_SaIS3_EEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.46"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 %v.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 %ref.tmp = alloca %"class.thrust::device_malloc_allocator.64", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.134", align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::vector_base.46"* %v, %"class.thrust::detail::vector_base.46"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEEC2Ev(%"class.thrust::device_malloc_allocator.64"* %ref.tmp) invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEEC2ERKS5_(%"class.thrust::detail::contiguous_storage.63"* %m_storage, %"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEED2Ev(%"class.thrust::device_malloc_allocator.64"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !99 %0 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %v.addr, align 8 %call = invoke %"struct.thrust::pair"* @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive4, align 8 %1 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %v.addr, align 8 %call7 = invoke %"struct.thrust::pair"* @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE3endEv(%"class.thrust::detail::vector_base.46"* %1) to label %invoke.cont6 unwind label %lpad2 invoke.cont6: ; preds = %invoke.cont3 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %call7, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive10, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp5, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive12, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive13, align 8 invoke void @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_(%"class.thrust::detail::vector_base.62"* %this1, %"struct.thrust::pair"* %2, %"struct.thrust::pair"* %3) to label %invoke.cont14 unwind label %lpad2 invoke.cont14: ; preds = %invoke.cont6 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEED2Ev(%"class.thrust::device_malloc_allocator.64"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont6, %invoke.cont3, %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::contiguous_storage.63"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val15 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val15 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEEC2Ev(%"class.thrust::device_malloc_allocator.64"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 store %"class.thrust::device_malloc_allocator.64"* %this, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEEC2ERKS5_(%"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 %alloc.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_malloc_allocator.64"* %alloc, %"class.thrust::device_malloc_allocator.64"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %alloc.addr, align 8 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEEC2ERKS3_(%"class.thrust::device_malloc_allocator.64"* %m_allocator, %"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %0) %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 1 invoke void @_ZN6thrust10device_ptrINS_4pairIaaEEEC2IS2_EEPT_(%"class.thrust::device_ptr.69"* %agg.tmp, %"struct.thrust::pair"* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive2, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 invoke void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.66"* %m_begin, %"struct.thrust::pair"* %1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !104 ret void lpad: ; preds = %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEED2Ev(%"class.thrust::device_malloc_allocator.64"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEED2Ev(%"class.thrust::device_malloc_allocator.64"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 store %"class.thrust::device_malloc_allocator.64"* %this, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_(%"class.thrust::detail::vector_base.62"* %this, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp6 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive7, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp5, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive9, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 call void @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.62"* %this4, %"struct.thrust::pair"* %4, %"struct.thrust::pair"* %5) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.134", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 store %"class.thrust::detail::vector_base.46"* %this, %"class.thrust::detail::vector_base.46"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.46", %"class.thrust::detail::vector_base.46"* %this1, i32 0, i32 0 %call = call %"struct.thrust::pair"* @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::contiguous_storage.47"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive3, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE3endEv(%"class.thrust::detail::vector_base.46"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.134", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 store %"class.thrust::detail::vector_base.46"* %this, %"class.thrust::detail::vector_base.46"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %this.addr, align 8 %call = call %"struct.thrust::pair"* @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %call3 = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE4sizeEv(%"class.thrust::detail::vector_base.46"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %retval, i64 %call3) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive4, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::contiguous_storage.63"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10deallocateEv(%"class.thrust::detail::contiguous_storage.63"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEED2Ev(%"class.thrust::device_malloc_allocator.64"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEED2Ev(%"class.thrust::device_malloc_allocator.64"* %m_allocator2) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEEC2ERKS3_(%"class.thrust::device_malloc_allocator.64"* %this, %"class.thrust::device_malloc_allocator.64"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 store %"class.thrust::device_malloc_allocator.64"* %this, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_malloc_allocator.64"* %0, %"class.thrust::device_malloc_allocator.64"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrINS_4pairIaaEEEC2IS2_EEPT_(%"class.thrust::device_ptr.69"* %this, %"struct.thrust::pair"* %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %ptr.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.thrust::device_ptr.69"* %this, %"class.thrust::device_ptr.69"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %ptr, %"struct.thrust::pair"** %ptr.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.69"* %this1 to %"class.thrust::pointer.70"* %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %ptr.addr, align 8, !tbaa !1 call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEEC2IS2_EEPT_(%"class.thrust::pointer.70"* %0, %"struct.thrust::pair"* %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.66"* %this, %"struct.thrust::pair"* %p.coerce) unnamed_addr #0 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.69", align 8 %this.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"class.thrust::detail::normal_iterator.66"* %this, %"class.thrust::detail::normal_iterator.66"** %this.addr, align 8, !tbaa !1 %this3 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.66"* %this3 to %"class.thrust::iterator_adaptor.67"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_(%"class.thrust::iterator_adaptor.67"* %0, %"class.thrust::device_ptr.69"* dereferenceable(8) %p) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEEC2IS2_EEPT_(%"class.thrust::pointer.70"* %this, %"struct.thrust::pair"* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.70"*, align 8 %other.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.thrust::pointer.70"* %this, %"class.thrust::pointer.70"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %other, %"struct.thrust::pair"** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.70"*, %"class.thrust::pointer.70"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.70"* %this1 to %"class.thrust::iterator_adaptor.71"* call void @_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEC2ERKS5_(%"class.thrust::iterator_adaptor.71"* %0, %"struct.thrust::pair"** dereferenceable(8) %other.addr) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEC2ERKS5_(%"class.thrust::iterator_adaptor.71"* %this, %"struct.thrust::pair"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.71"*, align 8 %iter.addr = alloca %"struct.thrust::pair"**, align 8 store %"class.thrust::iterator_adaptor.71"* %this, %"class.thrust::iterator_adaptor.71"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"** %iter, %"struct.thrust::pair"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.71"*, %"class.thrust::iterator_adaptor.71"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.71"* %this1 to %"class.thrust::iterator_facade.72"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"**, %"struct.thrust::pair"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %1, align 8, !tbaa !1 store %"struct.thrust::pair"* %2, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !105 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_(%"class.thrust::iterator_adaptor.67"* %this, %"class.thrust::device_ptr.69"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.67"*, align 8 %iter.addr = alloca %"class.thrust::device_ptr.69"*, align 8 store %"class.thrust::iterator_adaptor.67"* %this, %"class.thrust::iterator_adaptor.67"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.69"* %iter, %"class.thrust::device_ptr.69"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.67"*, %"class.thrust::iterator_adaptor.67"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.67"* %this1 to %"class.thrust::iterator_facade.68"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %this1, i32 0, i32 0 %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %iter.addr, align 8 %2 = bitcast %"class.thrust::device_ptr.69"* %m_iterator to i8* %3 = bitcast %"class.thrust::device_ptr.69"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.62"* %this, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 %new_size = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %1 = bitcast i64* %new_size to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp5 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive8, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeES9_S9_(%"struct.thrust::pair"* %6, %"struct.thrust::pair"* %7) store i64 %call, i64* %new_size, align 8, !tbaa !13 %8 = load i64, i64* %new_size, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp11 to i8* %12 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this4, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp10, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive12, i32 0, i32 0 %13 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp11, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive14, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 call void @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE17allocate_and_copyINS0_15normal_iteratorIPKS3_EEEEvmT_SC_RNS0_18contiguous_storageIS3_S5_EE(%"class.thrust::detail::vector_base.62"* %this4, i64 %8, %"struct.thrust::pair"* %13, %"struct.thrust::pair"* %14, %"class.thrust::detail::contiguous_storage.63"* dereferenceable(24) %m_storage) %15 = load i64, i64* %new_size, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this4, i32 0, i32 1 store i64 %15, i64* %m_size, align 8, !tbaa !99 %16 = bitcast i64* %new_size to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeES9_S9_(%"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive5, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive7, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive8, align 8 %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeESC_SC_(%"struct.thrust::pair"* %4, %"struct.thrust::pair"* %5) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE17allocate_and_copyINS0_15normal_iteratorIPKS3_EEEEvmT_SC_RNS0_18contiguous_storageIS3_S5_EE(%"class.thrust::detail::vector_base.62"* %this, i64 %requested_size, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"class.thrust::detail::contiguous_storage.63"* dereferenceable(24) %new_storage) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 %requested_size.addr = alloca i64, align 8 %new_storage.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 %allocated_size = alloca i64, align 8 %ref.tmp = alloca i64, align 8 %ref.tmp6 = alloca i64, align 8 %ref.tmp11 = alloca %"class.std::basic_string", align 8 %ref.tmp12 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp17 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp18 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %coerce = alloca %"class.thrust::detail::normal_iterator.66", align 8 %new_storage_end = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp54 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp62 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 store i64 %requested_size, i64* %requested_size.addr, align 8, !tbaa !13 store %"class.thrust::detail::contiguous_storage.63"* %new_storage, %"class.thrust::detail::contiguous_storage.63"** %new_storage.addr, align 8, !tbaa !7 %this4 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %0 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %cmp = icmp eq i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %new_storage.addr, align 8 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10deallocateEv(%"class.thrust::detail::contiguous_storage.63"* %1) br label %return if.end: ; preds = %entry %2 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 %call = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8capacityEv(%"class.thrust::detail::vector_base.62"* %this4) %mul = mul i64 2, %call store i64 %mul, i64* %ref.tmp, align 8, !tbaa !13 %call5 = call i64 @_ZN6thrust3maxImEET_RKS1_S3_(i64* dereferenceable(8) %requested_size.addr, i64* dereferenceable(8) %ref.tmp) store i64 %call5, i64* %allocated_size, align 8, !tbaa !13 %call7 = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv(%"class.thrust::detail::vector_base.62"* %this4) store i64 %call7, i64* %ref.tmp6, align 8, !tbaa !13 %call8 = call i64 @_ZN6thrust3minImEET_RKS1_S3_(i64* dereferenceable(8) %allocated_size, i64* dereferenceable(8) %ref.tmp6) store i64 %call8, i64* %allocated_size, align 8, !tbaa !13 %3 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %4 = load i64, i64* %allocated_size, align 8, !tbaa !13 %cmp9 = icmp ugt i64 %3, %4 br i1 %cmp9, label %if.then10, label %if.end16 if.then10: ; preds = %if.end %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %5 = bitcast i8* %exception to %"class.std::length_error"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp12) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp11, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.23, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp12) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then10 invoke void @_ZNSt12length_errorC1ERKSs(%"class.std::length_error"* %5, %"class.std::basic_string"* dereferenceable(8) %ref.tmp11) to label %invoke.cont14 unwind label %lpad13 invoke.cont14: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt12length_error to i8*), i8* bitcast (void (%"class.std::length_error"*)* @_ZNSt12length_errorD1Ev to i8*)) #15 to label %unreachable unwind label %lpad13 lpad: ; preds = %if.then10 %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 br label %ehcleanup lpad13: ; preds = %invoke.cont14, %invoke.cont %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp11) #5 br label %ehcleanup ehcleanup: ; preds = %lpad13, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp12) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup br label %ehcleanup78 if.end16: ; preds = %if.end %12 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %new_storage.addr, align 8 %13 = load i64, i64* %allocated_size, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8allocateEm(%"class.thrust::detail::contiguous_storage.63"* %12, i64 %13) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this4, i32 0, i32 0 %14 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp17 to i8* %17 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %18 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %new_storage.addr, align 8 %call21 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.63"* %18) to label %invoke.cont20 unwind label %lpad19 invoke.cont20: ; preds = %if.end16 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp18, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive25, i32 0, i32 0 store %"struct.thrust::pair"* %call21, %"struct.thrust::pair"** %coerce.dive26, align 8 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive27, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp17, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive29, i32 0, i32 0 %20 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive30, align 8 %coerce.dive31 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp18, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive31, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive32, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive34, i32 0, i32 0 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive35, align 8 %call37 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE18uninitialized_copyINS0_15normal_iteratorIPKS3_EEEENS8_INS_10device_ptrIS3_EEEET_SF_SE_(%"class.thrust::detail::contiguous_storage.63"* %m_storage, %"struct.thrust::pair"* %19, %"struct.thrust::pair"* %20, %"struct.thrust::pair"* %21) to label %invoke.cont36 unwind label %lpad19 invoke.cont36: ; preds = %invoke.cont20 %coerce.dive38 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %coerce, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive41, i32 0, i32 0 store %"struct.thrust::pair"* %call37, %"struct.thrust::pair"** %coerce.dive42, align 8 br label %try.cont lpad19: ; preds = %invoke.cont20, %if.end16 %22 = landingpad { i8*, i32 } catch i8* null %23 = extractvalue { i8*, i32 } %22, 0 store i8* %23, i8** %exn.slot, align 8 %24 = extractvalue { i8*, i32 } %22, 1 store i32 %24, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad19 %exn = load i8*, i8** %exn.slot, align 8 %25 = call i8* @__cxa_begin_catch(i8* %exn) #5 %26 = bitcast %"class.thrust::detail::normal_iterator.66"* %new_storage_end to i8* call void @llvm.lifetime.start(i64 8, i8* %26) #5 %27 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %new_storage.addr, align 8 %call45 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.63"* %27) to label %invoke.cont44 unwind label %lpad43 invoke.cont44: ; preds = %catch %coerce.dive46 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %new_storage_end, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive49, i32 0, i32 0 store %"struct.thrust::pair"* %call45, %"struct.thrust::pair"** %coerce.dive50, align 8 %28 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 invoke void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %new_storage_end, i64 %28) to label %invoke.cont52 unwind label %lpad51 invoke.cont52: ; preds = %invoke.cont44 %m_storage53 = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this4, i32 0, i32 0 %29 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %new_storage.addr, align 8 %call56 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.63"* %29) to label %invoke.cont55 unwind label %lpad51 invoke.cont55: ; preds = %invoke.cont52 %coerce.dive57 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp54, i32 0, i32 0 %coerce.dive58 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive57, i32 0, i32 0 %coerce.dive59 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive58, i32 0, i32 0 %coerce.dive60 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive59, i32 0, i32 0 %coerce.dive61 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive60, i32 0, i32 0 store %"struct.thrust::pair"* %call56, %"struct.thrust::pair"** %coerce.dive61, align 8 %30 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp62 to i8* %31 = bitcast %"class.thrust::detail::normal_iterator.66"* %new_storage_end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %31, i64 8, i32 8, i1 false) %coerce.dive63 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp54, i32 0, i32 0 %coerce.dive64 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive63, i32 0, i32 0 %coerce.dive65 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive64, i32 0, i32 0 %coerce.dive66 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive65, i32 0, i32 0 %coerce.dive67 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive66, i32 0, i32 0 %32 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive67, align 8 %coerce.dive68 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp62, i32 0, i32 0 %coerce.dive69 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive68, i32 0, i32 0 %coerce.dive70 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive69, i32 0, i32 0 %coerce.dive71 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive70, i32 0, i32 0 %coerce.dive72 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive71, i32 0, i32 0 %33 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive72, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE7destroyENS0_15normal_iteratorINS_10device_ptrIS3_EEEESA_(%"class.thrust::detail::contiguous_storage.63"* %m_storage53, %"struct.thrust::pair"* %32, %"struct.thrust::pair"* %33) to label %invoke.cont73 unwind label %lpad51 invoke.cont73: ; preds = %invoke.cont55 %34 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %new_storage.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10deallocateEv(%"class.thrust::detail::contiguous_storage.63"* %34) to label %invoke.cont74 unwind label %lpad51 invoke.cont74: ; preds = %invoke.cont73 invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad51 lpad43: ; preds = %catch %35 = landingpad { i8*, i32 } cleanup %36 = extractvalue { i8*, i32 } %35, 0 store i8* %36, i8** %exn.slot, align 8 %37 = extractvalue { i8*, i32 } %35, 1 store i32 %37, i32* %ehselector.slot, align 4 br label %ehcleanup76 lpad51: ; preds = %invoke.cont74, %invoke.cont73, %invoke.cont55, %invoke.cont52, %invoke.cont44 %38 = landingpad { i8*, i32 } cleanup %39 = extractvalue { i8*, i32 } %38, 0 store i8* %39, i8** %exn.slot, align 8 %40 = extractvalue { i8*, i32 } %38, 1 store i32 %40, i32* %ehselector.slot, align 4 %41 = bitcast %"class.thrust::detail::normal_iterator.66"* %new_storage_end to i8* call void @llvm.lifetime.end(i64 8, i8* %41) #5 br label %ehcleanup76 ehcleanup76: ; preds = %lpad51, %lpad43 invoke void @__cxa_end_catch() to label %invoke.cont77 unwind label %terminate.lpad invoke.cont77: ; preds = %ehcleanup76 br label %ehcleanup78 try.cont: ; preds = %invoke.cont36 %42 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %42) #5 br label %return return: ; preds = %try.cont, %if.then ret void ehcleanup78: ; preds = %invoke.cont77, %cleanup.done %43 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %43) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup78 %exn79 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn79, 0 %lpad.val80 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val80 terminate.lpad: ; preds = %ehcleanup76 %44 = landingpad { i8*, i32 } catch i8* null %45 = extractvalue { i8*, i32 } %44, 0 call void @__clang_call_terminate(i8* %45) #13 unreachable unreachable: ; preds = %invoke.cont74, %invoke.cont14 unreachable } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeESC_SC_(%"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp5 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp4, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive8, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_NS_27random_access_traversal_tagE(%"struct.thrust::pair"* %4, %"struct.thrust::pair"* %5) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_NS_27random_access_traversal_tagE(%"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to %"class.thrust::iterator_facade.136"* %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to %"class.thrust::iterator_facade.136"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.136"* dereferenceable(1) %1, %"class.thrust::iterator_facade.136"* dereferenceable(1) %2) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.136"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.136"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.136"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.136"*, align 8 store %"class.thrust::iterator_facade.136"* %lhs, %"class.thrust::iterator_facade.136"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.136"* %rhs, %"class.thrust::iterator_facade.136"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.136"*, %"class.thrust::iterator_facade.136"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.136"* %0 to %"class.thrust::detail::normal_iterator.134"* %2 = load %"class.thrust::iterator_facade.136"*, %"class.thrust::iterator_facade.136"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.136"* %2 to %"class.thrust::detail::normal_iterator.134"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.134"* %f1, %"class.thrust::detail::normal_iterator.134"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.134"* %f2, %"class.thrust::detail::normal_iterator.134"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 store %"class.thrust::detail::normal_iterator.134"* %f1, %"class.thrust::detail::normal_iterator.134"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.134"* %f2, %"class.thrust::detail::normal_iterator.134"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %1 to %"class.thrust::iterator_adaptor.135"* %3 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.134"* %3 to %"class.thrust::iterator_adaptor.135"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.135"* %2, %"class.thrust::iterator_adaptor.135"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.135"* %this, %"class.thrust::iterator_adaptor.135"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.135"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.135"*, align 8 store %"class.thrust::iterator_adaptor.135"* %this, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.135"* %y, %"class.thrust::iterator_adaptor.135"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.135"*, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.135"*, %"class.thrust::iterator_adaptor.135"** %y.addr, align 8 %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.135"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %this1, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !107 %sub.ptr.lhs.cast = ptrtoint %"struct.thrust::pair"* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %"struct.thrust::pair"* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 ret i64 %sub.ptr.div } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.135"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.135"*, align 8 store %"class.thrust::iterator_adaptor.135"* %this, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.135"*, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %this1, i32 0, i32 0 ret %"struct.thrust::pair"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE10deallocateEv(%"class.thrust::detail::contiguous_storage.63"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp7 = alloca %"class.thrust::device_ptr.69", align 8 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::contiguous_storage.63"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.66"* %m_begin to %"class.thrust::iterator_adaptor.67"* %call2 = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.67"* %0) %1 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::contiguous_storage.63"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 call void @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE10deallocateERS5_NS_10device_ptrIS4_EEm(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %m_allocator, %"struct.thrust::pair"* %3, i64 %call3) %m_begin6 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 1 call void @_ZN6thrust10device_ptrINS_4pairIaaEEEC2IS2_EEPT_(%"class.thrust::device_ptr.69"* %agg.tmp7, %"struct.thrust::pair"* null) %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive9, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.66"* %ref.tmp, %"struct.thrust::pair"* %4) %5 = bitcast %"class.thrust::detail::normal_iterator.66"* %m_begin6 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.66"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !104 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8capacityEv(%"class.thrust::detail::vector_base.62"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::contiguous_storage.63"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv(%"class.thrust::detail::vector_base.62"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.63"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8allocateEm(%"class.thrust::detail::contiguous_storage.63"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %ref.tmp8 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.69", align 8 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE8allocateERS5_m(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %m_allocator, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.66"* %ref.tmp, %"struct.thrust::pair"* %2) %3 = bitcast %"class.thrust::detail::normal_iterator.66"* %m_begin to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.66"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 2 store i64 %5, i64* %m_size, align 8, !tbaa !104 br label %if.end if.else: ; preds = %entry %m_begin7 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 1 call void @_ZN6thrust10device_ptrINS_4pairIaaEEEC2IS2_EEPT_(%"class.thrust::device_ptr.69"* %agg.tmp9, %"struct.thrust::pair"* null) %coerce.dive10 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive11, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive12, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.66"* %ref.tmp8, %"struct.thrust::pair"* %6) %7 = bitcast %"class.thrust::detail::normal_iterator.66"* %m_begin7 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.66"* %ref.tmp8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %m_size13 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 2 store i64 0, i64* %m_size13, align 8, !tbaa !104 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE18uninitialized_copyINS0_15normal_iteratorIPKS3_EEEENS8_INS_10device_ptrIS3_EEEET_SF_SE_(%"class.thrust::detail::contiguous_storage.63"* %this, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.66", align 8 %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::detail::normal_iterator.66", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 %from_system = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp12 = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive7, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive8, align 8 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 %this9 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to %"struct.thrust::execution_policy.88"* %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this9, i32 0, i32 0 %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp10 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp11 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.66"* %result to %"class.thrust::iterator_adaptor.67"* %call = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.67"* %6) %7 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp12 to i8* %8 = bitcast %"class.thrust::device_ptr.69"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp10, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive13, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp11, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive15, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp12, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive18, i32 0, i32 0 %11 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 %call20 = call %"struct.thrust::pair"* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIaaEEEENS0_15normal_iteratorIPKS8_EENS_10device_ptrIS8_EEEET2_RNS_16execution_policyIT_EERT0_T1_SN_SG_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %m_allocator, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10, %"struct.thrust::pair"* %11) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive22, i32 0, i32 0 store %"struct.thrust::pair"* %call20, %"struct.thrust::pair"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive25, i32 0, i32 0 %12 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive26, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.66"* %retval, %"struct.thrust::pair"* %12) %13 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.end(i64 1, i8* %13) #5 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive27, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive30, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive31, align 8 ret %"struct.thrust::pair"* %14 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.63"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.66", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.66"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.66"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.66"* %i, %"class.thrust::detail::normal_iterator.66"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE7destroyENS0_15normal_iteratorINS_10device_ptrIS3_EEEESA_(%"class.thrust::detail::contiguous_storage.63"* %this, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.66", align 8 %last = alloca %"class.thrust::detail::normal_iterator.66", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 %this10 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this10, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.66"* %first to %"class.thrust::iterator_adaptor.67"* %call = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.67"* %0) %1 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.66"* %last to %"class.thrust::iterator_facade.68"* %4 = bitcast %"class.thrust::detail::normal_iterator.66"* %first to %"class.thrust::iterator_facade.68"* %call11 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElS7_S5_SB_SC_SE_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSG_IT5_T6_T7_T8_T9_T10_EEE4typeERKSN_RKSU_(%"class.thrust::iterator_facade.68"* dereferenceable(1) %3, %"class.thrust::iterator_facade.68"* dereferenceable(1) %4) %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive13, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive14, align 8 call void @_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIaaEEEENS_10device_ptrIS4_EElEEvRT_T0_T1_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %m_allocator, %"struct.thrust::pair"* %5, i64 %call11) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::contiguous_storage.63"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !104 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE10deallocateERS5_NS_10device_ptrIS4_EEm(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #8 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.69", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 call void @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE10deallocateERS5_NS_10device_ptrIS4_EEmEN19workaround_warnings10deallocateES7_S9_m(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %0, %"struct.thrust::pair"* %4, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.67"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.67"*, align 8 store %"class.thrust::iterator_adaptor.67"* %this, %"class.thrust::iterator_adaptor.67"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.67"*, %"class.thrust::iterator_adaptor.67"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %this1, i32 0, i32 0 ret %"class.thrust::device_ptr.69"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE10deallocateERS5_NS_10device_ptrIS4_EEmEN19workaround_warnings10deallocateES7_S9_m(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.69", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEE10deallocateENS_10device_ptrIS2_EEm(%"class.thrust::device_malloc_allocator.64"* %0, %"struct.thrust::pair"* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEE10deallocateENS_10device_ptrIS2_EEm(%"class.thrust::device_malloc_allocator.64"* %this, %"struct.thrust::pair"* %p.coerce, i64 %cnt) #8 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.69", align 8 %this.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %cnt.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.115", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.64"* %this, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this3 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8 call void @_ZN6thrust10device_ptrIvEC2INS_4pairIaaEEEERKNS0_IT_EE(%"class.thrust::device_ptr.115"* %agg.tmp, %"class.thrust::device_ptr.69"* dereferenceable(8) %p) %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive5, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive6, align 8 call void @_ZN6thrust11device_freeENS_10device_ptrIvEE(i8* %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIvEC2INS_4pairIaaEEEERKNS0_IT_EE(%"class.thrust::device_ptr.115"* %this, %"class.thrust::device_ptr.69"* dereferenceable(8) %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.115"*, align 8 %other.addr = alloca %"class.thrust::device_ptr.69"*, align 8 store %"class.thrust::device_ptr.115"* %this, %"class.thrust::device_ptr.115"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.69"* %other, %"class.thrust::device_ptr.69"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_ptr.115"*, %"class.thrust::device_ptr.115"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.115"* %this1 to %"class.thrust::pointer.116"* %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %other.addr, align 8 call void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_INS_4pairIaaEEEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISE_S9_vE4typeE(%"class.thrust::pointer.116"* %0, %"class.thrust::device_ptr.69"* dereferenceable(8) %1, i8* null) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_INS_4pairIaaEEEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISE_S9_vE4typeE(%"class.thrust::pointer.116"* %this, %"class.thrust::device_ptr.69"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.116"*, align 8 %other.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 store %"class.thrust::pointer.116"* %this, %"class.thrust::pointer.116"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.69"* %other, %"class.thrust::device_ptr.69"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.116"*, %"class.thrust::pointer.116"** %this.addr, align 8 %1 = bitcast %"class.thrust::pointer.116"* %this1 to %"class.thrust::iterator_adaptor.117"* %2 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %other.addr, align 8 %3 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %4 = bitcast %"class.thrust::device_ptr.69"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive2, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIaaEEEEE3getES5_(%"struct.thrust::pair"* %5) %6 = bitcast %"struct.thrust::pair"* %call to i8* store i8* %6, i8** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIvEEPvvNS_6system4cuda6detail3tagENS_27random_access_traversal_tagEvlEC2ERKS3_(%"class.thrust::iterator_adaptor.117"* %1, i8** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIaaEEEEE3getES5_(%"struct.thrust::pair"* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %ptr.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 %0 = bitcast %"class.thrust::device_ptr.69"* %ptr to %"class.thrust::pointer.70"* %call = call %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE3getEv(%"class.thrust::pointer.70"* %0) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE3getEv(%"class.thrust::pointer.70"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.70"*, align 8 store %"class.thrust::pointer.70"* %this, %"class.thrust::pointer.70"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.70"*, %"class.thrust::pointer.70"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.70"* %this1 to %"class.thrust::iterator_adaptor.71"* %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE4baseEv(%"class.thrust::iterator_adaptor.71"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 ret %"struct.thrust::pair"* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE4baseEv(%"class.thrust::iterator_adaptor.71"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.71"*, align 8 store %"class.thrust::iterator_adaptor.71"* %this, %"class.thrust::iterator_adaptor.71"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.71"*, %"class.thrust::iterator_adaptor.71"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %this1, i32 0, i32 0 ret %"struct.thrust::pair"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.63"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 0 %call = call i64 @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE8max_sizeERKS5_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %m_allocator) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE8max_sizeERKS5_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a) #8 comdat align 2 { entry: %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 %call = call i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorINS_4pairIaaEEEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS8_E9size_typeEE4typeERKS8_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %0) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorINS_4pairIaaEEEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS8_E9size_typeEE4typeERKS8_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a) #1 comdat { entry: %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 ret i64 -1 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE8allocateERS5_m(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a, i64 %n) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE8allocateERS5_mEN19workaround_warnings8allocateES7_m(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIaaEEEEE8allocateERS5_mEN19workaround_warnings8allocateES7_m(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.137", align 8 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust10device_ptrIKNS_4pairIaaEEEC2IS2_EEPT_(%"class.thrust::device_ptr.137"* %agg.tmp, %"struct.thrust::pair"* null) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive1, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEE8allocateEmNS_10device_ptrIKS2_EE(%"class.thrust::device_malloc_allocator.64"* %0, i64 %1, %"struct.thrust::pair"* %2) %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive7, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive8, align 8 ret %"struct.thrust::pair"* %3 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust23device_malloc_allocatorINS_4pairIaaEEE8allocateEmNS_10device_ptrIKS2_EE(%"class.thrust::device_malloc_allocator.64"* %this, i64 %cnt, %"struct.thrust::pair"* %.coerce) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %0 = alloca %"class.thrust::device_ptr.137", align 8 %this.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %cnt.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %0, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.64"* %this, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this3 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8 %1 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call = call i64 @_ZNK6thrust23device_malloc_allocatorINS_4pairIaaEEE8max_sizeEv(%"class.thrust::device_malloc_allocator.64"* %this3) %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %exception = call i8* @__cxa_allocate_exception(i64 8) #5 %2 = bitcast i8* %exception to %"class.std::bad_alloc"* call void @_ZNSt9bad_allocC2Ev(%"class.std::bad_alloc"* %2) #5 call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt9bad_alloc to i8*), i8* bitcast (void (%"class.std::bad_alloc"*)* @_ZNSt9bad_allocD1Ev to i8*)) #15 unreachable if.end: ; preds = %entry %3 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call4 = call %"struct.thrust::pair"* @_ZN6thrust13device_mallocINS_4pairIaaEEEENS_10device_ptrIT_EEm(i64 %3) %coerce.dive5 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %call4, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive9, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 ret %"struct.thrust::pair"* %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIKNS_4pairIaaEEEC2IS2_EEPT_(%"class.thrust::device_ptr.137"* %this, %"struct.thrust::pair"* %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.137"*, align 8 %ptr.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.thrust::device_ptr.137"* %this, %"class.thrust::device_ptr.137"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %ptr, %"struct.thrust::pair"** %ptr.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.137"* %this1 to %"class.thrust::pointer.138"* %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %ptr.addr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2IS2_EEPT_(%"class.thrust::pointer.138"* %0, %"struct.thrust::pair"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZNK6thrust23device_malloc_allocatorINS_4pairIaaEEE8max_sizeEv(%"class.thrust::device_malloc_allocator.64"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 store %"class.thrust::device_malloc_allocator.64"* %this, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %this.addr, align 8 %call = call i64 @_ZNSt14numeric_limitsImE3maxEv() #5 %div = udiv i64 %call, 2 ret i64 %div } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust13device_mallocINS_4pairIaaEEEENS_10device_ptrIT_EEm(i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %n.addr = alloca i64, align 8 %s = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %coerce = alloca %"class.thrust::pointer.141", align 8 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to %"struct.thrust::detail::execution_policy_base.121"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust6mallocINS_4pairIaaEENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i64 %2) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive1, align 8 %call2 = call %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.141"* %coerce) call void @_ZN6thrust10device_ptrINS_4pairIaaEEEC2IS2_EEPT_(%"class.thrust::device_ptr.69"* %retval, %"struct.thrust::pair"* %call2) %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.end(i64 1, i8* %3) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %4 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6mallocINS_4pairIaaEENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %raw_ptr = alloca %"struct.thrust::pair"*, align 8 %ref.tmp = alloca %"class.thrust::pointer.141", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::pair"** %raw_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic6mallocINS_4pairIaaEENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %ref.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive3, align 8 %call4 = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.141"* dereferenceable(8) %ref.tmp) store %"struct.thrust::pair"* %call4, %"struct.thrust::pair"** %raw_ptr, align 8, !tbaa !1 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %raw_ptr, align 8, !tbaa !1 call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.141"* %retval, %"struct.thrust::pair"* %4) %5 = bitcast %"struct.thrust::pair"** %raw_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive5, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 ret %"struct.thrust::pair"* %6 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.141"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.141"*, align 8 store %"class.thrust::pointer.141"* %this, %"class.thrust::pointer.141"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.141"* %this1 to %"class.thrust::iterator_adaptor.142"* %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv(%"class.thrust::iterator_adaptor.142"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 ret %"struct.thrust::pair"* %1 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.141"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::pointer.141"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 store %"class.thrust::pointer.141"* %ptr, %"class.thrust::pointer.141"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive1, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEE3getESA_(%"struct.thrust::pair"* %3) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic6mallocINS_4pairIaaEENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %void_ptr = alloca %"class.thrust::pointer.129", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 2, %3 %call = call i8* @_ZN6thrust6mallocINS_6system4cuda6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %mul) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.129", %"class.thrust::pointer.129"* %void_ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.130", %"class.thrust::iterator_adaptor.130"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive1, align 8 %call2 = call i8* @_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.129"* %void_ptr) %4 = bitcast i8* %call2 to %"struct.thrust::pair"* call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.141"* %retval, %"struct.thrust::pair"* %4) %5 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %6 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.141"* %this, %"struct.thrust::pair"* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.141"*, align 8 %other.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.thrust::pointer.141"* %this, %"class.thrust::pointer.141"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %other, %"struct.thrust::pair"** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.141"* %this1 to %"class.thrust::iterator_adaptor.142"* call void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_(%"class.thrust::iterator_adaptor.142"* %0, %"struct.thrust::pair"** dereferenceable(8) %other.addr) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEE3getESA_(%"struct.thrust::pair"* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %ptr.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %call = call %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.141"* %ptr) ret %"struct.thrust::pair"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_(%"class.thrust::iterator_adaptor.142"* %this, %"struct.thrust::pair"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.142"*, align 8 %iter.addr = alloca %"struct.thrust::pair"**, align 8 store %"class.thrust::iterator_adaptor.142"* %this, %"class.thrust::iterator_adaptor.142"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"** %iter, %"struct.thrust::pair"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.142"*, %"class.thrust::iterator_adaptor.142"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.142"* %this1 to %"class.thrust::iterator_facade.143"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"**, %"struct.thrust::pair"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %1, align 8, !tbaa !1 store %"struct.thrust::pair"* %2, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !109 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv(%"class.thrust::iterator_adaptor.142"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.142"*, align 8 store %"class.thrust::iterator_adaptor.142"* %this, %"class.thrust::iterator_adaptor.142"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.142"*, %"class.thrust::iterator_adaptor.142"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %this1, i32 0, i32 0 ret %"struct.thrust::pair"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2IS2_EEPT_(%"class.thrust::pointer.138"* %this, %"struct.thrust::pair"* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.138"*, align 8 %other.addr = alloca %"struct.thrust::pair"*, align 8 %ref.tmp = alloca %"struct.thrust::pair"*, align 8 store %"class.thrust::pointer.138"* %this, %"class.thrust::pointer.138"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %other, %"struct.thrust::pair"** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.138"*, %"class.thrust::pointer.138"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.138"* %this1 to %"class.thrust::iterator_adaptor.139"* %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %other.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %1, %"struct.thrust::pair"** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEC2ERKS6_(%"class.thrust::iterator_adaptor.139"* %0, %"struct.thrust::pair"** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEC2ERKS6_(%"class.thrust::iterator_adaptor.139"* %this, %"struct.thrust::pair"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.139"*, align 8 %iter.addr = alloca %"struct.thrust::pair"**, align 8 store %"class.thrust::iterator_adaptor.139"* %this, %"class.thrust::iterator_adaptor.139"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"** %iter, %"struct.thrust::pair"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.139"*, %"class.thrust::iterator_adaptor.139"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.139"* %this1 to %"class.thrust::iterator_facade.140"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"**, %"struct.thrust::pair"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %1, align 8, !tbaa !1 store %"struct.thrust::pair"* %2, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !111 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIaaEEEENS0_15normal_iteratorIPKS8_EENS_10device_ptrIS8_EEEET2_RNS_16execution_policyIT_EERT0_T1_SN_SG_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::device_ptr.69", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp8 = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp7 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp8 to i8* %7 = bitcast %"class.thrust::device_ptr.69"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive9, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp7, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive11, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp8, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive14, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIaaEEEENS0_15normal_iteratorIPKS9_EENS_10device_ptrIS9_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESK_E4typeERNS_16execution_policyIT_EERSI_T1_SU_SK_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %1, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive17, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive20, i32 0, i32 0 %11 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive21, align 8 ret %"struct.thrust::pair"* %11 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIaaEEEENS0_15normal_iteratorIPKS9_EENS_10device_ptrIS9_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESK_E4typeERNS_16execution_policyIT_EERSI_T1_SU_SK_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::device_ptr.69", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp8 = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorINS_4pairIaaEEEEE3getERS5_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %1) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %ref.tmp to %"struct.thrust::execution_policy.120"* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::device_ptr.69"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive9, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp7, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive11, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp8, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive14, i32 0, i32 0 %11 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_RKNS_16execution_policyIT_EERKNSI_IT0_EET1_SR_SH_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"struct.thrust::execution_policy.120"* dereferenceable(1) %2, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10, %"struct.thrust::pair"* %11) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive17, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive20, i32 0, i32 0 %12 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive21, align 8 ret %"struct.thrust::pair"* %12 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_RKNS_16execution_policyIT_EERKNSI_IT0_EET1_SR_SH_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system2, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::device_ptr.69", align 8 %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp12 = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %system2, %"struct.thrust::execution_policy.120"** %system2.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call7 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call7 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %3 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2.addr, align 8 %4 = bitcast %"struct.thrust::execution_policy.120"* %3 to %"struct.thrust::detail::execution_policy_base.121"* %call8 = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %4) %call9 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call8) %5 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call9 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call10 = call { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } @_ZN6thrust6system4cuda6detail13select_systemINS0_3cpp6detail3tagENS2_3tagEEENS2_12cross_systemIT_T0_EERKNS5_16execution_policyIS9_EERNS2_16execution_policyISA_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %2, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %5) %6 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %ref.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %7 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %6, i32 0, i32 0 %8 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call10, 0 store %"struct.thrust::execution_policy.88"* %8, %"struct.thrust::execution_policy.88"** %7, align 8 %9 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %6, i32 0, i32 1 %10 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call10, 1 store %"struct.thrust::execution_policy.120"* %10, %"struct.thrust::execution_policy.120"** %9, align 8 %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.132"* %12 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp11 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp12 to i8* %17 = bitcast %"class.thrust::device_ptr.69"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive13, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp11, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive15, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp12, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive18, i32 0, i32 0 %20 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 %call20 = call %"struct.thrust::pair"* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISD_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SP_SJ_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %11, %"struct.thrust::pair"* %18, %"struct.thrust::pair"* %19, %"struct.thrust::pair"* %20) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive22, i32 0, i32 0 store %"struct.thrust::pair"* %call20, %"struct.thrust::pair"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive25, i32 0, i32 0 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive26, align 8 ret %"struct.thrust::pair"* %21 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorINS_4pairIaaEEEEE3getERS5_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorINS_4pairIaaEEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS8_E4typeEE4typeERS8_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISD_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SP_SJ_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::device_ptr.69", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.132"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp10 = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive6, align 8 store %"struct.thrust::detail::execution_policy_base.132"* %exec, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.132"*, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.132"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %0) %call7 = call dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %call7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp8 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp9 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp10 to i8* %8 = bitcast %"class.thrust::device_ptr.69"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp8, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive11, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp9, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive13, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp10, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive16, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive17, align 8 %call18 = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, %"struct.thrust::pair"* %14, %"struct.thrust::pair"* %15, %"struct.thrust::pair"* %16) %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive20, i32 0, i32 0 store %"struct.thrust::pair"* %call18, %"struct.thrust::pair"** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive23, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive24, align 8 ret %"struct.thrust::pair"* %17 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.69", align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp9 to i8* %10 = bitcast %"class.thrust::device_ptr.69"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp7, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive10, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp8, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive12, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp9, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive15, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive16, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %17, %"struct.thrust::pair"* %18) %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive18, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive21, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive22, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.134", align 8 %end = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp10 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp11 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.134"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.134"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp9 to i8* %10 = bitcast %"class.thrust::device_ptr.69"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp7, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive12, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive14, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive17, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive18, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %17, %"struct.thrust::pair"* %18) %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive20, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive23, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive24, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.134", align 8 %end = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::device_ptr.69", align 8 %input_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %output_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp10 = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp11 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp12 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp13 = alloca %"struct.thrust::detail::integral_constant", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp8 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.134"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp9 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.134"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::device_ptr.69"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive14, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive16, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp10, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive19, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive20, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %17, %"struct.thrust::pair"* %18) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive22, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive25, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive26, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.134", align 8 %end = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::device_ptr.69", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %2 = alloca %"struct.thrust::detail::integral_constant", align 1 %n = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.69", align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %4 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %5, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive6, align 8 %6 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %6) #5 %7 = bitcast %"class.thrust::detail::normal_iterator.134"* %end to %"class.thrust::iterator_facade.136"* %8 = bitcast %"class.thrust::detail::normal_iterator.134"* %begin to %"class.thrust::iterator_facade.136"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.136"* dereferenceable(1) %7, %"class.thrust::iterator_facade.136"* dereferenceable(1) %8) store i64 %call, i64* %n, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.134"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = load i64, i64* %n, align 8, !tbaa !13 %12 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp9 to i8* %13 = bitcast %"class.thrust::device_ptr.69"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive10, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp9, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive13, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive14, align 8 call void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEElNS_10device_ptrISB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, %"struct.thrust::pair"* %14, i64 %11, %"struct.thrust::pair"* %15) %16 = bitcast %"class.thrust::device_ptr.69"* %result to %"class.thrust::iterator_facade.72"* %17 = load i64, i64* %n, align 8, !tbaa !13 %call15 = call %"struct.thrust::pair"* @_ZN6thrustplINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEET_RKNS_15iterator_facadeISC_T0_T1_T2_T3_T4_EENSC_15difference_typeE(%"class.thrust::iterator_facade.72"* dereferenceable(1) %16, i64 %17) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive17, i32 0, i32 0 store %"struct.thrust::pair"* %call15, %"struct.thrust::pair"** %coerce.dive18, align 8 %18 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %18) #5 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive20, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive21, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIaaEEEElNS_10device_ptrISB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, %"struct.thrust::pair"* %first.coerce, i64 %n, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %result = alloca %"class.thrust::device_ptr.69", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system"*, align 8 %n.addr = alloca i64, align 8 %dst = alloca i8*, align 8 %ref.tmp = alloca %"class.thrust::device_ptr.69", align 8 %coerce = alloca %"class.thrust::device_reference.144", align 8 %src = alloca i8*, align 8 %ref.tmp15 = alloca %"struct.thrust::pair"*, align 8 %kind = alloca i32, align 4 %s = alloca %struct.CUstream_st*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %result, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 store %"struct.thrust::system::cuda::detail::cross_system"* %systems, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %dst to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = bitcast %"class.thrust::device_ptr.69"* %result to %"class.thrust::iterator_facade.72"* %call = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEdeEv(%"class.thrust::iterator_facade.72"* %1) %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference.144", %"class.thrust::device_reference.144"* %coerce, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference.145", %"class.thrust::reference.145"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive9, align 8 %2 = bitcast %"class.thrust::device_reference.144"* %coerce to %"class.thrust::reference.145"* %call10 = call %"struct.thrust::pair"* @_ZNK6thrust9referenceINS_4pairIaaEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEadEv(%"class.thrust::reference.145"* %2) %coerce.dive11 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %ref.tmp, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive12, i32 0, i32 0 store %"struct.thrust::pair"* %call10, %"struct.thrust::pair"** %coerce.dive13, align 8 %call14 = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_10device_ptrINS_4pairIaaEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"class.thrust::device_ptr.69"* dereferenceable(8) %ref.tmp) %3 = bitcast %"struct.thrust::pair"* %call14 to i8* store i8* %3, i8** %dst, align 8, !tbaa !1 %4 = bitcast i8** %src to i8* call void @llvm.lifetime.start(i64 8, i8* %4) #5 %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to %"class.thrust::iterator_facade.136"* %call16 = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEdeEv(%"class.thrust::iterator_facade.136"* %5) store %"struct.thrust::pair"* %call16, %"struct.thrust::pair"** %ref.tmp15, align 8, !tbaa !1 %call17 = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castIPKNS_4pairIaaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"struct.thrust::pair"** dereferenceable(8) %ref.tmp15) %6 = bitcast %"struct.thrust::pair"* %call17 to i8* store i8* %6, i8** %src, align 8, !tbaa !1 %7 = bitcast i32* %kind to i8* call void @llvm.lifetime.start(i64 4, i8* %7) #5 %8 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system1 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %8, i32 0, i32 0 %ref = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1, align 8, !tbaa !7 %9 = bitcast %"struct.thrust::execution_policy.88"* %ref to %"struct.thrust::detail::execution_policy_base.85"* %call18 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %9) %10 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call18 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %11 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system2 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %11, i32 0, i32 1 %ref19 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2, align 8, !tbaa !7 %12 = bitcast %"struct.thrust::execution_policy.120"* %ref19 to %"struct.thrust::detail::execution_policy_base.121"* %call20 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %12) %13 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call20 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call21 = call i32 @_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS0_3cpp6detail3tagENS2_3tagEEE14cudaMemcpyKindRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %10, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %13) store i32 %call21, i32* %kind, align 4, !tbaa !97 %14 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %14) #5 %15 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system122 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %15, i32 0, i32 0 %ref23 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system122, align 8, !tbaa !7 %16 = bitcast %"struct.thrust::execution_policy.88"* %ref23 to %"struct.thrust::detail::execution_policy_base.85"* %call24 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %16) %17 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call24 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %18 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system225 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %18, i32 0, i32 1 %ref26 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system225, align 8, !tbaa !7 %19 = bitcast %"struct.thrust::execution_policy.120"* %ref26 to %"struct.thrust::detail::execution_policy_base.121"* %call27 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %19) %20 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call27 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call28 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS0_3cpp6detail3tagENS2_3tagEEEP11CUstream_stRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %17, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %20) store %struct.CUstream_st* %call28, %struct.CUstream_st** %s, align 8, !tbaa !1 %21 = load i8*, i8** %dst, align 8, !tbaa !1 %22 = load i8*, i8** %src, align 8, !tbaa !1 %23 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 %23, 2 %24 = load i32, i32* %kind, align 4, !tbaa !97 %25 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail19trivial_copy_detail23checked_cudaMemcpyAsyncEPvPKvm14cudaMemcpyKindP11CUstream_st(i8* %21, i8* %22, i64 %mul, i32 %24, %struct.CUstream_st* %25) %26 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail11synchronizeEP11CUstream_stPKc(%struct.CUstream_st* %26, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.30, i32 0, i32 0)) %27 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %27) #5 %28 = bitcast i32* %kind to i8* call void @llvm.lifetime.end(i64 4, i8* %28) #5 %29 = bitcast i8** %src to i8* call void @llvm.lifetime.end(i64 8, i8* %29) #5 %30 = bitcast i8** %dst to i8* call void @llvm.lifetime.end(i64 8, i8* %30) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrustplINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEET_RKNS_15iterator_facadeISC_T0_T1_T2_T3_T4_EENSC_15difference_typeE(%"class.thrust::iterator_facade.72"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %i.addr = alloca %"class.thrust::iterator_facade.72"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::device_ptr.69", align 8 store %"class.thrust::iterator_facade.72"* %i, %"class.thrust::iterator_facade.72"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::device_ptr.69"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.72"*, %"class.thrust::iterator_facade.72"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.72"* %1 to %"class.thrust::device_ptr.69"* %3 = bitcast %"class.thrust::device_ptr.69"* %tmp to i8* %4 = bitcast %"class.thrust::device_ptr.69"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::device_ptr.69"* %tmp to %"class.thrust::iterator_facade.72"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEpLEl(%"class.thrust::iterator_facade.72"* %5, i64 %6) %7 = bitcast %"class.thrust::device_ptr.69"* %retval to i8* %8 = bitcast %"class.thrust::device_ptr.69"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.69"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 ret %"struct.thrust::pair"* %10 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_10device_ptrINS_4pairIaaEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"class.thrust::device_ptr.69"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 store %"class.thrust::device_ptr.69"* %ptr, %"class.thrust::device_ptr.69"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIaaEEEEE3getES5_(%"struct.thrust::pair"* %3) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEdeEv(%"class.thrust::iterator_facade.72"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.144", align 8 %this.addr = alloca %"class.thrust::iterator_facade.72"*, align 8 store %"class.thrust::iterator_facade.72"* %this, %"class.thrust::iterator_facade.72"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.72"*, %"class.thrust::iterator_facade.72"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.72"* %this1) %call2 = call %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrINS_4pairIaaEEEEEENT_9referenceERKS6_(%"class.thrust::device_ptr.69"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.144", %"class.thrust::device_reference.144"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.145", %"class.thrust::reference.145"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_reference.144", %"class.thrust::device_reference.144"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::reference.145", %"class.thrust::reference.145"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive10, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust9referenceINS_4pairIaaEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEadEv(%"class.thrust::reference.145"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %this.addr = alloca %"class.thrust::reference.145"*, align 8 store %"class.thrust::reference.145"* %this, %"class.thrust::reference.145"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.145"*, %"class.thrust::reference.145"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.145", %"class.thrust::reference.145"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr.69"* %retval to i8* %1 = bitcast %"class.thrust::device_ptr.69"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive2, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castIPKNS_4pairIaaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"struct.thrust::pair"** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"struct.thrust::pair"**, align 8 store %"struct.thrust::pair"** %ptr, %"struct.thrust::pair"*** %ptr.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::pair"**, %"struct.thrust::pair"*** %ptr.addr, align 8 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %0, align 8, !tbaa !1 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsIPKNS_4pairIaaEEE3getES5_(%"struct.thrust::pair"* %1) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEdeEv(%"class.thrust::iterator_facade.136"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.136"*, align 8 store %"class.thrust::iterator_facade.136"* %this, %"class.thrust::iterator_facade.136"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.136"*, %"class.thrust::iterator_facade.136"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.136"* %this1) %call2 = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENT_9referenceERKS9_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %call) ret %"struct.thrust::pair"* %call2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrINS_4pairIaaEEEEEENT_9referenceERKS6_(%"class.thrust::device_ptr.69"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.144", align 8 %f.addr = alloca %"class.thrust::device_ptr.69"*, align 8 store %"class.thrust::device_ptr.69"* %f, %"class.thrust::device_ptr.69"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %0 to %"class.thrust::pointer.70"* %call = call %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE11dereferenceEv(%"class.thrust::pointer.70"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.144", %"class.thrust::device_reference.144"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::reference.145", %"class.thrust::reference.145"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference.144", %"class.thrust::device_reference.144"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference.145", %"class.thrust::reference.145"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive8, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.72"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.72"*, align 8 store %"class.thrust::iterator_facade.72"* %this, %"class.thrust::iterator_facade.72"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.72"*, %"class.thrust::iterator_facade.72"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.72"* %this1 to %"class.thrust::device_ptr.69"* ret %"class.thrust::device_ptr.69"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE11dereferenceEv(%"class.thrust::pointer.70"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.144", align 8 %this.addr = alloca %"class.thrust::pointer.70"*, align 8 store %"class.thrust::pointer.70"* %this, %"class.thrust::pointer.70"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.70"*, %"class.thrust::pointer.70"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.70"* %this1 to %"class.thrust::device_ptr.69"* call void @_ZN6thrust16device_referenceINS_4pairIaaEEEC2ERKNS_10device_ptrIS2_EE(%"class.thrust::device_reference.144"* %retval, %"class.thrust::device_ptr.69"* dereferenceable(8) %0) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.144", %"class.thrust::device_reference.144"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::reference.145", %"class.thrust::reference.145"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16device_referenceINS_4pairIaaEEEC2ERKNS_10device_ptrIS2_EE(%"class.thrust::device_reference.144"* %this, %"class.thrust::device_ptr.69"* dereferenceable(8) %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_reference.144"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr.69"*, align 8 store %"class.thrust::device_reference.144"* %this, %"class.thrust::device_reference.144"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.69"* %ptr, %"class.thrust::device_ptr.69"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_reference.144"*, %"class.thrust::device_reference.144"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_reference.144"* %this1 to %"class.thrust::reference.145"* %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %ptr.addr, align 8 call void @_ZN6thrust9referenceINS_4pairIaaEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEC2ERKS4_(%"class.thrust::reference.145"* %0, %"class.thrust::device_ptr.69"* dereferenceable(8) %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust9referenceINS_4pairIaaEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEC2ERKS4_(%"class.thrust::reference.145"* %this, %"class.thrust::device_ptr.69"* dereferenceable(8) %ptr) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.145"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr.69"*, align 8 store %"class.thrust::reference.145"* %this, %"class.thrust::reference.145"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.69"* %ptr, %"class.thrust::device_ptr.69"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.145"*, %"class.thrust::reference.145"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.145", %"class.thrust::reference.145"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %m_ptr to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsIPKNS_4pairIaaEEE3getES5_(%"struct.thrust::pair"* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::pair"* %ptr, %"struct.thrust::pair"** %ptr.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %ptr.addr, align 8, !tbaa !1 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENT_9referenceERKS9_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 store %"class.thrust::detail::normal_iterator.134"* %f, %"class.thrust::detail::normal_iterator.134"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %0 to %"class.thrust::iterator_adaptor.135"* %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E11dereferenceEv(%"class.thrust::iterator_adaptor.135"* %1) ret %"struct.thrust::pair"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.136"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.136"*, align 8 store %"class.thrust::iterator_facade.136"* %this, %"class.thrust::iterator_facade.136"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.136"*, %"class.thrust::iterator_facade.136"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.136"* %this1 to %"class.thrust::detail::normal_iterator.134"* ret %"class.thrust::detail::normal_iterator.134"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E11dereferenceEv(%"class.thrust::iterator_adaptor.135"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.135"*, align 8 store %"class.thrust::iterator_adaptor.135"* %this, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.135"*, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !107 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEpLEl(%"class.thrust::iterator_facade.72"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.72"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.72"* %this, %"class.thrust::iterator_facade.72"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.72"*, %"class.thrust::iterator_facade.72"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.72"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrINS_4pairIaaEEEEEEvRT_NS6_15difference_typeE(%"class.thrust::device_ptr.69"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.72"* %this1) ret %"class.thrust::device_ptr.69"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrINS_4pairIaaEEEEEEvRT_NS6_15difference_typeE(%"class.thrust::device_ptr.69"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::device_ptr.69"* %f, %"class.thrust::device_ptr.69"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %0 to %"class.thrust::iterator_adaptor.71"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7advanceEl(%"class.thrust::iterator_adaptor.71"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.72"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.72"*, align 8 store %"class.thrust::iterator_facade.72"* %this, %"class.thrust::iterator_facade.72"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.72"*, %"class.thrust::iterator_facade.72"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.72"* %this1 to %"class.thrust::device_ptr.69"* ret %"class.thrust::device_ptr.69"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7advanceEl(%"class.thrust::iterator_adaptor.71"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.71"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.71"* %this, %"class.thrust::iterator_adaptor.71"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.71"*, %"class.thrust::iterator_adaptor.71"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !105 %add.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %1, i64 %0 store %"struct.thrust::pair"* %add.ptr, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !105 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorINS_4pairIaaEEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS8_E4typeEE4typeERS8_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a) #1 comdat { entry: %retval = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.66"* %i, %"class.thrust::detail::normal_iterator.66"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.66"* %i, %"class.thrust::detail::normal_iterator.66"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.66"* %1 to %"class.thrust::iterator_facade.68"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl(%"class.thrust::iterator_facade.68"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl(%"class.thrust::iterator_facade.68"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.68"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.68"* %this, %"class.thrust::iterator_facade.68"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.68"*, %"class.thrust::iterator_facade.68"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.68"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEEEvRT_NS9_15difference_typeE(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.68"* %this1) ret %"class.thrust::detail::normal_iterator.66"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEEEvRT_NS9_15difference_typeE(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.66"* %f, %"class.thrust::detail::normal_iterator.66"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.66"* %0 to %"class.thrust::iterator_adaptor.67"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.67"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.68"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.68"*, align 8 store %"class.thrust::iterator_facade.68"* %this, %"class.thrust::iterator_facade.68"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.68"*, %"class.thrust::iterator_facade.68"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.68"* %this1 to %"class.thrust::detail::normal_iterator.66"* ret %"class.thrust::detail::normal_iterator.66"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.67"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.67"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.67"* %this, %"class.thrust::iterator_adaptor.67"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.67"*, %"class.thrust::iterator_adaptor.67"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr.69"* %m_iterator to %"class.thrust::iterator_facade.72"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEpLEl(%"class.thrust::iterator_facade.72"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIaaEEEENS_10device_ptrIS4_EElEEvRT_T0_T1_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::device_ptr.69", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIaaEEEENS_10device_ptrIS5_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSA_SB_T1_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %0, %"struct.thrust::pair"* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElS7_S5_SB_SC_SE_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSG_IT5_T6_T7_T8_T9_T10_EEE4typeERKSN_RKSU_(%"class.thrust::iterator_facade.68"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.68"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.68"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.68"*, align 8 store %"class.thrust::iterator_facade.68"* %lhs, %"class.thrust::iterator_facade.68"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.68"* %rhs, %"class.thrust::iterator_facade.68"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.68"*, %"class.thrust::iterator_facade.68"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.68"* %0 to %"class.thrust::detail::normal_iterator.66"* %2 = load %"class.thrust::iterator_facade.68"*, %"class.thrust::iterator_facade.68"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.68"* %2 to %"class.thrust::detail::normal_iterator.66"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIaaEEEENS_10device_ptrIS5_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSA_SB_T1_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::device_ptr.69", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.64"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce = alloca %"class.thrust::device_ptr.69", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.64"* %a, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.64"*, %"class.thrust::device_malloc_allocator.64"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorINS_4pairIaaEEEEE3getERS5_(%"class.thrust::device_malloc_allocator.64"* dereferenceable(1) %0) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.121"* %2 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %3 = bitcast %"class.thrust::device_ptr.69"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_10device_ptrINS_4pairIaaEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS9_21execution_policy_baseIT_EESC_T1_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, %"struct.thrust::pair"* %5, i64 %4) %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive9, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_10device_ptrINS_4pairIaaEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS9_21execution_policy_baseIT_EESC_T1_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %first = alloca %"class.thrust::device_ptr.69", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp4 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call3 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call3 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %3 = bitcast %"class.thrust::device_ptr.69"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive5 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive6, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 %call8 = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIaaEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"struct.thrust::pair"* %5, i64 %4) %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %call8, %"struct.thrust::pair"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive13, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive14, align 8 ret %"struct.thrust::pair"* %6 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIaaEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %first = alloca %"class.thrust::device_ptr.69", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 %call = call %"struct.thrust::pair"* @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIaaEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_EN10workaround13parallel_pathERNSD_IS4_EES8_lSB_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %0, %"struct.thrust::pair"* %4, i64 %3) %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive11, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive12, align 8 ret %"struct.thrust::pair"* %5 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIaaEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_EN10workaround13parallel_pathERNSD_IS4_EES8_lSB_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.69", align 8 %first = alloca %"class.thrust::device_ptr.69", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %narrow_n = alloca i32, align 4 %narrow_num_groups = alloca i32, align 4 %narrow_group_size = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.147", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp6 = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp7 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %num_groups = alloca i64, align 8 %group_size = alloca i64, align 8 %coerce15 = alloca %"class.thrust::tuple.152", align 8 %ref.tmp17 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp18 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp19 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp20 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp21 = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp22 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %ref.tmp28 = alloca i64, align 8 %agg.tmp.ensured = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp31 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp34 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp35 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp36 = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp37 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %ref.tmp41 = alloca i32, align 4 %agg.tmp.ensured44 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp45 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp50 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp51 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp52 = alloca %"class.thrust::device_ptr.69", align 8 %agg.tmp53 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEC2ERKS3_(%"struct.thrust::detail::wrapped_function.146"* %wrapped_f, %"struct.thrust::detail::allocator_traits_detail::gozer"* dereferenceable(1) %f) %1 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.start(i64 4, i8* %1) #5 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %conv = trunc i64 %2 to i32 store i32 %conv, i32* %narrow_n, align 4, !tbaa !11 %3 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %narrow_num_groups, align 4, !tbaa !11 %4 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %narrow_group_size, align 4, !tbaa !11 %call = call { i32*, i32* } @_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %narrow_group_size) %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.147", %"class.thrust::tuple.147"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.148"* %coerce.dive3 to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call, 1 store i32* %9, i32** %8, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, i64 2147483647, i64 2147483647, i64 2147483647) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp5 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %11 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp6 to i8* %12 = bitcast %"class.thrust::device_ptr.69"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %13 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp7 to i8* %14 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 1, i32 1, i1 false), !tbaa.struct !41 %15 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp6, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive9, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 %call11 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"struct.thrust::pair"* %16, i32 %15) %17 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call11, i64* %17, align 4 %call12 = call dereferenceable(16) %"class.thrust::tuple.147"* @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.147"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %18 = load i64, i64* %n.addr, align 8, !tbaa !13 %19 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %20 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %mul = mul i32 %19, %20 %call13 = call zeroext i1 @_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j(i64 %18, i32 %mul) br i1 %call13, label %if.then, label %if.else if.then: ; preds = %entry %21 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.start(i64 8, i8* %21) #5 store i64 0, i64* %num_groups, align 8, !tbaa !13 %22 = bitcast i64* %group_size to i8* call void @llvm.lifetime.start(i64 8, i8* %22) #5 store i64 0, i64* %group_size, align 8, !tbaa !13 %call14 = call { i64*, i64* } @_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %group_size) %coerce.dive16 = getelementptr inbounds %"class.thrust::tuple.152", %"class.thrust::tuple.152"* %coerce15, i32 0, i32 0 %23 = bitcast %"struct.thrust::detail::cons.153"* %coerce.dive16 to { i64*, i64* }* %24 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %23, i32 0, i32 0 %25 = extractvalue { i64*, i64* } %call14, 0 store i64* %25, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %23, i32 0, i32 1 %27 = extractvalue { i64*, i64* } %call14, 1 store i64* %27, i64** %26, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp18, i64 2147483647, i64 2147483647, i64 2147483647) %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp20 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %28, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %29 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp21 to i8* %30 = bitcast %"class.thrust::device_ptr.69"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %29, i8* %30, i64 8, i32 8, i1 false) %31 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp22 to i8* %32 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %31, i8* %32, i64 1, i32 1, i1 false), !tbaa.struct !41 %33 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive23 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp21, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive24, i32 0, i32 0 %34 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive25, align 8 %call26 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp18, %"struct.thrust::pair"* %34, i64 %33) %35 = bitcast %"struct.thrust::pair.82"* %ref.tmp17 to i64* store i64 %call26, i64* %35, align 4 %call27 = call dereferenceable(16) %"class.thrust::tuple.152"* @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.152"* %coerce15, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp17) %36 = load i64, i64* %n.addr, align 8, !tbaa !13 %37 = load i64, i64* %group_size, align 8, !tbaa !13 %call29 = call i64 @_ZN6thrust6detail4util9divide_riIllEET_S3_T0_(i64 %36, i64 %37) store i64 %call29, i64* %ref.tmp28, align 8, !tbaa !13 %call30 = call i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %ref.tmp28) store i64 %call30, i64* %num_groups, align 8, !tbaa !13 %38 = load i64, i64* %num_groups, align 8, !tbaa !13 %39 = load i64, i64* %group_size, align 8, !tbaa !13 %40 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %41 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %40 to %"struct.thrust::detail::execution_policy_base.121"* %call32 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %41) %42 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call32 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call33 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %42) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp31, i64 %38, i64 %39, i64 0, %struct.CUstream_st* %call33) %43 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp35 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %43, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %44 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp36 to i8* %45 = bitcast %"class.thrust::device_ptr.69"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %44, i8* %45, i64 8, i32 8, i1 false) %46 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp37 to i8* %47 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %46, i8* %47, i64 1, i32 1, i1 false), !tbaa.struct !41 %48 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive38 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp36, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive39, i32 0, i32 0 %49 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive40, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp31, %"struct.thrust::pair"* %49, i64 %48) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured) #5 %50 = bitcast i64* %group_size to i8* call void @llvm.lifetime.end(i64 8, i8* %50) #5 %51 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %51) #5 br label %if.end if.else: ; preds = %entry %52 = load i32, i32* %narrow_n, align 4, !tbaa !11 %53 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %call42 = call i32 @_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_(i32 %52, i32 %53) store i32 %call42, i32* %ref.tmp41, align 4, !tbaa !11 %call43 = call i32 @_ZN6thrust3minIjEET_RKS1_S3_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %ref.tmp41) store i32 %call43, i32* %narrow_num_groups, align 4, !tbaa !11 %54 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %conv46 = zext i32 %54 to i64 %55 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %conv47 = zext i32 %55 to i64 %56 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %57 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %56 to %"struct.thrust::detail::execution_policy_base.121"* %call48 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %57) %58 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call48 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call49 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %58) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp45, i64 %conv46, i64 %conv47, i64 0, %struct.CUstream_st* %call49) %59 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp51 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %59, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %60 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp52 to i8* %61 = bitcast %"class.thrust::device_ptr.69"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %60, i8* %61, i64 8, i32 8, i1 false) %62 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp53 to i8* %63 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %62, i8* %63, i64 1, i32 1, i1 false), !tbaa.struct !41 %64 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive54 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp52, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive55, i32 0, i32 0 %65 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive56, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured44, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp45, %"struct.thrust::pair"* %65, i32 %64) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured44) #5 br label %if.end if.end: ; preds = %if.else, %if.then %66 = bitcast %"class.thrust::device_ptr.69"* %first to %"class.thrust::iterator_facade.72"* %67 = load i64, i64* %n.addr, align 8, !tbaa !13 %call57 = call %"struct.thrust::pair"* @_ZN6thrustplINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEET_RKNS_15iterator_facadeISC_T0_T1_T2_T3_T4_EENSC_15difference_typeE(%"class.thrust::iterator_facade.72"* dereferenceable(1) %66, i64 %67) %coerce.dive58 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive59 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive58, i32 0, i32 0 %coerce.dive60 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive59, i32 0, i32 0 store %"struct.thrust::pair"* %call57, %"struct.thrust::pair"** %coerce.dive60, align 8 %68 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %68) #5 %69 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %69) #5 %70 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.end(i64 4, i8* %70) #5 %71 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %71) #5 %coerce.dive61 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %retval, i32 0, i32 0 %coerce.dive62 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive61, i32 0, i32 0 %coerce.dive63 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive62, i32 0, i32 0 %72 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive63, align 8 ret %"struct.thrust::pair"* %72 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEC2ERKS3_(%"struct.thrust::detail::wrapped_function.146"* %this, %"struct.thrust::detail::allocator_traits_detail::gozer"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %f.addr = alloca %"struct.thrust::detail::allocator_traits_detail::gozer"*, align 8 store %"struct.thrust::detail::wrapped_function.146"* %this, %"struct.thrust::detail::wrapped_function.146"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::allocator_traits_detail::gozer"* %f, %"struct.thrust::detail::allocator_traits_detail::gozer"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.146", %"struct.thrust::detail::wrapped_function.146"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::allocator_traits_detail::gozer"*, %"struct.thrust::detail::allocator_traits_detail::gozer"** %f.addr, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr { i32*, i32* } @_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %t0, i32* dereferenceable(4) %t1) #8 comdat { entry: %retval = alloca %"class.thrust::tuple.147", align 8 %t0.addr = alloca i32*, align 8 %t1.addr = alloca i32*, align 8 store i32* %t0, i32** %t0.addr, align 8, !tbaa !7 store i32* %t1, i32** %t1.addr, align 8, !tbaa !7 %0 = load i32*, i32** %t0.addr, align 8 %1 = load i32*, i32** %t1.addr, align 8 call void @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ES1_S1_(%"class.thrust::tuple.147"* %retval, i32* dereferenceable(4) %0, i32* dereferenceable(4) %1) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.147", %"class.thrust::tuple.147"* %retval, i32 0, i32 0 %2 = bitcast %"struct.thrust::detail::cons.148"* %coerce.dive to { i32*, i32* }* %3 = load { i32*, i32* }, { i32*, i32* }* %2, align 8 ret { i32*, i32* } %3 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::tuple.147"* @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.147"* %this, %"struct.thrust::pair.82"* dereferenceable(8) %k) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.147"*, align 8 %k.addr = alloca %"struct.thrust::pair.82"*, align 8 store %"class.thrust::tuple.147"* %this, %"class.thrust::tuple.147"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.82"* %k, %"struct.thrust::pair.82"** %k.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.147"*, %"class.thrust::tuple.147"** %this.addr, align 8 %0 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %k.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %0, i32 0, i32 0 %1 = load i32, i32* %first, align 4, !tbaa !24 %2 = bitcast %"class.thrust::tuple.147"* %this1 to %"struct.thrust::detail::cons.148"* %head = getelementptr inbounds %"struct.thrust::detail::cons.148", %"struct.thrust::detail::cons.148"* %2, i32 0, i32 0 %ref = load i32*, i32** %head, align 8, !tbaa !7 store i32 %1, i32* %ref, align 4, !tbaa !11 %3 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %k.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %3, i32 0, i32 1 %4 = load i32, i32* %second, align 4, !tbaa !28 %5 = bitcast %"class.thrust::tuple.147"* %this1 to %"struct.thrust::detail::cons.148"* %tail = getelementptr inbounds %"struct.thrust::detail::cons.148", %"struct.thrust::detail::cons.148"* %5, i32 0, i32 1 %head2 = getelementptr inbounds %"struct.thrust::detail::cons.149", %"struct.thrust::detail::cons.149"* %tail, i32 0, i32 0 %ref3 = load i32*, i32** %head2, align 8, !tbaa !7 store i32 %4, i32* %ref3, align 4, !tbaa !11 ret %"class.thrust::tuple.147"* %this1 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce, i32 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::device_ptr.69", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure"* sret %agg.tmp5, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::device_ptr.69"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %agg.tmp5) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, i64 %num_groups, i64 %group_size, i64 %heap_size) #8 comdat { entry: %num_groups.addr = alloca i64, align 8 %group_size.addr = alloca i64, align 8 %heap_size.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 store i64 %num_groups, i64* %num_groups.addr, align 8, !tbaa !13 store i64 %group_size, i64* %group_size.addr, align 8, !tbaa !13 store i64 %heap_size, i64* %heap_size.addr, align 8, !tbaa !13 %0 = load i64, i64* %group_size.addr, align 8, !tbaa !13 %1 = load i64, i64* %heap_size.addr, align 8, !tbaa !13 %call = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_3conEmm(i64 %0, i64 %1) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %3 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %2, i32 0, i32 0 %4 = extractvalue { i64, i64 } %call, 0 store i64 %4, i64* %3, align 4 %5 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %2, i32 0, i32 1 %6 = extractvalue { i64, i64 } %call, 1 store i64 %6, i64* %5, align 4 %7 = load i64, i64* %num_groups.addr, align 8, !tbaa !13 %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %9 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %8, i32 0, i32 0 %10 = load i64, i64* %9, align 4 %11 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %8, i32 0, i32 1 %12 = load i64, i64* %11, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEENS3_14parallel_groupIT_Lm0EEESA_m(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i64 %10, i64 %12, i64 %7) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j(i64 %n, i32 %narrow_grid_size) #1 comdat { entry: %n.addr = alloca i64, align 8 %narrow_grid_size.addr = alloca i32, align 4 %threshold = alloca i64, align 8 %result = alloca i8, align 1 %narrow_n = alloca i32, align 4 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i32 %narrow_grid_size, i32* %narrow_grid_size.addr, align 4, !tbaa !11 %0 = bitcast i64* %threshold to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 store i64 4294967295, i64* %threshold, align 8, !tbaa !13 call void @llvm.lifetime.start(i64 1, i8* %result) #5 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %2 = load i64, i64* %threshold, align 8, !tbaa !13 %cmp = icmp sgt i64 %1, %2 %frombool = zext i1 %cmp to i8 store i8 %frombool, i8* %result, align 1, !tbaa !75 %3 = load i8, i8* %result, align 1, !tbaa !75, !range !77 %tobool = trunc i8 %3 to i1 br i1 %tobool, label %if.end3, label %if.then if.then: ; preds = %entry %4 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %conv = trunc i64 %5 to i32 store i32 %conv, i32* %narrow_n, align 4, !tbaa !11 %6 = load i32, i32* %narrow_n, align 4, !tbaa !11 %sub = sub i32 %6, 1 %7 = load i32, i32* %narrow_grid_size.addr, align 4, !tbaa !11 %add = add i32 %sub, %7 %8 = load i32, i32* %narrow_n, align 4, !tbaa !11 %cmp1 = icmp ult i32 %add, %8 br i1 %cmp1, label %if.then2, label %if.end if.then2: ; preds = %if.then store i8 1, i8* %result, align 1, !tbaa !75 br label %if.end if.end: ; preds = %if.then2, %if.then %9 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 br label %if.end3 if.end3: ; preds = %if.end, %entry %10 = load i8, i8* %result, align 1, !tbaa !75, !range !77 %tobool4 = trunc i8 %10 to i1 call void @llvm.lifetime.end(i64 1, i8* %result) #5 %11 = bitcast i64* %threshold to i8* call void @llvm.lifetime.end(i64 8, i8* %11) #5 ret i1 %tobool4 } ; Function Attrs: inlinehint uwtable define linkonce_odr { i64*, i64* } @_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i64* dereferenceable(8) %t0, i64* dereferenceable(8) %t1) #8 comdat { entry: %retval = alloca %"class.thrust::tuple.152", align 8 %t0.addr = alloca i64*, align 8 %t1.addr = alloca i64*, align 8 store i64* %t0, i64** %t0.addr, align 8, !tbaa !7 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 %0 = load i64*, i64** %t0.addr, align 8 %1 = load i64*, i64** %t1.addr, align 8 call void @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ES1_S1_(%"class.thrust::tuple.152"* %retval, i64* dereferenceable(8) %0, i64* dereferenceable(8) %1) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.152", %"class.thrust::tuple.152"* %retval, i32 0, i32 0 %2 = bitcast %"struct.thrust::detail::cons.153"* %coerce.dive to { i64*, i64* }* %3 = load { i64*, i64* }, { i64*, i64* }* %2, align 8 ret { i64*, i64* } %3 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::tuple.152"* @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.152"* %this, %"struct.thrust::pair.82"* dereferenceable(8) %k) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.152"*, align 8 %k.addr = alloca %"struct.thrust::pair.82"*, align 8 store %"class.thrust::tuple.152"* %this, %"class.thrust::tuple.152"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.82"* %k, %"struct.thrust::pair.82"** %k.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.152"*, %"class.thrust::tuple.152"** %this.addr, align 8 %0 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %k.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %0, i32 0, i32 0 %1 = load i32, i32* %first, align 4, !tbaa !24 %conv = sext i32 %1 to i64 %2 = bitcast %"class.thrust::tuple.152"* %this1 to %"struct.thrust::detail::cons.153"* %head = getelementptr inbounds %"struct.thrust::detail::cons.153", %"struct.thrust::detail::cons.153"* %2, i32 0, i32 0 %ref = load i64*, i64** %head, align 8, !tbaa !7 store i64 %conv, i64* %ref, align 8, !tbaa !13 %3 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %k.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %3, i32 0, i32 1 %4 = load i32, i32* %second, align 4, !tbaa !28 %conv2 = sext i32 %4 to i64 %5 = bitcast %"class.thrust::tuple.152"* %this1 to %"struct.thrust::detail::cons.153"* %tail = getelementptr inbounds %"struct.thrust::detail::cons.153", %"struct.thrust::detail::cons.153"* %5, i32 0, i32 1 %head3 = getelementptr inbounds %"struct.thrust::detail::cons.154", %"struct.thrust::detail::cons.154"* %tail, i32 0, i32 0 %ref4 = load i64*, i64** %head3, align 8, !tbaa !7 store i64 %conv2, i64* %ref4, align 8, !tbaa !13 ret %"class.thrust::tuple.152"* %this1 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce, i64 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::device_ptr.69", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* sret %agg.tmp5, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::device_ptr.69"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %agg.tmp5) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %lhs, i64* dereferenceable(8) %rhs) #1 comdat { entry: %lhs.addr = alloca i64*, align 8 %rhs.addr = alloca i64*, align 8 store i64* %lhs, i64** %lhs.addr, align 8, !tbaa !7 store i64* %rhs, i64** %rhs.addr, align 8, !tbaa !7 %0 = load i64*, i64** %rhs.addr, align 8 %1 = load i64, i64* %0, align 8, !tbaa !13 %2 = load i64*, i64** %lhs.addr, align 8 %3 = load i64, i64* %2, align 8, !tbaa !13 %cmp = icmp slt i64 %1, %3 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %4 = load i64*, i64** %rhs.addr, align 8 %5 = load i64, i64* %4, align 8, !tbaa !13 br label %cond.end cond.false: ; preds = %entry %6 = load i64*, i64** %lhs.addr, align 8 %7 = load i64, i64* %6, align 8, !tbaa !13 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %5, %cond.true ], [ %7, %cond.false ] ret i64 %cond } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6detail4util9divide_riIllEET_S3_T0_(i64 %x, i64 %y) #9 comdat { entry: %x.addr = alloca i64, align 8 %y.addr = alloca i64, align 8 store i64 %x, i64* %x.addr, align 8, !tbaa !13 store i64 %y, i64* %y.addr, align 8, !tbaa !13 %0 = load i64, i64* %x.addr, align 8, !tbaa !13 %1 = load i64, i64* %y.addr, align 8, !tbaa !13 %sub = sub nsw i64 %1, 1 %add = add nsw i64 %0, %sub %2 = load i64, i64* %y.addr, align 8, !tbaa !13 %div = sdiv i64 %add, %2 ret i64 %div } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce, i64 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::device_ptr.69", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* sret %agg.tmp5, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::device_ptr.69"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %agg.tmp5) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* noalias sret %agg.result, i64 %num_groups, i64 %group_size, i64 %heap_size, %struct.CUstream_st* %stream) #8 comdat { entry: %num_groups.addr = alloca i64, align 8 %group_size.addr = alloca i64, align 8 %heap_size.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 store i64 %num_groups, i64* %num_groups.addr, align 8, !tbaa !13 store i64 %group_size, i64* %group_size.addr, align 8, !tbaa !13 store i64 %heap_size, i64* %heap_size.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %1 = load i64, i64* %group_size.addr, align 8, !tbaa !13 %2 = load i64, i64* %heap_size.addr, align 8, !tbaa !13 %call = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_3conEmm(i64 %1, i64 %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %4 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %3, i32 0, i32 0 %5 = extractvalue { i64, i64 } %call, 0 store i64 %5, i64* %4, align 4 %6 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %3, i32 0, i32 1 %7 = extractvalue { i64, i64 } %call, 1 store i64 %7, i64* %6, align 4 %8 = load i64, i64* %num_groups.addr, align 8, !tbaa !13 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %10 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %9, i32 0, i32 0 %11 = load i64, i64* %10, align 4 %12 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %9, i32 0, i32 1 %13 = load i64, i64* %12, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.result, %struct.CUstream_st* %0, i64 %11, i64 %13, i64 %8) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::future"*, align 8 %e = alloca i32, align 4 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::system::cuda::detail::bulk_::future"* %this, %"class.thrust::system::cuda::detail::bulk_::future"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::future"*, %"class.thrust::system::cuda::detail::bulk_::future"** %this.addr, align 8 %call = invoke zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_6futureIvE5validEv(%"class.thrust::system::cuda::detail::bulk_::future"* %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry br i1 %call, label %if.then, label %if.end21 if.then: ; preds = %invoke.cont %0 = bitcast i32* %e to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %m_event = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::future", %"class.thrust::system::cuda::detail::bulk_::future"* %this1, i32 0, i32 1 %1 = load %struct.CUevent_st*, %struct.CUevent_st** %m_event, align 8, !tbaa !113 %call3 = invoke i32 @cudaEventDestroy(%struct.CUevent_st* %1) to label %invoke.cont2 unwind label %terminate.lpad invoke.cont2: ; preds = %if.then store i32 %call3, i32* %e, align 4, !tbaa !73 %2 = load i32, i32* %e, align 4, !tbaa !73 %tobool = icmp ne i32 %2, 0 br i1 %tobool, label %if.then4, label %if.end if.then4: ; preds = %invoke.cont2 %3 = load i32, i32* %e, align 4, !tbaa !73 %call6 = invoke i8* @cudaGetErrorString(i32 %3) to label %invoke.cont5 unwind label %lpad invoke.cont5: ; preds = %if.then4 %call8 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.42, i32 0, i32 0), i8* %call6) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont5 br label %if.end lpad: ; preds = %invoke.cont15, %if.then14, %if.then10, %invoke.cont5, %if.then4 %4 = landingpad { i8*, i32 } catch i8* null %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 %7 = bitcast i32* %e to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %terminate.handler if.end: ; preds = %invoke.cont7, %invoke.cont2 %m_owns_stream = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::future", %"class.thrust::system::cuda::detail::bulk_::future"* %this1, i32 0, i32 2 %8 = load i8, i8* %m_owns_stream, align 8, !tbaa !115, !range !77 %tobool9 = trunc i8 %8 to i1 br i1 %tobool9, label %if.then10, label %if.end20 if.then10: ; preds = %if.end %m_stream = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::future", %"class.thrust::system::cuda::detail::bulk_::future"* %this1, i32 0, i32 0 %9 = load %struct.CUstream_st*, %struct.CUstream_st** %m_stream, align 8, !tbaa !116 %call12 = invoke i32 @cudaStreamDestroy(%struct.CUstream_st* %9) to label %invoke.cont11 unwind label %lpad invoke.cont11: ; preds = %if.then10 store i32 %call12, i32* %e, align 4, !tbaa !73 %10 = load i32, i32* %e, align 4, !tbaa !73 %tobool13 = icmp ne i32 %10, 0 br i1 %tobool13, label %if.then14, label %if.end19 if.then14: ; preds = %invoke.cont11 %11 = load i32, i32* %e, align 4, !tbaa !73 %call16 = invoke i8* @cudaGetErrorString(i32 %11) to label %invoke.cont15 unwind label %lpad invoke.cont15: ; preds = %if.then14 %call18 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.43, i32 0, i32 0), i8* %call16) to label %invoke.cont17 unwind label %lpad invoke.cont17: ; preds = %invoke.cont15 br label %if.end19 if.end19: ; preds = %invoke.cont17, %invoke.cont11 br label %if.end20 if.end20: ; preds = %if.end19, %if.end %12 = bitcast i32* %e to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 br label %if.end21 if.end21: ; preds = %if.end20, %invoke.cont ret void terminate.lpad: ; preds = %if.then, %entry %13 = landingpad { i8*, i32 } catch i8* null %14 = extractvalue { i8*, i32 } %13, 0 call void @__clang_call_terminate(i8* %14) #13 unreachable terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust3minIjEET_RKS1_S3_(i32* dereferenceable(4) %lhs, i32* dereferenceable(4) %rhs) #1 comdat { entry: %lhs.addr = alloca i32*, align 8 %rhs.addr = alloca i32*, align 8 store i32* %lhs, i32** %lhs.addr, align 8, !tbaa !7 store i32* %rhs, i32** %rhs.addr, align 8, !tbaa !7 %0 = load i32*, i32** %rhs.addr, align 8 %1 = load i32, i32* %0, align 4, !tbaa !11 %2 = load i32*, i32** %lhs.addr, align 8 %3 = load i32, i32* %2, align 4, !tbaa !11 %cmp = icmp ult i32 %1, %3 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %4 = load i32*, i32** %rhs.addr, align 8 %5 = load i32, i32* %4, align 4, !tbaa !11 br label %cond.end cond.false: ; preds = %entry %6 = load i32*, i32** %lhs.addr, align 8 %7 = load i32, i32* %6, align 4, !tbaa !11 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %5, %cond.true ], [ %7, %cond.false ] ret i32 %cond } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_(i32 %x, i32 %y) #9 comdat { entry: %x.addr = alloca i32, align 4 %y.addr = alloca i32, align 4 store i32 %x, i32* %x.addr, align 4, !tbaa !11 store i32 %y, i32* %y.addr, align 4, !tbaa !11 %0 = load i32, i32* %x.addr, align 4, !tbaa !11 %1 = load i32, i32* %y.addr, align 4, !tbaa !11 %sub = sub i32 %1, 1 %add = add i32 %0, %sub %2 = load i32, i32* %y.addr, align 4, !tbaa !11 %div = udiv i32 %add, %2 ret i32 %div } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce, i32 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::device_ptr.69", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure"* sret %agg.tmp5, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::device_ptr.69"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %agg.tmp5) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ES1_S1_(%"class.thrust::tuple.147"* %this, i32* dereferenceable(4) %t0, i32* dereferenceable(4) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.147"*, align 8 %t0.addr = alloca i32*, align 8 %t1.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.147"* %this, %"class.thrust::tuple.147"** %this.addr, align 8, !tbaa !1 store i32* %t0, i32** %t0.addr, align 8, !tbaa !7 store i32* %t1, i32** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.147"*, %"class.thrust::tuple.147"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.147"* %this1 to %"struct.thrust::detail::cons.148"* %1 = load i32*, i32** %t0.addr, align 8 %2 = load i32*, i32** %t1.addr, align 8 call void @_ZN6thrust6detail4consIRjNS1_IS2_NS_9null_typeEEEEC2IjjKS3_S7_S7_S7_S7_S7_S7_S7_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.148"* %0, i32* dereferenceable(4) %1, i32* dereferenceable(4) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIRjNS1_IS2_NS_9null_typeEEEEC2IjjKS3_S7_S7_S7_S7_S7_S7_S7_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.148"* %this, i32* dereferenceable(4) %t1, i32* dereferenceable(4) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.148"*, align 8 %t1.addr = alloca i32*, align 8 %t2.addr = alloca i32*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.148"* %this, %"struct.thrust::detail::cons.148"** %this.addr, align 8, !tbaa !1 store i32* %t1, i32** %t1.addr, align 8, !tbaa !7 store i32* %t2, i32** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.148"*, %"struct.thrust::detail::cons.148"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.148", %"struct.thrust::detail::cons.148"* %this1, i32 0, i32 0 %0 = load i32*, i32** %t1.addr, align 8 store i32* %0, i32** %head, align 8, !tbaa !7 %tail = getelementptr inbounds %"struct.thrust::detail::cons.148", %"struct.thrust::detail::cons.148"* %this1, i32 0, i32 1 %1 = load i32*, i32** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRjNS_9null_typeEEC2IjEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.149"* %tail, i32* dereferenceable(4) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIRjNS_9null_typeEEC2IjEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.149"* %this, i32* dereferenceable(4) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.149"*, align 8 %t1.addr = alloca i32*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.149"* %this, %"struct.thrust::detail::cons.149"** %this.addr, align 8, !tbaa !1 store i32* %t1, i32** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.149"*, %"struct.thrust::detail::cons.149"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.149", %"struct.thrust::detail::cons.149"* %this9, i32 0, i32 0 %9 = load i32*, i32** %t1.addr, align 8 store i32* %9, i32** %head, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::device_ptr.69"* dereferenceable(8) %a2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %a3, i32* dereferenceable(4) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %a4.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.155", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %a2, %"class.thrust::device_ptr.69"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %a3, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8, !tbaa !7 store i32* %a4, i32** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8 %3 = load i32*, i32** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_(%"class.thrust::tuple.155"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::device_ptr.69"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i32* dereferenceable(4) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEEjNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_(%"class.thrust::system::cuda::detail::bulk_::detail::closure"* %agg.result, %"class.thrust::tuple.155"* dereferenceable(24) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this1, i32 0, i32 1 %0 = load i32, i32* %m_size, align 4, !tbaa !117 ret i32 %0 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %this1, i32 0, i32 1 %0 = load i32, i32* %m_size, align 4, !tbaa !120 ret i32 %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* noalias sret %agg.result) #8 comdat { entry: %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail14current_deviceEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEi(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %agg.result, i32 %call) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEi(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* noalias sret %agg.result, i32 %device_id) #8 comdat { entry: %device_id.addr = alloca i32, align 4 store i32 %device_id, i32* %device_id.addr, align 4, !tbaa !11 %0 = load i32, i32* %device_id.addr, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEi(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %agg.result, i32 %0) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail14current_deviceEv() #8 comdat { entry: %result = alloca i32, align 4 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 -1, i32* %result, align 4, !tbaa !11 %call = call i32 @cudaGetDevice(i32* %result) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.33, i32 0, i32 0)) %1 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp slt i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 38, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.33, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %2 = load i32, i32* %result, align 4, !tbaa !11 %3 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %3) #5 ret i32 %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEi(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* noalias sret %agg.result, i32 %device_id) #8 comdat { entry: %device_id.addr = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 store i32 %device_id, i32* %device_id.addr, align 4, !tbaa !11 %0 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %cmp = icmp sge i32 %0, 16 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load i32, i32* %device_id.addr, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail26device_properties_uncachedEi(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %agg.result, i32 %1) br label %return if.end: ; preds = %entry %2 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %idxprom = sext i32 %2 to i64 %arrayidx = getelementptr inbounds [16 x i8], [16 x i8]* @_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE16properties_exist, i64 0, i64 %idxprom %3 = load i8, i8* %arrayidx, align 1, !tbaa !75, !range !77 %tobool = trunc i8 %3 to i1 br i1 %tobool, label %if.end6, label %if.then1 if.then1: ; preds = %if.end %4 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %idxprom2 = sext i32 %4 to i64 %arrayidx3 = getelementptr inbounds [16 x %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"], [16 x %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"]* @_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE17device_properties, i64 0, i64 %idxprom2 %5 = load i32, i32* %device_id.addr, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail26device_properties_uncachedEi(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp, i32 %5) %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %arrayidx3 to i8* %7 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 56, i32 8, i1 false), !tbaa.struct !123 fence seq_cst %8 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %idxprom4 = sext i32 %8 to i64 %arrayidx5 = getelementptr inbounds [16 x i8], [16 x i8]* @_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE16properties_exist, i64 0, i64 %idxprom4 store i8 1, i8* %arrayidx5, align 1, !tbaa !75 br label %if.end6 if.end6: ; preds = %if.then1, %if.end %9 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %idxprom7 = sext i32 %9 to i64 %arrayidx8 = getelementptr inbounds [16 x %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"], [16 x %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"]* @_ZZN6thrust6system4cuda6detail5bulk_6detail24device_properties_cachedEiE17device_properties, i64 0, i64 %idxprom7 %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result to i8* %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %arrayidx8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 56, i32 8, i1 false), !tbaa.struct !123 br label %return return: ; preds = %if.end6, %if.then ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail26device_properties_uncachedEi(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* noalias sret %agg.result, i32 %device_id) #8 comdat { entry: %device_id.addr = alloca i32, align 4 %error = alloca i32, align 4 %temp = alloca i32, align 4 store i32 %device_id, i32* %device_id.addr, align 4, !tbaa !11 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result to i8* call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 56, i32 8, i1 false) %1 = bitcast i32* %error to i8* call void @llvm.lifetime.start(i64 4, i8* %1) #5 store i32 38, i32* %error, align 4, !tbaa !73 %major = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 0 %2 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call = call i32 @cudaDeviceGetAttribute(i32* %major, i32 75, i32 %2) store i32 %call, i32* %error, align 4, !tbaa !73 %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %3 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call1 = call i32 @cudaDeviceGetAttribute(i32* %arrayidx, i32 5, i32 %3) store i32 %call1, i32* %error, align 4, !tbaa !73 %maxGridSize2 = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 1 %arrayidx3 = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize2, i64 0, i64 1 %4 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call4 = call i32 @cudaDeviceGetAttribute(i32* %arrayidx3, i32 6, i32 %4) store i32 %call4, i32* %error, align 4, !tbaa !73 %maxGridSize5 = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 1 %arrayidx6 = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize5, i64 0, i64 2 %5 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call7 = call i32 @cudaDeviceGetAttribute(i32* %arrayidx6, i32 7, i32 %5) store i32 %call7, i32* %error, align 4, !tbaa !73 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 2 %6 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call8 = call i32 @cudaDeviceGetAttribute(i32* %maxThreadsPerBlock, i32 1, i32 %6) store i32 %call8, i32* %error, align 4, !tbaa !73 %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 3 %7 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call9 = call i32 @cudaDeviceGetAttribute(i32* %maxThreadsPerMultiProcessor, i32 39, i32 %7) store i32 %call9, i32* %error, align 4, !tbaa !73 %minor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 4 %8 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call10 = call i32 @cudaDeviceGetAttribute(i32* %minor, i32 76, i32 %8) store i32 %call10, i32* %error, align 4, !tbaa !73 %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 5 %9 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call11 = call i32 @cudaDeviceGetAttribute(i32* %multiProcessorCount, i32 16, i32 %9) store i32 %call11, i32* %error, align 4, !tbaa !73 %regsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 6 %10 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call12 = call i32 @cudaDeviceGetAttribute(i32* %regsPerBlock, i32 12, i32 %10) store i32 %call12, i32* %error, align 4, !tbaa !73 %11 = bitcast i32* %temp to i8* call void @llvm.lifetime.start(i64 4, i8* %11) #5 %12 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call13 = call i32 @cudaDeviceGetAttribute(i32* %temp, i32 8, i32 %12) store i32 %call13, i32* %error, align 4, !tbaa !73 %13 = load i32, i32* %temp, align 4, !tbaa !11 %conv = sext i32 %13 to i64 %sharedMemPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 7 store i64 %conv, i64* %sharedMemPerBlock, align 8, !tbaa !124 %warpSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %agg.result, i32 0, i32 8 %14 = load i32, i32* %device_id.addr, align 4, !tbaa !11 %call14 = call i32 @cudaDeviceGetAttribute(i32* %warpSize, i32 10, i32 %14) store i32 %call14, i32* %error, align 4, !tbaa !73 %15 = load i32, i32* %error, align 4, !tbaa !73 call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %15, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.32, i32 0, i32 0)) %16 = bitcast i32* %temp to i8* call void @llvm.lifetime.end(i64 4, i8* %16) #5 %17 = bitcast i32* %error to i8* call void @llvm.lifetime.end(i64 4, i8* %17) #5 ret void } ; Function Attrs: argmemonly nounwind declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #2 declare i32 @cudaDeviceGetAttribute(i32*, i32, i32) #3 declare i32 @cudaGetDevice(i32*) #3 ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attributes, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %properties) #8 comdat { entry: %attributes.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %properties.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function", align 1 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attributes, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyINS4_25cuda_launch_config_detail4util13zero_functionImEEEEmRKNS4_21function_attributes_tERKNS4_19device_properties_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attr, void ()* %entry1) #8 { entry: %attr.addr = alloca %struct.cudaFuncAttributes*, align 8 %entry.addr = alloca void ()*, align 8 store %struct.cudaFuncAttributes* %attr, %struct.cudaFuncAttributes** %attr.addr, align 8, !tbaa !1 store void ()* %entry1, void ()** %entry.addr, align 8, !tbaa !1 %0 = load %struct.cudaFuncAttributes*, %struct.cudaFuncAttributes** %attr.addr, align 8, !tbaa !1 %1 = load void ()*, void ()** %entry.addr, align 8, !tbaa !1 %2 = bitcast void ()* %1 to i8* %call = call i32 @cudaFuncGetAttributes(%struct.cudaFuncAttributes* %0, i8* %2) ret i32 %call } declare i32 @cudaFuncGetAttributes(%struct.cudaFuncAttributes*, i8*) #3 ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } declare i32 @cudaSetupArgument(i8*, i64, i64) declare i32 @cudaLaunch(i8*) ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyINS4_25cuda_launch_config_detail4util13zero_functionImEEEEmRKNS4_21function_attributes_tERKNS4_19device_properties_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attributes, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %properties) #8 comdat { entry: %block_size_to_dynamic_smem_size = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function", align 1 %attributes.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %properties.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %max_occupancy = alloca i64, align 8 %largest_blocksize = alloca i64, align 8 %granularity = alloca i64, align 8 %max_blocksize = alloca i64, align 8 %highest_occupancy = alloca i64, align 8 %blocksize = alloca i64, align 8 %cleanup.dest.slot = alloca i32 %occupancy = alloca i64, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attributes, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8, !tbaa !7 %0 = bitcast i64* %max_occupancy to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %1, i32 0, i32 3 %2 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %conv = sext i32 %2 to i64 store i64 %conv, i64* %max_occupancy, align 8, !tbaa !13 %3 = bitcast i64* %largest_blocksize to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %4, i32 0, i32 2 %5 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8 %maxThreadsPerBlock1 = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %5, i32 0, i32 2 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util4min_IiEET_RKS8_SA_(i32* dereferenceable(4) %maxThreadsPerBlock, i32* dereferenceable(4) %maxThreadsPerBlock1) %conv2 = sext i32 %call to i64 store i64 %conv2, i64* %largest_blocksize, align 8, !tbaa !13 %6 = bitcast i64* %granularity to i8* call void @llvm.lifetime.start(i64 8, i8* %6) #5 %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %warpSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %7, i32 0, i32 8 %8 = load i32, i32* %warpSize, align 8, !tbaa !142 %conv3 = sext i32 %8 to i64 store i64 %conv3, i64* %granularity, align 8, !tbaa !13 %9 = bitcast i64* %max_blocksize to i8* call void @llvm.lifetime.start(i64 8, i8* %9) #5 store i64 0, i64* %max_blocksize, align 8, !tbaa !13 %10 = bitcast i64* %highest_occupancy to i8* call void @llvm.lifetime.start(i64 8, i8* %10) #5 store i64 0, i64* %highest_occupancy, align 8, !tbaa !13 %11 = bitcast i64* %blocksize to i8* call void @llvm.lifetime.start(i64 8, i8* %11) #5 %12 = load i64, i64* %largest_blocksize, align 8, !tbaa !13 store i64 %12, i64* %blocksize, align 8, !tbaa !13 br label %for.cond for.cond: ; preds = %for.inc, %entry %13 = load i64, i64* %blocksize, align 8, !tbaa !13 %cmp = icmp ne i64 %13, 0 br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond store i32 2, i32* %cleanup.dest.slot, align 4 br label %cleanup10 for.body: ; preds = %for.cond %14 = bitcast i64* %occupancy to i8* call void @llvm.lifetime.start(i64 8, i8* %14) #5 %15 = load i64, i64* %blocksize, align 8, !tbaa !13 %16 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %17 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8 %18 = load i64, i64* %blocksize, align 8, !tbaa !13 %19 = load i64, i64* %blocksize, align 8, !tbaa !13 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util13zero_functionImEclEm(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function"* %block_size_to_dynamic_smem_size, i64 %19) %call5 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %16, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %17, i64 %18, i64 %call4) %mul = mul i64 %15, %call5 store i64 %mul, i64* %occupancy, align 8, !tbaa !13 %20 = load i64, i64* %occupancy, align 8, !tbaa !13 %21 = load i64, i64* %highest_occupancy, align 8, !tbaa !13 %cmp6 = icmp ugt i64 %20, %21 br i1 %cmp6, label %if.then, label %if.end if.then: ; preds = %for.body %22 = load i64, i64* %blocksize, align 8, !tbaa !13 store i64 %22, i64* %max_blocksize, align 8, !tbaa !13 %23 = load i64, i64* %occupancy, align 8, !tbaa !13 store i64 %23, i64* %highest_occupancy, align 8, !tbaa !13 br label %if.end if.end: ; preds = %if.then, %for.body %24 = load i64, i64* %highest_occupancy, align 8, !tbaa !13 %25 = load i64, i64* %max_occupancy, align 8, !tbaa !13 %cmp7 = icmp eq i64 %24, %25 br i1 %cmp7, label %if.then8, label %if.end9 if.then8: ; preds = %if.end store i32 2, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end9: ; preds = %if.end store i32 0, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end9, %if.then8 %26 = bitcast i64* %occupancy to i8* call void @llvm.lifetime.end(i64 8, i8* %26) #5 %cleanup.dest = load i32, i32* %cleanup.dest.slot, align 4 switch i32 %cleanup.dest, label %cleanup10 [ i32 0, label %cleanup.cont ] cleanup.cont: ; preds = %cleanup br label %for.inc for.inc: ; preds = %cleanup.cont %27 = load i64, i64* %granularity, align 8, !tbaa !13 %28 = load i64, i64* %blocksize, align 8, !tbaa !13 %sub = sub i64 %28, %27 store i64 %sub, i64* %blocksize, align 8, !tbaa !13 br label %for.cond cleanup10: ; preds = %cleanup, %for.cond.cleanup %29 = bitcast i64* %blocksize to i8* call void @llvm.lifetime.end(i64 8, i8* %29) #5 br label %for.end for.end: ; preds = %cleanup10 %30 = load i64, i64* %max_blocksize, align 8, !tbaa !13 store i32 1, i32* %cleanup.dest.slot, align 4 %31 = bitcast i64* %highest_occupancy to i8* call void @llvm.lifetime.end(i64 8, i8* %31) #5 %32 = bitcast i64* %max_blocksize to i8* call void @llvm.lifetime.end(i64 8, i8* %32) #5 %33 = bitcast i64* %granularity to i8* call void @llvm.lifetime.end(i64 8, i8* %33) #5 %34 = bitcast i64* %largest_blocksize to i8* call void @llvm.lifetime.end(i64 8, i8* %34) #5 %35 = bitcast i64* %max_occupancy to i8* call void @llvm.lifetime.end(i64 8, i8* %35) #5 ret i64 %30 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util4min_IiEET_RKS8_SA_(i32* dereferenceable(4) %lhs, i32* dereferenceable(4) %rhs) #9 comdat { entry: %lhs.addr = alloca i32*, align 8 %rhs.addr = alloca i32*, align 8 store i32* %lhs, i32** %lhs.addr, align 8, !tbaa !7 store i32* %rhs, i32** %rhs.addr, align 8, !tbaa !7 %0 = load i32*, i32** %rhs.addr, align 8 %1 = load i32, i32* %0, align 4, !tbaa !11 %2 = load i32*, i32** %lhs.addr, align 8 %3 = load i32, i32* %2, align 4, !tbaa !11 %cmp = icmp slt i32 %1, %3 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %4 = load i32*, i32** %rhs.addr, align 8 %5 = load i32, i32* %4, align 4, !tbaa !11 br label %cond.end cond.false: ; preds = %entry %6 = load i32*, i32** %lhs.addr, align 8 %7 = load i32, i32* %6, align 4, !tbaa !11 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %5, %cond.true ], [ %7, %cond.false ] ret i32 %cond } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attributes, i64 %CTA_SIZE, i64 %dynamic_smem_bytes) #8 comdat { entry: %properties.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attributes.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %CTA_SIZE.addr = alloca i64, align 8 %dynamic_smem_bytes.addr = alloca i64, align 8 %maxThreadsPerSM = alloca i64, align 8 %maxBlocksPerSM = alloca i64, align 8 %ctaLimitThreads = alloca i64, align 8 %ctaLimitBlocks = alloca i64, align 8 %smemAllocationUnit = alloca i64, align 8 %smemBytes = alloca i64, align 8 %smemPerCTA = alloca i64, align 8 %ctaLimitSMem = alloca i64, align 8 %regAllocationUnit = alloca i32, align 4 %warpAllocationMultiple = alloca i64, align 8 %numWarps = alloca i64, align 8 %ctaLimitRegs = alloca i64, align 8 %regsPerCTA = alloca i64, align 8 %regsPerWarp = alloca i64, align 8 %numSides = alloca i64, align 8 %numRegsPerSide = alloca i64, align 8 %ref.tmp = alloca i64, align 8 %ref.tmp45 = alloca i64, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attributes, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8, !tbaa !7 store i64 %CTA_SIZE, i64* %CTA_SIZE.addr, align 8, !tbaa !13 store i64 %dynamic_smem_bytes, i64* %dynamic_smem_bytes.addr, align 8, !tbaa !13 %0 = bitcast i64* %maxThreadsPerSM to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %1, i32 0, i32 3 %2 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %conv = sext i32 %2 to i64 store i64 %conv, i64* %maxThreadsPerSM, align 8, !tbaa !13 %3 = bitcast i64* %maxBlocksPerSM to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail29max_blocks_per_multiprocessorERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %4) store i64 %call, i64* %maxBlocksPerSM, align 8, !tbaa !13 %5 = bitcast i64* %ctaLimitThreads to i8* call void @llvm.lifetime.start(i64 8, i8* %5) #5 %6 = load i64, i64* %CTA_SIZE.addr, align 8, !tbaa !13 %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %7, i32 0, i32 2 %8 = load i32, i32* %maxThreadsPerBlock, align 8, !tbaa !143 %conv1 = sext i32 %8 to i64 %cmp = icmp ule i64 %6, %conv1 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %9 = load i64, i64* %maxThreadsPerSM, align 8, !tbaa !13 %10 = load i64, i64* %CTA_SIZE.addr, align 8, !tbaa !13 %div = udiv i64 %9, %10 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %div, %cond.true ], [ 0, %cond.false ] store i64 %cond, i64* %ctaLimitThreads, align 8, !tbaa !13 %11 = bitcast i64* %ctaLimitBlocks to i8* call void @llvm.lifetime.start(i64 8, i8* %11) #5 %12 = load i64, i64* %maxBlocksPerSM, align 8, !tbaa !13 store i64 %12, i64* %ctaLimitBlocks, align 8, !tbaa !13 %13 = bitcast i64* %smemAllocationUnit to i8* call void @llvm.lifetime.start(i64 8, i8* %13) #5 %14 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail20smem_allocation_unitERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %14) store i64 %call2, i64* %smemAllocationUnit, align 8, !tbaa !13 %15 = bitcast i64* %smemBytes to i8* call void @llvm.lifetime.start(i64 8, i8* %15) #5 %16 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %16, i32 0, i32 5 %17 = load i64, i64* %sharedSizeBytes, align 8, !tbaa !140 %18 = load i64, i64* %dynamic_smem_bytes.addr, align 8, !tbaa !13 %add = add i64 %17, %18 store i64 %add, i64* %smemBytes, align 8, !tbaa !13 %19 = bitcast i64* %smemPerCTA to i8* call void @llvm.lifetime.start(i64 8, i8* %19) #5 %20 = load i64, i64* %smemBytes, align 8, !tbaa !13 %21 = load i64, i64* %smemAllocationUnit, align 8, !tbaa !13 %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iImmEET_S8_T0_(i64 %20, i64 %21) store i64 %call3, i64* %smemPerCTA, align 8, !tbaa !13 %22 = bitcast i64* %ctaLimitSMem to i8* call void @llvm.lifetime.start(i64 8, i8* %22) #5 %23 = load i64, i64* %smemPerCTA, align 8, !tbaa !13 %cmp4 = icmp ugt i64 %23, 0 br i1 %cmp4, label %cond.true5, label %cond.false7 cond.true5: ; preds = %cond.end %24 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %sharedMemPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %24, i32 0, i32 7 %25 = load i64, i64* %sharedMemPerBlock, align 8, !tbaa !124 %26 = load i64, i64* %smemPerCTA, align 8, !tbaa !13 %div6 = udiv i64 %25, %26 br label %cond.end8 cond.false7: ; preds = %cond.end %27 = load i64, i64* %maxBlocksPerSM, align 8, !tbaa !13 br label %cond.end8 cond.end8: ; preds = %cond.false7, %cond.true5 %cond9 = phi i64 [ %div6, %cond.true5 ], [ %27, %cond.false7 ] store i64 %cond9, i64* %ctaLimitSMem, align 8, !tbaa !13 %28 = bitcast i32* %regAllocationUnit to i8* call void @llvm.lifetime.start(i64 4, i8* %28) #5 %29 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %30 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %30, i32 0, i32 3 %31 = load i32, i32* %numRegs, align 4, !tbaa !136 %conv10 = sext i32 %31 to i64 %call11 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail19reg_allocation_unitERKNS4_19device_properties_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %29, i64 %conv10) store i32 %call11, i32* %regAllocationUnit, align 4, !tbaa !11 %32 = bitcast i64* %warpAllocationMultiple to i8* call void @llvm.lifetime.start(i64 8, i8* %32) #5 %33 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %call12 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail24warp_allocation_multipleERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %33) store i64 %call12, i64* %warpAllocationMultiple, align 8, !tbaa !13 %34 = bitcast i64* %numWarps to i8* call void @llvm.lifetime.start(i64 8, i8* %34) #5 %35 = load i64, i64* %CTA_SIZE.addr, align 8, !tbaa !13 %36 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %warpSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %36, i32 0, i32 8 %37 = load i32, i32* %warpSize, align 8, !tbaa !142 %call13 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riImiEET_S8_T0_(i64 %35, i32 %37) %38 = load i64, i64* %warpAllocationMultiple, align 8, !tbaa !13 %call14 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iImmEET_S8_T0_(i64 %call13, i64 %38) store i64 %call14, i64* %numWarps, align 8, !tbaa !13 %39 = bitcast i64* %ctaLimitRegs to i8* call void @llvm.lifetime.start(i64 8, i8* %39) #5 %40 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %major = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %40, i32 0, i32 0 %41 = load i32, i32* %major, align 8, !tbaa !144 %cmp15 = icmp sle i32 %41, 1 br i1 %cmp15, label %if.then, label %if.else if.then: ; preds = %cond.end8 %42 = bitcast i64* %regsPerCTA to i8* call void @llvm.lifetime.start(i64 8, i8* %42) #5 %43 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8 %numRegs16 = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %43, i32 0, i32 3 %44 = load i32, i32* %numRegs16, align 4, !tbaa !136 %45 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %warpSize17 = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %45, i32 0, i32 8 %46 = load i32, i32* %warpSize17, align 8, !tbaa !142 %mul = mul nsw i32 %44, %46 %conv18 = sext i32 %mul to i64 %47 = load i64, i64* %numWarps, align 8, !tbaa !13 %mul19 = mul i64 %conv18, %47 %48 = load i32, i32* %regAllocationUnit, align 4, !tbaa !11 %call20 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iImiEET_S8_T0_(i64 %mul19, i32 %48) store i64 %call20, i64* %regsPerCTA, align 8, !tbaa !13 %49 = load i64, i64* %regsPerCTA, align 8, !tbaa !13 %cmp21 = icmp ugt i64 %49, 0 br i1 %cmp21, label %cond.true22, label %cond.false25 cond.true22: ; preds = %if.then %50 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %regsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %50, i32 0, i32 6 %51 = load i32, i32* %regsPerBlock, align 8, !tbaa !145 %conv23 = sext i32 %51 to i64 %52 = load i64, i64* %regsPerCTA, align 8, !tbaa !13 %div24 = udiv i64 %conv23, %52 br label %cond.end26 cond.false25: ; preds = %if.then %53 = load i64, i64* %maxBlocksPerSM, align 8, !tbaa !13 br label %cond.end26 cond.end26: ; preds = %cond.false25, %cond.true22 %cond27 = phi i64 [ %div24, %cond.true22 ], [ %53, %cond.false25 ] store i64 %cond27, i64* %ctaLimitRegs, align 8, !tbaa !13 %54 = bitcast i64* %regsPerCTA to i8* call void @llvm.lifetime.end(i64 8, i8* %54) #5 br label %if.end if.else: ; preds = %cond.end8 %55 = bitcast i64* %regsPerWarp to i8* call void @llvm.lifetime.start(i64 8, i8* %55) #5 %56 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8 %numRegs28 = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %56, i32 0, i32 3 %57 = load i32, i32* %numRegs28, align 4, !tbaa !136 %58 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %warpSize29 = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %58, i32 0, i32 8 %59 = load i32, i32* %warpSize29, align 8, !tbaa !142 %mul30 = mul nsw i32 %57, %59 %60 = load i32, i32* %regAllocationUnit, align 4, !tbaa !11 %call31 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iIiiEET_S8_T0_(i32 %mul30, i32 %60) %conv32 = sext i32 %call31 to i64 store i64 %conv32, i64* %regsPerWarp, align 8, !tbaa !13 %61 = bitcast i64* %numSides to i8* call void @llvm.lifetime.start(i64 8, i8* %61) #5 %62 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %call33 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail28num_sides_per_multiprocessorERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %62) store i64 %call33, i64* %numSides, align 8, !tbaa !13 %63 = bitcast i64* %numRegsPerSide to i8* call void @llvm.lifetime.start(i64 8, i8* %63) #5 %64 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %regsPerBlock34 = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %64, i32 0, i32 6 %65 = load i32, i32* %regsPerBlock34, align 8, !tbaa !145 %conv35 = sext i32 %65 to i64 %66 = load i64, i64* %numSides, align 8, !tbaa !13 %div36 = udiv i64 %conv35, %66 store i64 %div36, i64* %numRegsPerSide, align 8, !tbaa !13 %67 = load i64, i64* %regsPerWarp, align 8, !tbaa !13 %cmp37 = icmp ugt i64 %67, 0 br i1 %cmp37, label %cond.true38, label %cond.false42 cond.true38: ; preds = %if.else %68 = load i64, i64* %numRegsPerSide, align 8, !tbaa !13 %69 = load i64, i64* %regsPerWarp, align 8, !tbaa !13 %div39 = udiv i64 %68, %69 %70 = load i64, i64* %numSides, align 8, !tbaa !13 %mul40 = mul i64 %div39, %70 %71 = load i64, i64* %numWarps, align 8, !tbaa !13 %div41 = udiv i64 %mul40, %71 br label %cond.end43 cond.false42: ; preds = %if.else %72 = load i64, i64* %maxBlocksPerSM, align 8, !tbaa !13 br label %cond.end43 cond.end43: ; preds = %cond.false42, %cond.true38 %cond44 = phi i64 [ %div41, %cond.true38 ], [ %72, %cond.false42 ] store i64 %cond44, i64* %ctaLimitRegs, align 8, !tbaa !13 %73 = bitcast i64* %numRegsPerSide to i8* call void @llvm.lifetime.end(i64 8, i8* %73) #5 %74 = bitcast i64* %numSides to i8* call void @llvm.lifetime.end(i64 8, i8* %74) #5 %75 = bitcast i64* %regsPerWarp to i8* call void @llvm.lifetime.end(i64 8, i8* %75) #5 br label %if.end if.end: ; preds = %cond.end43, %cond.end26 %call46 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util4min_ImEET_RKS8_SA_(i64* dereferenceable(8) %ctaLimitThreads, i64* dereferenceable(8) %ctaLimitBlocks) store i64 %call46, i64* %ref.tmp45, align 8, !tbaa !13 %call47 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util4min_ImEET_RKS8_SA_(i64* dereferenceable(8) %ctaLimitSMem, i64* dereferenceable(8) %ref.tmp45) store i64 %call47, i64* %ref.tmp, align 8, !tbaa !13 %call48 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util4min_ImEET_RKS8_SA_(i64* dereferenceable(8) %ctaLimitRegs, i64* dereferenceable(8) %ref.tmp) %76 = bitcast i64* %ctaLimitRegs to i8* call void @llvm.lifetime.end(i64 8, i8* %76) #5 %77 = bitcast i64* %numWarps to i8* call void @llvm.lifetime.end(i64 8, i8* %77) #5 %78 = bitcast i64* %warpAllocationMultiple to i8* call void @llvm.lifetime.end(i64 8, i8* %78) #5 %79 = bitcast i32* %regAllocationUnit to i8* call void @llvm.lifetime.end(i64 4, i8* %79) #5 %80 = bitcast i64* %ctaLimitSMem to i8* call void @llvm.lifetime.end(i64 8, i8* %80) #5 %81 = bitcast i64* %smemPerCTA to i8* call void @llvm.lifetime.end(i64 8, i8* %81) #5 %82 = bitcast i64* %smemBytes to i8* call void @llvm.lifetime.end(i64 8, i8* %82) #5 %83 = bitcast i64* %smemAllocationUnit to i8* call void @llvm.lifetime.end(i64 8, i8* %83) #5 %84 = bitcast i64* %ctaLimitBlocks to i8* call void @llvm.lifetime.end(i64 8, i8* %84) #5 %85 = bitcast i64* %ctaLimitThreads to i8* call void @llvm.lifetime.end(i64 8, i8* %85) #5 %86 = bitcast i64* %maxBlocksPerSM to i8* call void @llvm.lifetime.end(i64 8, i8* %86) #5 %87 = bitcast i64* %maxThreadsPerSM to i8* call void @llvm.lifetime.end(i64 8, i8* %87) #5 ret i64 %call48 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util13zero_functionImEclEm(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function"* %this, i64) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function"*, align 8 %.addr = alloca i64, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function"** %this.addr, align 8, !tbaa !1 store i64 %0, i64* %.addr, align 8, !tbaa !13 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launch_config_detail::util::zero_function"** %this.addr, align 8 ret i64 0 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail29max_blocks_per_multiprocessorERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %properties) #9 comdat { entry: %properties.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %major = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %0, i32 0, i32 0 %1 = load i32, i32* %major, align 8, !tbaa !144 %cmp = icmp sle i32 %1, 2 %cond = select i1 %cmp, i32 8, i32 16 %conv = sext i32 %cond to i64 ret i64 %conv } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail20smem_allocation_unitERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %properties) #9 comdat { entry: %retval = alloca i64, align 8 %properties.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %major = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %0, i32 0, i32 0 %1 = load i32, i32* %major, align 8, !tbaa !144 switch i32 %1, label %sw.default [ i32 1, label %sw.bb i32 2, label %sw.bb1 i32 3, label %sw.bb2 ] sw.bb: ; preds = %entry store i64 512, i64* %retval, align 8 br label %return sw.bb1: ; preds = %entry store i64 128, i64* %retval, align 8 br label %return sw.bb2: ; preds = %entry store i64 256, i64* %retval, align 8 br label %return sw.default: ; preds = %entry store i64 256, i64* %retval, align 8 br label %return return: ; preds = %sw.default, %sw.bb2, %sw.bb1, %sw.bb %2 = load i64, i64* %retval, align 8 ret i64 %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iImmEET_S8_T0_(i64 %x, i64 %y) #8 comdat { entry: %x.addr = alloca i64, align 8 %y.addr = alloca i64, align 8 store i64 %x, i64* %x.addr, align 8, !tbaa !13 store i64 %y, i64* %y.addr, align 8, !tbaa !13 %0 = load i64, i64* %y.addr, align 8, !tbaa !13 %1 = load i64, i64* %x.addr, align 8, !tbaa !13 %2 = load i64, i64* %y.addr, align 8, !tbaa !13 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riImmEET_S8_T0_(i64 %1, i64 %2) %mul = mul i64 %0, %call ret i64 %mul } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail19reg_allocation_unitERKNS4_19device_properties_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %properties, i64 %regsPerThread) #9 comdat { entry: %retval = alloca i32, align 4 %properties.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %regsPerThread.addr = alloca i64, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8, !tbaa !7 store i64 %regsPerThread, i64* %regsPerThread.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %major = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %0, i32 0, i32 0 %1 = load i32, i32* %major, align 8, !tbaa !144 switch i32 %1, label %sw.default4 [ i32 1, label %sw.bb i32 2, label %sw.bb1 i32 3, label %sw.bb3 ] sw.bb: ; preds = %entry %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %minor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %2, i32 0, i32 4 %3 = load i32, i32* %minor, align 8, !tbaa !146 %cmp = icmp sle i32 %3, 1 %cond = select i1 %cmp, i32 256, i32 512 store i32 %cond, i32* %retval, align 4 br label %return sw.bb1: ; preds = %entry %4 = load i64, i64* %regsPerThread.addr, align 8, !tbaa !13 switch i64 %4, label %sw.default [ i64 21, label %sw.bb2 i64 22, label %sw.bb2 i64 29, label %sw.bb2 i64 30, label %sw.bb2 i64 37, label %sw.bb2 i64 38, label %sw.bb2 i64 45, label %sw.bb2 i64 46, label %sw.bb2 ] sw.bb2: ; preds = %sw.bb1, %sw.bb1, %sw.bb1, %sw.bb1, %sw.bb1, %sw.bb1, %sw.bb1, %sw.bb1 store i32 128, i32* %retval, align 4 br label %return sw.default: ; preds = %sw.bb1 store i32 64, i32* %retval, align 4 br label %return sw.bb3: ; preds = %entry store i32 256, i32* %retval, align 4 br label %return sw.default4: ; preds = %entry store i32 256, i32* %retval, align 4 br label %return return: ; preds = %sw.default4, %sw.bb3, %sw.default, %sw.bb2, %sw.bb %5 = load i32, i32* %retval, align 4 ret i32 %5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail24warp_allocation_multipleERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %properties) #9 comdat { entry: %properties.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %major = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %0, i32 0, i32 0 %1 = load i32, i32* %major, align 8, !tbaa !144 %cmp = icmp sle i32 %1, 1 %cond = select i1 %cmp, i32 2, i32 1 %conv = sext i32 %cond to i64 ret i64 %conv } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riImiEET_S8_T0_(i64 %x, i32 %y) #9 comdat { entry: %x.addr = alloca i64, align 8 %y.addr = alloca i32, align 4 store i64 %x, i64* %x.addr, align 8, !tbaa !13 store i32 %y, i32* %y.addr, align 4, !tbaa !11 %0 = load i64, i64* %x.addr, align 8, !tbaa !13 %1 = load i32, i32* %y.addr, align 4, !tbaa !11 %sub = sub nsw i32 %1, 1 %conv = sext i32 %sub to i64 %add = add i64 %0, %conv %2 = load i32, i32* %y.addr, align 4, !tbaa !11 %conv1 = sext i32 %2 to i64 %div = udiv i64 %add, %conv1 ret i64 %div } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iImiEET_S8_T0_(i64 %x, i32 %y) #9 comdat { entry: %x.addr = alloca i64, align 8 %y.addr = alloca i32, align 4 store i64 %x, i64* %x.addr, align 8, !tbaa !13 store i32 %y, i32* %y.addr, align 4, !tbaa !11 %0 = load i32, i32* %y.addr, align 4, !tbaa !11 %conv = sext i32 %0 to i64 %1 = load i64, i64* %x.addr, align 8, !tbaa !13 %2 = load i32, i32* %y.addr, align 4, !tbaa !11 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riImiEET_S8_T0_(i64 %1, i32 %2) %mul = mul i64 %conv, %call ret i64 %mul } ; Function Attrs: inlinehint uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_iIiiEET_S8_T0_(i32 %x, i32 %y) #8 comdat { entry: %x.addr = alloca i32, align 4 %y.addr = alloca i32, align 4 store i32 %x, i32* %x.addr, align 4, !tbaa !11 store i32 %y, i32* %y.addr, align 4, !tbaa !11 %0 = load i32, i32* %y.addr, align 4, !tbaa !11 %1 = load i32, i32* %x.addr, align 4, !tbaa !11 %2 = load i32, i32* %y.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riIiiEET_S8_T0_(i32 %1, i32 %2) %mul = mul nsw i32 %0, %call ret i32 %mul } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail28num_sides_per_multiprocessorERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %properties) #9 comdat { entry: %retval = alloca i64, align 8 %properties.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %major = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %0, i32 0, i32 0 %1 = load i32, i32* %major, align 8, !tbaa !144 switch i32 %1, label %sw.default [ i32 1, label %sw.bb i32 2, label %sw.bb1 i32 3, label %sw.bb2 ] sw.bb: ; preds = %entry store i64 1, i64* %retval, align 8 br label %return sw.bb1: ; preds = %entry store i64 2, i64* %retval, align 8 br label %return sw.bb2: ; preds = %entry store i64 4, i64* %retval, align 8 br label %return sw.default: ; preds = %entry store i64 4, i64* %retval, align 8 br label %return return: ; preds = %sw.default, %sw.bb2, %sw.bb1, %sw.bb %2 = load i64, i64* %retval, align 8 ret i64 %2 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util4min_ImEET_RKS8_SA_(i64* dereferenceable(8) %lhs, i64* dereferenceable(8) %rhs) #9 comdat { entry: %lhs.addr = alloca i64*, align 8 %rhs.addr = alloca i64*, align 8 store i64* %lhs, i64** %lhs.addr, align 8, !tbaa !7 store i64* %rhs, i64** %rhs.addr, align 8, !tbaa !7 %0 = load i64*, i64** %rhs.addr, align 8 %1 = load i64, i64* %0, align 8, !tbaa !13 %2 = load i64*, i64** %lhs.addr, align 8 %3 = load i64, i64* %2, align 8, !tbaa !13 %cmp = icmp ult i64 %1, %3 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %4 = load i64*, i64** %rhs.addr, align 8 %5 = load i64, i64* %4, align 8, !tbaa !13 br label %cond.end cond.false: ; preds = %entry %6 = load i64*, i64** %lhs.addr, align 8 %7 = load i64, i64* %6, align 8, !tbaa !13 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %5, %cond.true ], [ %7, %cond.false ] ret i64 %cond } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riImmEET_S8_T0_(i64 %x, i64 %y) #9 comdat { entry: %x.addr = alloca i64, align 8 %y.addr = alloca i64, align 8 store i64 %x, i64* %x.addr, align 8, !tbaa !13 store i64 %y, i64* %y.addr, align 8, !tbaa !13 %0 = load i64, i64* %x.addr, align 8, !tbaa !13 %1 = load i64, i64* %y.addr, align 8, !tbaa !13 %sub = sub i64 %1, 1 %add = add i64 %0, %sub %2 = load i64, i64* %y.addr, align 8, !tbaa !13 %div = udiv i64 %add, %2 ret i64 %div } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_riIiiEET_S8_T0_(i32 %x, i32 %y) #9 comdat { entry: %x.addr = alloca i32, align 4 %y.addr = alloca i32, align 4 store i32 %x, i32* %x.addr, align 4, !tbaa !11 store i32 %y, i32* %y.addr, align 4, !tbaa !11 %0 = load i32, i32* %x.addr, align 4, !tbaa !11 %1 = load i32, i32* %y.addr, align 4, !tbaa !11 %sub = sub nsw i32 %1, 1 %add = add nsw i32 %0, %sub %2 = load i32, i32* %y.addr, align 4, !tbaa !11 %div = sdiv i32 %add, %2 ret i32 %div } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %lhs, i32* dereferenceable(4) %rhs) #1 comdat { entry: %lhs.addr = alloca i32*, align 8 %rhs.addr = alloca i32*, align 8 store i32* %lhs, i32** %lhs.addr, align 8, !tbaa !7 store i32* %rhs, i32** %rhs.addr, align 8, !tbaa !7 %0 = load i32*, i32** %rhs.addr, align 8 %1 = load i32, i32* %0, align 4, !tbaa !11 %2 = load i32*, i32** %lhs.addr, align 8 %3 = load i32, i32* %2, align 4, !tbaa !11 %cmp = icmp slt i32 %1, %3 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %4 = load i32*, i32** %rhs.addr, align 8 %5 = load i32, i32* %4, align 4, !tbaa !11 br label %cond.end cond.false: ; preds = %entry %6 = load i32*, i32** %lhs.addr, align 8 %7 = load i32, i32* %6, align 4, !tbaa !11 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %5, %cond.true ], [ %7, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_(%"class.thrust::tuple.155"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::device_ptr.69"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %t1, %"class.thrust::device_ptr.69"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %3 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKj(%"class.thrust::tuple.155"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::device_ptr.69"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i32* dereferenceable(4) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEEjNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_(%"class.thrust::system::cuda::detail::bulk_::detail::closure"* %this, %"class.thrust::tuple.155"* dereferenceable(24) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure"*, align 8 %args.addr = alloca %"class.thrust::tuple.155"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.155"* %args, %"class.thrust::tuple.155"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure", %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure", %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.155"*, %"class.thrust::tuple.155"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.155"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.155"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKj(%"class.thrust::tuple.155"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::device_ptr.69"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.155"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.155"* %this, %"class.thrust::tuple.155"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %t1, %"class.thrust::device_ptr.69"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.155"*, %"class.thrust::tuple.155"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.155"* %this1 to %"struct.thrust::detail::cons.156"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KjKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.156"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::device_ptr.69"* dereferenceable(8) %2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KjKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.156"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::device_ptr.69"* dereferenceable(8) %t2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t3, i32* dereferenceable(4) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.156"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t4.addr = alloca i32*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.156"* %this, %"struct.thrust::detail::cons.156"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %t2, %"class.thrust::device_ptr.69"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t3, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8, !tbaa !7 store i32* %t4, i32** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.156"*, %"struct.thrust::detail::cons.156"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.156", %"struct.thrust::detail::cons.156"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.156", %"struct.thrust::detail::cons.156"* %this1, i32 0, i32 1 %3 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8 %5 = load i32*, i32** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKS5_KS9_KjKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.157"* %tail, %"class.thrust::device_ptr.69"* dereferenceable(8) %3, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %4, i32* dereferenceable(4) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKS5_KS9_KjKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.157"* %this, %"class.thrust::device_ptr.69"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.157"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.157"* %this, %"struct.thrust::detail::cons.157"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.69"* %t1, %"class.thrust::device_ptr.69"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.157"*, %"struct.thrust::detail::cons.157"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.157", %"struct.thrust::detail::cons.157"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %t1.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %head to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.157", %"struct.thrust::detail::cons.157"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEC2IKS5_KjKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.158"* %tail, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEC2IKS5_KjKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.158"* %this, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t1, i32* dereferenceable(4) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.158"*, align 8 %t1.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t2.addr = alloca i32*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.158"* %this, %"struct.thrust::detail::cons.158"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::wrapped_function.146"* %t1, %"struct.thrust::detail::wrapped_function.146"** %t1.addr, align 8, !tbaa !7 store i32* %t2, i32** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.158"*, %"struct.thrust::detail::cons.158"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.158", %"struct.thrust::detail::cons.158"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::detail::wrapped_function.146"* %head to i8* %2 = bitcast %"struct.thrust::detail::wrapped_function.146"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.158", %"struct.thrust::detail::cons.158"* %this1, i32 0, i32 1 %3 = load i32*, i32** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIjNS_9null_typeEEC2IKjEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.159"* %tail, i32* dereferenceable(4) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIjNS_9null_typeEEC2IKjEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.159"* %this, i32* dereferenceable(4) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.159"*, align 8 %t1.addr = alloca i32*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.159"* %this, %"struct.thrust::detail::cons.159"** %this.addr, align 8, !tbaa !1 store i32* %t1, i32** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.159"*, %"struct.thrust::detail::cons.159"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.159", %"struct.thrust::detail::cons.159"* %this9, i32 0, i32 0 %9 = load i32*, i32** %t1.addr, align 8 %10 = load i32, i32* %9, align 4, !tbaa !11 store i32 %10, i32* %head, align 4, !tbaa !147 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEENS3_14parallel_groupIT_Lm0EEESA_m(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, i64 %exec.coerce0, i64 %exec.coerce1, i64 %size) #0 comdat { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %size.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %exec to { i64, i64 }* %1 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 0 store i64 %exec.coerce0, i64* %1, align 4 %2 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 1 store i64 %exec.coerce1, i64* %2, align 4 store i64 %size, i64* %size.addr, align 8, !tbaa !13 %3 = load i64, i64* %size.addr, align 8, !tbaa !13 %conv = trunc i64 %3 to i32 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 16, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %7 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %6, i32 0, i32 0 %8 = load i64, i64* %7, align 4 %9 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %6, i32 0, i32 1 %10 = load i64, i64* %9, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.result, i32 %conv, i64 %8, i64 %10, i32 2147483647) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_3conEmm(i64 %size, i64 %heap_size) #8 comdat { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %size.addr = alloca i64, align 8 %heap_size.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store i64 %size, i64* %size.addr, align 8, !tbaa !13 store i64 %heap_size, i64* %heap_size.addr, align 8, !tbaa !13 %0 = load i64, i64* %size.addr, align 8, !tbaa !13 %conv = trunc i64 %0 to i32 %1 = load i64, i64* %heap_size.addr, align 8, !tbaa !13 %conv1 = trunc i64 %1 to i32 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp, i32 0, i32 0 %2 = load i32, i32* %coerce.dive, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EEC2EiiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %retval, i32 %conv, i32 %conv1, i32 %2, i32 2147483647) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %retval to { i64, i64 }* %4 = load { i64, i64 }, { i64, i64 }* %3, align 4 ret { i64, i64 } %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* %this, i32 %size, i64 %exec.coerce0, i64 %exec.coerce1, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group"*, align 8 %size.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %exec to { i64, i64 }* %1 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 0 store i64 %exec.coerce0, i64* %1, align 4 %2 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 1 store i64 %exec.coerce1, i64* %2, align 4 store %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"** %this.addr, align 8, !tbaa !1 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::parallel_group"*, %"class.thrust::system::cuda::detail::bulk_::parallel_group"** %this.addr, align 8 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4 = load i32, i32* %size.addr, align 4, !tbaa !11 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 16, i32 4, i1 false) %7 = load i32, i32* %i.addr, align 4, !tbaa !11 %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %9 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %8, i32 0, i32 0 %10 = load i64, i64* %9, align 4 %11 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %8, i32 0, i32 1 %12 = load i64, i64* %11, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEC2EiSA_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 %4, i64 %10, i64 %12, i32 %7) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEC2EiSA_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this, i32 %sz, i64 %exec.coerce0, i64 %exec.coerce1, i32 %i) unnamed_addr #1 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"*, align 8 %sz.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %exec to { i64, i64 }* %1 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 0 store i64 %exec.coerce0, i64* %1, align 4 %2 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 1 store i64 %exec.coerce1, i64* %2, align 4 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"** %this.addr, align 8, !tbaa !1 store i32 %sz, i32* %sz.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"** %this.addr, align 8 %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this1, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 4, i1 false) %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this1, i32 0, i32 1 %5 = load i32, i32* %sz.addr, align 4, !tbaa !11 store i32 %5, i32* %m_size, align 4, !tbaa !117 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this1, i32 0, i32 2 %6 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %6, i32* %m_index, align 4, !tbaa !149 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %this, i32 %i) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::agent"*, align 8 %i.addr = alloca i32, align 4 store %"class.thrust::system::cuda::detail::bulk_::agent"* %this, %"class.thrust::system::cuda::detail::bulk_::agent"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::agent"*, %"class.thrust::system::cuda::detail::bulk_::agent"** %this.addr, align 8 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %this1, i32 0, i32 0 %0 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %0, i32* %m_index, align 4, !tbaa !150 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EEC2EiiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this, i32 %size, i32 %heap_size, i32 %exec.coerce, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group"*, align 8 %size.addr = alloca i32, align 4 %heap_size.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this, %"class.thrust::system::cuda::detail::bulk_::concurrent_group"** %this.addr, align 8, !tbaa !1 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::concurrent_group"*, %"class.thrust::system::cuda::detail::bulk_::concurrent_group"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this1 to %"class.thrust::system::cuda::detail::bulk_::parallel_group.150"* %1 = load i32, i32* %size.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 4, i32 4, i1 false), !tbaa.struct !151 %4 = load i32, i32* %i.addr, align 4, !tbaa !11 %coerce.dive2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp, i32 0, i32 0 %5 = load i32, i32* %coerce.dive2, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm1EEELm0EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.150"* %0, i32 %1, i32 %5, i32 %4) %m_heap_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::concurrent_group", %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this1, i32 0, i32 1 %6 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %6, i32* %m_heap_size, align 4, !tbaa !152 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm1EEELm0EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.150"* %this, i32 %size, i32 %exec.coerce, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.150"*, align 8 %size.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::parallel_group.150"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.150"** %this.addr, align 8, !tbaa !1 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::parallel_group.150"*, %"class.thrust::system::cuda::detail::bulk_::parallel_group.150"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.150"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %1 = load i32, i32* %size.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 4, i32 4, i1 false), !tbaa.struct !151 %4 = load i32, i32* %i.addr, align 4, !tbaa !11 %coerce.dive2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp, i32 0, i32 0 %5 = load i32, i32* %coerce.dive2, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %0, i32 %1, i32 %5, i32 %4) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %this, i32 %sz, i32 %exec.coerce, i32 %i) unnamed_addr #1 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"*, align 8 %sz.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"** %this.addr, align 8, !tbaa !1 store i32 %sz, i32* %sz.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"** %this.addr, align 8 %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %this_exec to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 4, i32 4, i1 false), !tbaa.struct !151 %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %this1, i32 0, i32 1 %2 = load i32, i32* %sz.addr, align 4, !tbaa !11 store i32 %2, i32* %m_size, align 4, !tbaa !120 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %this1, i32 0, i32 2 %3 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %3, i32* %m_index, align 4, !tbaa !153 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ES1_S1_(%"class.thrust::tuple.152"* %this, i64* dereferenceable(8) %t0, i64* dereferenceable(8) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.152"*, align 8 %t0.addr = alloca i64*, align 8 %t1.addr = alloca i64*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.152"* %this, %"class.thrust::tuple.152"** %this.addr, align 8, !tbaa !1 store i64* %t0, i64** %t0.addr, align 8, !tbaa !7 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.152"*, %"class.thrust::tuple.152"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.152"* %this1 to %"struct.thrust::detail::cons.153"* %1 = load i64*, i64** %t0.addr, align 8 %2 = load i64*, i64** %t1.addr, align 8 call void @_ZN6thrust6detail4consIRlNS1_IS2_NS_9null_typeEEEEC2IllKS3_S7_S7_S7_S7_S7_S7_S7_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.153"* %0, i64* dereferenceable(8) %1, i64* dereferenceable(8) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIRlNS1_IS2_NS_9null_typeEEEEC2IllKS3_S7_S7_S7_S7_S7_S7_S7_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.153"* %this, i64* dereferenceable(8) %t1, i64* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.153"*, align 8 %t1.addr = alloca i64*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.153"* %this, %"struct.thrust::detail::cons.153"** %this.addr, align 8, !tbaa !1 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.153"*, %"struct.thrust::detail::cons.153"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.153", %"struct.thrust::detail::cons.153"* %this1, i32 0, i32 0 %0 = load i64*, i64** %t1.addr, align 8 store i64* %0, i64** %head, align 8, !tbaa !7 %tail = getelementptr inbounds %"struct.thrust::detail::cons.153", %"struct.thrust::detail::cons.153"* %this1, i32 0, i32 1 %1 = load i64*, i64** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRlNS_9null_typeEEC2IlEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.154"* %tail, i64* dereferenceable(8) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIRlNS_9null_typeEEC2IlEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.154"* %this, i64* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.154"*, align 8 %t1.addr = alloca i64*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.154"* %this, %"struct.thrust::detail::cons.154"** %this.addr, align 8, !tbaa !1 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.154"*, %"struct.thrust::detail::cons.154"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.154", %"struct.thrust::detail::cons.154"* %this9, i32 0, i32 0 %9 = load i64*, i64** %t1.addr, align 8 store i64* %9, i64** %head, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::device_ptr.69"* dereferenceable(8) %a2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %a3, i64* dereferenceable(8) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %a4.addr = alloca i64*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.161", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %a2, %"class.thrust::device_ptr.69"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %a3, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8, !tbaa !7 store i64* %a4, i64** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8 %3 = load i64*, i64** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_(%"class.thrust::tuple.161"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::device_ptr.69"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i64* dereferenceable(8) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEElNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %agg.result, %"class.thrust::tuple.161"* dereferenceable(32) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_(%"class.thrust::tuple.161"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::device_ptr.69"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %t1, %"class.thrust::device_ptr.69"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %3 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKl(%"class.thrust::tuple.161"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::device_ptr.69"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i64* dereferenceable(8) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEElNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %this, %"class.thrust::tuple.161"* dereferenceable(32) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"*, align 8 %args.addr = alloca %"class.thrust::tuple.161"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.161"* %args, %"class.thrust::tuple.161"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.161"*, %"class.thrust::tuple.161"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.161"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.161"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 32, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKl(%"class.thrust::tuple.161"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::device_ptr.69"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.161"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.161"* %this, %"class.thrust::tuple.161"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %t1, %"class.thrust::device_ptr.69"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.161"*, %"class.thrust::tuple.161"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.161"* %this1 to %"struct.thrust::detail::cons.162"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KlKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.162"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::device_ptr.69"* dereferenceable(8) %2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KlKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.162"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::device_ptr.69"* dereferenceable(8) %t2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t3, i64* dereferenceable(8) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.162"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t4.addr = alloca i64*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.162"* %this, %"struct.thrust::detail::cons.162"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %t2, %"class.thrust::device_ptr.69"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t3, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8, !tbaa !7 store i64* %t4, i64** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.162"*, %"struct.thrust::detail::cons.162"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.162", %"struct.thrust::detail::cons.162"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.162", %"struct.thrust::detail::cons.162"* %this1, i32 0, i32 1 %3 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8 %5 = load i64*, i64** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKS5_KS9_KlKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.163"* %tail, %"class.thrust::device_ptr.69"* dereferenceable(8) %3, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %4, i64* dereferenceable(8) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_10device_ptrINS_4pairIaaEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKS5_KS9_KlKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.163"* %this, %"class.thrust::device_ptr.69"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.163"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.163"* %this, %"struct.thrust::detail::cons.163"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.69"* %t1, %"class.thrust::device_ptr.69"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.163"*, %"struct.thrust::detail::cons.163"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.163", %"struct.thrust::detail::cons.163"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %t1.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.69"* %head to i8* %2 = bitcast %"class.thrust::device_ptr.69"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.163", %"struct.thrust::detail::cons.163"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEC2IKS5_KlKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.164"* %tail, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEC2IKS5_KlKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.164"* %this, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t1, i64* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.164"*, align 8 %t1.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.164"* %this, %"struct.thrust::detail::cons.164"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::wrapped_function.146"* %t1, %"struct.thrust::detail::wrapped_function.146"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.164"*, %"struct.thrust::detail::cons.164"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.164", %"struct.thrust::detail::cons.164"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::detail::wrapped_function.146"* %head to i8* %2 = bitcast %"struct.thrust::detail::wrapped_function.146"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.164", %"struct.thrust::detail::cons.164"* %this1, i32 0, i32 1 %3 = load i64*, i64** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIlNS_9null_typeEEC2IKlEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.165"* %tail, i64* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIlNS_9null_typeEEC2IKlEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.165"* %this, i64* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.165"*, align 8 %t1.addr = alloca i64*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.165"* %this, %"struct.thrust::detail::cons.165"** %this.addr, align 8, !tbaa !1 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.165"*, %"struct.thrust::detail::cons.165"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.165", %"struct.thrust::detail::cons.165"* %this9, i32 0, i32 0 %9 = load i64*, i64** %t1.addr, align 8 %10 = load i64, i64* %9, align 8, !tbaa !13 store i64 %10, i64* %head, align 8, !tbaa !154 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 40, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 40, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch"*, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8 %stream_valid = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch", %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this1, i32 0, i32 0 %0 = load i8, i8* %stream_valid, align 8, !tbaa !156, !range !77 %tobool = trunc i8 %0 to i1 ret i1 %tobool } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 40, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch"*, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8 %e = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch", %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.result to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %e to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch"*, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8 %s = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch", %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this1, i32 0, i32 2 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !159 ret %struct.CUstream_st* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch"*, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8 %be = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch", %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this1, i32 0, i32 3 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %be, align 8, !tbaa !160 ret %struct.CUevent_st* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 40, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } declare i32 @cudaStreamWaitEvent(%struct.CUstream_st*, %struct.CUevent_st*, i32) #3 ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %task to i8* call void @llvm.lifetime.start(i64 72, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 40, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %task to i8* call void @llvm.lifetime.end(i64 72, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %struct.CUstream_st* %s, i1 zeroext %owns_stream) #8 comdat align 2 { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %owns_stream.addr = alloca i8, align 1 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %frombool = zext i1 %owns_stream to i8 store i8 %frombool, i8* %owns_stream.addr, align 1, !tbaa !75 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %1 = load i8, i8* %owns_stream.addr, align 1, !tbaa !75, !range !77 %tobool = trunc i8 %1 to i1 call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvEC2EP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.result, %struct.CUstream_st* %0, i1 zeroext %tobool) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.166"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this, %"class.thrust::system::cuda::detail::bulk_::concurrent_group"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::concurrent_group"*, %"class.thrust::system::cuda::detail::bulk_::concurrent_group"** %this.addr, align 8 %m_heap_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::concurrent_group", %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this1, i32 0, i32 1 %0 = load i32, i32* %m_heap_size, align 4, !tbaa !152 ret i32 %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.160", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 40, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !161 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.167"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, i32 %size, i64 %block.coerce0, i64 %block.coerce1, i32 %index) #0 comdat { entry: %block = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %block to { i64, i64 }* %1 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 0 store i64 %block.coerce0, i64* %1, align 4 %2 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 1 store i64 %block.coerce1, i64* %2, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %3 = load i32, i32* %size.addr, align 4, !tbaa !11 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %block to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 16, i32 4, i1 false) %6 = load i32, i32* %index.addr, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %8 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %7, i32 0, i32 0 %9 = load i64, i64* %8, align 4 %10 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %7, i32 0, i32 1 %11 = load i64, i64* %10, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4makeEiSA_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %3, i64 %9, i64 %11, i32 %6) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %size, i32 %heap_size, i32 %thread.coerce, i32 %index) #0 comdat { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %thread = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 %size.addr = alloca i32, align 4 %heap_size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %thread, i32 0, i32 0 store i32 %thread.coerce, i32* %coerce.dive, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %0 = load i32, i32* %size.addr, align 4, !tbaa !11 %1 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %thread to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 4, i32 4, i1 false), !tbaa.struct !151 %4 = load i32, i32* %index.addr, align 4, !tbaa !11 %coerce.dive1 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp, i32 0, i32 0 %5 = load i32, i32* %coerce.dive1, align 4 %call = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEE4makeEiiS8_i(i32 %0, i32 %1, i32 %5, i32 %4) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %retval to { i64, i64 }* %7 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %6, i32 0, i32 0 %8 = extractvalue { i64, i64 } %call, 0 store i64 %8, i64* %7, align 4 %9 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %6, i32 0, i32 1 %10 = extractvalue { i64, i64 } %call, 1 store i64 %10, i64* %9, align 4 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %retval to { i64, i64 }* %12 = load { i64, i64 }, { i64, i64 }* %11, align 4 ret { i64, i64 } %12 } ; Function Attrs: inlinehint uwtable define linkonce_odr { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %t0, i32* dereferenceable(4) %t1) #8 comdat { entry: %retval = alloca %"class.thrust::tuple.173", align 8 %t0.addr = alloca i32*, align 8 %t1.addr = alloca i32*, align 8 store i32* %t0, i32** %t0.addr, align 8, !tbaa !7 store i32* %t1, i32** %t1.addr, align 8, !tbaa !7 %0 = load i32*, i32** %t0.addr, align 8 %1 = load i32*, i32** %t1.addr, align 8 call void @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ES1_S1_(%"class.thrust::tuple.173"* %retval, i32* dereferenceable(4) %0, i32* dereferenceable(4) %1) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %retval, i32 0, i32 0 %2 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %3 = load { i32*, i32* }, { i32*, i32* }* %2, align 8 ret { i32*, i32* } %3 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %this, %"struct.thrust::pair.82"* dereferenceable(8) %k) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.173"*, align 8 %k.addr = alloca %"struct.thrust::pair.82"*, align 8 store %"class.thrust::tuple.173"* %this, %"class.thrust::tuple.173"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.82"* %k, %"struct.thrust::pair.82"** %k.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.173"*, %"class.thrust::tuple.173"** %this.addr, align 8 %0 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %k.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %0, i32 0, i32 0 %1 = load i32, i32* %first, align 4, !tbaa !24 %2 = bitcast %"class.thrust::tuple.173"* %this1 to %"struct.thrust::detail::cons.174"* %head = getelementptr inbounds %"struct.thrust::detail::cons.174", %"struct.thrust::detail::cons.174"* %2, i32 0, i32 0 %ref = load i32*, i32** %head, align 8, !tbaa !7 store i32 %1, i32* %ref, align 4, !tbaa !11 %3 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %k.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %3, i32 0, i32 1 %4 = load i32, i32* %second, align 4, !tbaa !28 %5 = bitcast %"class.thrust::tuple.173"* %this1 to %"struct.thrust::detail::cons.174"* %tail = getelementptr inbounds %"struct.thrust::detail::cons.174", %"struct.thrust::detail::cons.174"* %5, i32 0, i32 1 %head2 = getelementptr inbounds %"struct.thrust::detail::cons.175", %"struct.thrust::detail::cons.175"* %tail, i32 0, i32 0 %ref3 = load i32*, i32** %head2, align 8, !tbaa !7 store i32 %4, i32* %ref3, align 4, !tbaa !11 ret %"class.thrust::tuple.173"* %this1 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ES1_S1_(%"class.thrust::tuple.173"* %this, i32* dereferenceable(4) %t0, i32* dereferenceable(4) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.173"*, align 8 %t0.addr = alloca i32*, align 8 %t1.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.173"* %this, %"class.thrust::tuple.173"** %this.addr, align 8, !tbaa !1 store i32* %t0, i32** %t0.addr, align 8, !tbaa !7 store i32* %t1, i32** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.173"*, %"class.thrust::tuple.173"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.173"* %this1 to %"struct.thrust::detail::cons.174"* %1 = load i32*, i32** %t0.addr, align 8 %2 = load i32*, i32** %t1.addr, align 8 call void @_ZN6thrust6detail4consIRiNS1_IS2_NS_9null_typeEEEEC2IiiKS3_S7_S7_S7_S7_S7_S7_S7_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.174"* %0, i32* dereferenceable(4) %1, i32* dereferenceable(4) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIRiNS1_IS2_NS_9null_typeEEEEC2IiiKS3_S7_S7_S7_S7_S7_S7_S7_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.174"* %this, i32* dereferenceable(4) %t1, i32* dereferenceable(4) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.174"*, align 8 %t1.addr = alloca i32*, align 8 %t2.addr = alloca i32*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.174"* %this, %"struct.thrust::detail::cons.174"** %this.addr, align 8, !tbaa !1 store i32* %t1, i32** %t1.addr, align 8, !tbaa !7 store i32* %t2, i32** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.174"*, %"struct.thrust::detail::cons.174"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.174", %"struct.thrust::detail::cons.174"* %this1, i32 0, i32 0 %0 = load i32*, i32** %t1.addr, align 8 store i32* %0, i32** %head, align 8, !tbaa !7 %tail = getelementptr inbounds %"struct.thrust::detail::cons.174", %"struct.thrust::detail::cons.174"* %this1, i32 0, i32 1 %1 = load i32*, i32** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRiNS_9null_typeEEC2IiEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.175"* %tail, i32* dereferenceable(4) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIRiNS_9null_typeEEC2IiEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.175"* %this, i32* dereferenceable(4) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.175"*, align 8 %t1.addr = alloca i32*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.175"* %this, %"struct.thrust::detail::cons.175"** %this.addr, align 8, !tbaa !1 store i32* %t1, i32** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.175"*, %"struct.thrust::detail::cons.175"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.175", %"struct.thrust::detail::cons.175"* %this9, i32 0, i32 0 %9 = load i32*, i32** %t1.addr, align 8 store i32* %9, i32** %head, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attributes, i64 %blocks_per_processor) #8 comdat { entry: %properties.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attributes.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %blocks_per_processor.addr = alloca i64, align 8 %smem_per_processor = alloca i64, align 8 %smem_allocation_unit = alloca i64, align 8 %total_smem_per_block = alloca i64, align 8 %static_smem_per_block = alloca i64, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %properties, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attributes, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8, !tbaa !7 store i64 %blocks_per_processor, i64* %blocks_per_processor.addr, align 8, !tbaa !13 %0 = bitcast i64* %smem_per_processor to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %sharedMemPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %1, i32 0, i32 7 %2 = load i64, i64* %sharedMemPerBlock, align 8, !tbaa !124 store i64 %2, i64* %smem_per_processor, align 8, !tbaa !13 %3 = bitcast i64* %smem_allocation_unit to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %properties.addr, align 8 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail20smem_allocation_unitERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %4) store i64 %call, i64* %smem_allocation_unit, align 8, !tbaa !13 %5 = bitcast i64* %total_smem_per_block to i8* call void @llvm.lifetime.start(i64 8, i8* %5) #5 %6 = load i64, i64* %smem_per_processor, align 8, !tbaa !13 %7 = load i64, i64* %blocks_per_processor.addr, align 8, !tbaa !13 %div = udiv i64 %6, %7 %8 = load i64, i64* %smem_allocation_unit, align 8, !tbaa !13 %call1 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_zImmEET_S8_T0_(i64 %div, i64 %8) store i64 %call1, i64* %total_smem_per_block, align 8, !tbaa !13 %9 = bitcast i64* %static_smem_per_block to i8* call void @llvm.lifetime.start(i64 8, i8* %9) #5 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attributes.addr, align 8 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %10, i32 0, i32 5 %11 = load i64, i64* %sharedSizeBytes, align 8, !tbaa !140 store i64 %11, i64* %static_smem_per_block, align 8, !tbaa !13 %12 = load i64, i64* %total_smem_per_block, align 8, !tbaa !13 %13 = load i64, i64* %static_smem_per_block, align 8, !tbaa !13 %sub = sub i64 %12, %13 %14 = bitcast i64* %static_smem_per_block to i8* call void @llvm.lifetime.end(i64 8, i8* %14) #5 %15 = bitcast i64* %total_smem_per_block to i8* call void @llvm.lifetime.end(i64 8, i8* %15) #5 %16 = bitcast i64* %smem_allocation_unit to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 %17 = bitcast i64* %smem_per_processor to i8* call void @llvm.lifetime.end(i64 8, i8* %17) #5 ret i64 %sub } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util7round_zImmEET_S8_T0_(i64 %x, i64 %y) #8 comdat { entry: %x.addr = alloca i64, align 8 %y.addr = alloca i64, align 8 store i64 %x, i64* %x.addr, align 8, !tbaa !13 store i64 %y, i64* %y.addr, align 8, !tbaa !13 %0 = load i64, i64* %y.addr, align 8, !tbaa !13 %1 = load i64, i64* %x.addr, align 8, !tbaa !13 %2 = load i64, i64* %y.addr, align 8, !tbaa !13 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_rzImmEET_S8_T0_(i64 %1, i64 %2) %mul = mul i64 %0, %call ret i64 %mul } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail4util9divide_rzImmEET_S8_T0_(i64 %x, i64 %y) #9 comdat { entry: %x.addr = alloca i64, align 8 %y.addr = alloca i64, align 8 store i64 %x, i64* %x.addr, align 8, !tbaa !13 store i64 %y, i64* %y.addr, align 8, !tbaa !13 %0 = load i64, i64* %x.addr, align 8, !tbaa !13 %1 = load i64, i64* %y.addr, align 8, !tbaa !13 %div = udiv i64 %0, %1 ret i64 %div } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4makeEiSA_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, i32 %size, i64 %block.coerce0, i64 %block.coerce1, i32 %index) #0 comdat align 2 { entry: %block = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %block to { i64, i64 }* %1 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 0 store i64 %block.coerce0, i64* %1, align 4 %2 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 1 store i64 %block.coerce1, i64* %2, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %3 = load i32, i32* %size.addr, align 4, !tbaa !11 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %block to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 16, i32 4, i1 false) %6 = load i32, i32* %index.addr, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %8 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %7, i32 0, i32 0 %9 = load i64, i64* %8, align 4 %10 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %7, i32 0, i32 1 %11 = load i64, i64* %10, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.result, i32 %3, i64 %9, i64 %11, i32 %6) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEE4makeEiiS8_i(i32 %size, i32 %heap_size, i32 %thread.coerce, i32 %index) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %thread = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 %size.addr = alloca i32, align 4 %heap_size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %thread, i32 0, i32 0 store i32 %thread.coerce, i32* %coerce.dive, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %0 = load i32, i32* %size.addr, align 4, !tbaa !11 %1 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent"* %thread to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 4, i32 4, i1 false), !tbaa.struct !151 %4 = load i32, i32* %index.addr, align 4, !tbaa !11 %coerce.dive1 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp, i32 0, i32 0 %5 = load i32, i32* %coerce.dive1, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EEC2EiiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %retval, i32 %0, i32 %1, i32 %5, i32 %4) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %retval to { i64, i64 }* %7 = load { i64, i64 }, { i64, i64 }* %6, align 4 ret { i64, i64 } %7 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.160"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 40, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.171"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.168"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 72, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* byval align 8 %agg.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* %message) #9 comdat { entry: %message.addr = alloca i8*, align 8 store i8* %message, i8** %message.addr, align 8, !tbaa !1 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 72, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIaaEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIaaEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } declare i32 @cudaConfigureCall(i64, i32, i64, i32, i64, %struct.CUstream_st*) #3 ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN4dim3C2Ejjj(%struct.dim3* %this, i32 %vx, i32 %vy, i32 %vz) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %struct.dim3*, align 8 %vx.addr = alloca i32, align 4 %vy.addr = alloca i32, align 4 %vz.addr = alloca i32, align 4 store %struct.dim3* %this, %struct.dim3** %this.addr, align 8, !tbaa !1 store i32 %vx, i32* %vx.addr, align 4, !tbaa !11 store i32 %vy, i32* %vy.addr, align 4, !tbaa !11 store i32 %vz, i32* %vz.addr, align 4, !tbaa !11 %this1 = load %struct.dim3*, %struct.dim3** %this.addr, align 8 %x = getelementptr inbounds %struct.dim3, %struct.dim3* %this1, i32 0, i32 0 %0 = load i32, i32* %vx.addr, align 4, !tbaa !11 store i32 %0, i32* %x, align 4, !tbaa !163 %y = getelementptr inbounds %struct.dim3, %struct.dim3* %this1, i32 0, i32 1 %1 = load i32, i32* %vy.addr, align 4, !tbaa !11 store i32 %1, i32* %y, align 4, !tbaa !165 %z = getelementptr inbounds %struct.dim3, %struct.dim3* %this1, i32 0, i32 2 %2 = load i32, i32* %vz.addr, align 4, !tbaa !11 store i32 %2, i32* %z, align 4, !tbaa !166 ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIaaEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 72, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIaaEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.170"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6futureIvEC2EP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* %this, %struct.CUstream_st* %s, i1 zeroext %owns_stream) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::future"*, align 8 %s.addr = alloca %struct.CUstream_st*, align 8 %owns_stream.addr = alloca i8, align 1 store %"class.thrust::system::cuda::detail::bulk_::future"* %this, %"class.thrust::system::cuda::detail::bulk_::future"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %frombool = zext i1 %owns_stream to i8 store i8 %frombool, i8* %owns_stream.addr, align 1, !tbaa !75 %this1 = load %"class.thrust::system::cuda::detail::bulk_::future"*, %"class.thrust::system::cuda::detail::bulk_::future"** %this.addr, align 8 %m_stream = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::future", %"class.thrust::system::cuda::detail::bulk_::future"* %this1, i32 0, i32 0 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUstream_st* %0, %struct.CUstream_st** %m_stream, align 8, !tbaa !116 %m_owns_stream = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::future", %"class.thrust::system::cuda::detail::bulk_::future"* %this1, i32 0, i32 2 %1 = load i8, i8* %owns_stream.addr, align 1, !tbaa !75, !range !77 %tobool = trunc i8 %1 to i1 %frombool2 = zext i1 %tobool to i8 store i8 %frombool2, i8* %m_owns_stream, align 8, !tbaa !115 %m_event = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::future", %"class.thrust::system::cuda::detail::bulk_::future"* %this1, i32 0, i32 1 %call = call i32 @cudaEventCreateWithFlags(%struct.CUevent_st** %m_event, i32 2) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.38, i32 0, i32 0)) %m_event3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::future", %"class.thrust::system::cuda::detail::bulk_::future"* %this1, i32 0, i32 1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %m_event3, align 8, !tbaa !113 %m_stream4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::future", %"class.thrust::system::cuda::detail::bulk_::future"* %this1, i32 0, i32 0 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %m_stream4, align 8, !tbaa !116 %call5 = call i32 @cudaEventRecord(%struct.CUevent_st* %2, %struct.CUstream_st* %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.39, i32 0, i32 0)) ret void } declare i32 @cudaEventCreateWithFlags(%struct.CUevent_st**, i32) #3 declare i32 @cudaEventRecord(%struct.CUevent_st*, %struct.CUstream_st*) #3 declare i32 @cudaStreamCreate(%struct.CUstream_st**) #3 ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m(%"class.thrust::system::cuda::detail::bulk_::async_launch"* noalias sret %agg.result, %struct.CUstream_st* %s, i64 %exec.coerce0, i64 %exec.coerce1, i64 %num_groups) #8 comdat { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %s.addr = alloca %struct.CUstream_st*, align 8 %num_groups.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %exec to { i64, i64 }* %1 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 0 store i64 %exec.coerce0, i64* %1, align 4 %2 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %0, i32 0, i32 1 store i64 %exec.coerce1, i64* %2, align 4 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store i64 %num_groups, i64* %num_groups.addr, align 8, !tbaa !13 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp1 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 4, i1 false) %5 = load i64, i64* %num_groups.addr, align 8, !tbaa !13 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp1 to { i64, i64 }* %7 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %6, i32 0, i32 0 %8 = load i64, i64* %7, align 4 %9 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %6, i32 0, i32 1 %10 = load i64, i64* %9, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEENS3_14parallel_groupIT_Lm0EEESA_m(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, i64 %8, i64 %10, i64 %5) %11 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %struct.CUstream_st* %11, %struct.CUevent_st* null) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %exec, %struct.CUstream_st* %s, %struct.CUevent_st* %be) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch"*, align 8 %s.addr = alloca %struct.CUstream_st*, align 8 %be.addr = alloca %struct.CUevent_st*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %be, %struct.CUevent_st** %be.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch"*, %"class.thrust::system::cuda::detail::bulk_::async_launch"** %this.addr, align 8 %stream_valid = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch", %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this1, i32 0, i32 0 store i8 1, i8* %stream_valid, align 8, !tbaa !156 %e = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch", %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %e to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) %s2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch", %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this1, i32 0, i32 2 %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUstream_st* %2, %struct.CUstream_st** %s2, align 8, !tbaa !159 %be3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch", %"class.thrust::system::cuda::detail::bulk_::async_launch"* %this1, i32 0, i32 3 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %be.addr, align 8, !tbaa !1 store %struct.CUevent_st* %3, %struct.CUevent_st** %be3, align 8, !tbaa !160 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_6futureIvE5validEv(%"class.thrust::system::cuda::detail::bulk_::future"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::future"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::future"* %this, %"class.thrust::system::cuda::detail::bulk_::future"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::future"*, %"class.thrust::system::cuda::detail::bulk_::future"** %this.addr, align 8 %m_event = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::future", %"class.thrust::system::cuda::detail::bulk_::future"* %this1, i32 0, i32 1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %m_event, align 8, !tbaa !113 %cmp = icmp ne %struct.CUevent_st* %0, null ret i1 %cmp } declare i32 @cudaEventDestroy(%struct.CUevent_st*) #3 declare i32 @printf(i8*, ...) #3 declare i32 @cudaStreamDestroy(%struct.CUstream_st*) #3 ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 32, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 32, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 32, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 32, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %task to i8* call void @llvm.lifetime.start(i64 64, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 32, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 64, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %task to i8* call void @llvm.lifetime.end(i64 64, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 32, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !167 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 64, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base", %"class.thrust::system::cuda::detail::bulk_::detail::task_base"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 32, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base", %"class.thrust::system::cuda::detail::bulk_::detail::task_base"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 64, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 64, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIaaEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIaaEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIaaEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIaaEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 64, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIaaEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.66"* %f1, %"class.thrust::detail::normal_iterator.66"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.66"* %f2, %"class.thrust::detail::normal_iterator.66"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 store %"class.thrust::detail::normal_iterator.66"* %f1, %"class.thrust::detail::normal_iterator.66"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.66"* %f2, %"class.thrust::detail::normal_iterator.66"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.66"* %1 to %"class.thrust::iterator_adaptor.67"* %3 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.66"* %3 to %"class.thrust::iterator_adaptor.67"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.67"* %2, %"class.thrust::iterator_adaptor.67"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.67"* %this, %"class.thrust::iterator_adaptor.67"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.67"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.67"*, align 8 store %"class.thrust::iterator_adaptor.67"* %this, %"class.thrust::iterator_adaptor.67"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.67"* %y, %"class.thrust::iterator_adaptor.67"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.67"*, %"class.thrust::iterator_adaptor.67"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.67"*, %"class.thrust::iterator_adaptor.67"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.67"* %0) %1 = bitcast %"class.thrust::device_ptr.69"* %call to %"class.thrust::iterator_facade.72"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %this1, i32 0, i32 0 %2 = bitcast %"class.thrust::device_ptr.69"* %m_iterator to %"class.thrust::iterator_facade.72"* %call2 = call i64 @_ZN6thrustmiINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElS4_S3_S8_S9_SB_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.72"* dereferenceable(1) %1, %"class.thrust::iterator_facade.72"* dereferenceable(1) %2) ret i64 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_10device_ptrINS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElS4_S3_S8_S9_SB_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.72"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.72"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.72"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.72"*, align 8 store %"class.thrust::iterator_facade.72"* %lhs, %"class.thrust::iterator_facade.72"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.72"* %rhs, %"class.thrust::iterator_facade.72"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.72"*, %"class.thrust::iterator_facade.72"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.72"* %0 to %"class.thrust::device_ptr.69"* %2 = load %"class.thrust::iterator_facade.72"*, %"class.thrust::iterator_facade.72"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.72"* %2 to %"class.thrust::device_ptr.69"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIaaEEEES5_EENS_6detail20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::device_ptr.69"* dereferenceable(8) %1, %"class.thrust::device_ptr.69"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIaaEEEES5_EENS_6detail20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::device_ptr.69"* dereferenceable(8) %f1, %"class.thrust::device_ptr.69"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::device_ptr.69"* %f1, %"class.thrust::device_ptr.69"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %f2, %"class.thrust::device_ptr.69"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %f1.addr, align 8 %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIaaEEEES5_EENT_15difference_typeERKS6_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr.69"* dereferenceable(8) %0, %"class.thrust::device_ptr.69"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIaaEEEES5_EENT_15difference_typeERKS6_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr.69"* dereferenceable(8) %f1, %"class.thrust::device_ptr.69"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr.69"*, align 8 store %"class.thrust::device_ptr.69"* %f1, %"class.thrust::device_ptr.69"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.69"* %f2, %"class.thrust::device_ptr.69"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %f1.addr, align 8 %2 = bitcast %"class.thrust::device_ptr.69"* %1 to %"class.thrust::iterator_adaptor.71"* %3 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %f2.addr, align 8 %4 = bitcast %"class.thrust::device_ptr.69"* %3 to %"class.thrust::iterator_adaptor.71"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE11distance_toIS4_S5_S3_S9_SA_SC_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.71"* %2, %"class.thrust::iterator_adaptor.71"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE11distance_toIS4_S5_S3_S9_SA_SC_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.71"* %this, %"class.thrust::iterator_adaptor.71"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.71"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.71"*, align 8 store %"class.thrust::iterator_adaptor.71"* %this, %"class.thrust::iterator_adaptor.71"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.71"* %y, %"class.thrust::iterator_adaptor.71"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.71"*, %"class.thrust::iterator_adaptor.71"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.71"*, %"class.thrust::iterator_adaptor.71"** %y.addr, align 8 %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIaaEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE4baseEv(%"class.thrust::iterator_adaptor.71"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %this1, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !105 %sub.ptr.lhs.cast = ptrtoint %"struct.thrust::pair"* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %"struct.thrust::pair"* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 ret i64 %sub.ptr.div } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::contiguous_storage.47"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.134", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.47"*, align 8 store %"class.thrust::detail::contiguous_storage.47"* %this, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.47"*, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPKNS_4pairIaaEEEC2IPS3_EERKNS1_IT_EEPNS0_21enable_if_convertibleIS9_S5_vE4typeE(%"class.thrust::detail::normal_iterator.134"* %retval, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %m_begin, i8* null) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPKNS_4pairIaaEEEC2IPS3_EERKNS1_IT_EEPNS0_21enable_if_convertibleIS9_S5_vE4typeE(%"class.thrust::detail::normal_iterator.134"* %this, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 %other.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca %"struct.thrust::pair"*, align 8 store %"class.thrust::detail::normal_iterator.134"* %this, %"class.thrust::detail::normal_iterator.134"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.51"* %other, %"class.thrust::detail::normal_iterator.51"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %this.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %this1 to %"class.thrust::iterator_adaptor.135"* %2 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %other.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.51"* %2 to %"class.thrust::iterator_adaptor.52"* %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.52"* %3) %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 store %"struct.thrust::pair"* %4, %"struct.thrust::pair"** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_(%"class.thrust::iterator_adaptor.135"* %1, %"struct.thrust::pair"** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_(%"class.thrust::iterator_adaptor.135"* %this, %"struct.thrust::pair"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.135"*, align 8 %iter.addr = alloca %"struct.thrust::pair"**, align 8 store %"class.thrust::iterator_adaptor.135"* %this, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"** %iter, %"struct.thrust::pair"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.135"*, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.135"* %this1 to %"class.thrust::iterator_facade.136"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"**, %"struct.thrust::pair"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %1, align 8, !tbaa !1 store %"struct.thrust::pair"* %2, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !107 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.134"* %i, %"class.thrust::detail::normal_iterator.134"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.134"* %i, %"class.thrust::detail::normal_iterator.134"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.134"* %i, %"class.thrust::detail::normal_iterator.134"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %1 to %"class.thrust::iterator_facade.136"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEpLEl(%"class.thrust::iterator_facade.136"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEpLEl(%"class.thrust::iterator_facade.136"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.136"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.136"* %this, %"class.thrust::iterator_facade.136"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.136"*, %"class.thrust::iterator_facade.136"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.136"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEEvRT_NS9_15difference_typeE(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.136"* %this1) ret %"class.thrust::detail::normal_iterator.134"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEEvRT_NS9_15difference_typeE(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.134"* %f, %"class.thrust::detail::normal_iterator.134"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %0 to %"class.thrust::iterator_adaptor.135"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.135"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.136"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.136"*, align 8 store %"class.thrust::iterator_facade.136"* %this, %"class.thrust::iterator_facade.136"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.136"*, %"class.thrust::iterator_facade.136"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.136"* %this1 to %"class.thrust::detail::normal_iterator.134"* ret %"class.thrust::detail::normal_iterator.134"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.135"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.135"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.135"* %this, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.135"*, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !107 %add.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %1, i64 %0 store %"struct.thrust::pair"* %add.ptr, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !107 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust11host_vectorIbSaIbEEC2Em(%"class.thrust::host_vector.73"* %this, i64 %n) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::host_vector.73"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::host_vector.73"* %this, %"class.thrust::host_vector.73"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::host_vector.73"*, %"class.thrust::host_vector.73"** %this.addr, align 8 %0 = bitcast %"class.thrust::host_vector.73"* %this1 to %"class.thrust::detail::vector_base.74"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail11vector_baseIbSaIbEEC2Em(%"class.thrust::detail::vector_base.74"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEEN8unittest14random_integerIbLb0EEEEET0_T_SC_SB_T1_(%"class.thrust::counting_iterator"* %first, %"class.thrust::counting_iterator"* %last, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.79", align 8 %result = alloca %"class.thrust::detail::normal_iterator.79", align 8 %op = alloca %"struct.unittest::random_integer.176", align 1 %system1 = alloca %"struct.thrust::any_system_tag", align 1 %system2 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp2 = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator.79", align 8 %agg.tmp4 = alloca %"struct.unittest::random_integer.176", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive1, align 8 %0 = bitcast %"struct.thrust::any_system_tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::any_system_tag"* %system1 to %"struct.thrust::execution_policy.89"* %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to %"struct.thrust::execution_policy.88"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS_14any_system_tagENS0_3cpp6detail3tagEEERNS_6detail17enable_if_definedINS8_14minimum_systemIT_T0_NS8_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyISB_EERNSJ_ISC_EE(%"struct.thrust::execution_policy.89"* dereferenceable(1) %2, %"struct.thrust::execution_policy.88"* dereferenceable(1) %3) %4 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* dereferenceable(8) %first) call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp2, %"class.thrust::counting_iterator"* dereferenceable(8) %last) %5 = bitcast %"class.thrust::detail::normal_iterator.79"* %agg.tmp3 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.79"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp3, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive5, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive6, align 8 %call7 = call i8* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPbEEN8unittest14random_integerIbLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %4, %"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* %agg.tmp2, i8* %7) %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive8, i32 0, i32 0 store i8* %call7, i8** %coerce.dive9, align 8 %8 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %8) #5 %9 = bitcast %"struct.thrust::any_system_tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %9) #5 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive10, i32 0, i32 0 %10 = load i8*, i8** %coerce.dive11, align 8 ret i8* %10 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail11vector_baseIbSaIbEE5beginEv(%"class.thrust::detail::vector_base.74"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.79", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 store %"class.thrust::detail::vector_base.74"* %this, %"class.thrust::detail::vector_base.74"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 0 %call = call i8* @_ZN6thrust6detail18contiguous_storageIbSaIbEE5beginEv(%"class.thrust::detail::contiguous_storage.75"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive3, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive4, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIbSaIbEEC2Em(%"class.thrust::detail::vector_base.74"* %this, i64 %n) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.std::allocator.76", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::vector_base.74"* %this, %"class.thrust::detail::vector_base.74"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 0 call void @_ZNSaIbEC2Ev(%"class.std::allocator.76"* %ref.tmp) #5 invoke void @_ZN6thrust6detail18contiguous_storageIbSaIbEEC2ERKS2_(%"class.thrust::detail::contiguous_storage.75"* %m_storage, %"class.std::allocator.76"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void bitcast (void (%"class.__gnu_cxx::new_allocator.77"*)* @_ZN9__gnu_cxx13new_allocatorIbED2Ev to void (%"class.std::allocator.76"*)*)(%"class.std::allocator.76"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !169 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail11vector_baseIbSaIbEE12default_initEm(%"class.thrust::detail::vector_base.74"* %this1, i64 %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.77"*)* @_ZN9__gnu_cxx13new_allocatorIbED2Ev to void (%"class.std::allocator.76"*)*)(%"class.std::allocator.76"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageIbSaIbEED2Ev(%"class.thrust::detail::contiguous_storage.75"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val4 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val4 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIbEC2Ev(%"class.std::allocator.76"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.76"*, align 8 store %"class.std::allocator.76"* %this, %"class.std::allocator.76"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.76"* %this1 to %"class.__gnu_cxx::new_allocator.77"* call void @_ZN9__gnu_cxx13new_allocatorIbEC2Ev(%"class.__gnu_cxx::new_allocator.77"* %0) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIbSaIbEEC2ERKS2_(%"class.thrust::detail::contiguous_storage.75"* %this, %"class.std::allocator.76"* dereferenceable(1) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.75"*, align 8 %alloc.addr = alloca %"class.std::allocator.76"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.75"* %this, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.76"* %alloc, %"class.std::allocator.76"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.75"*, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 0 %0 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %alloc.addr, align 8 call void @_ZNSaIbEC2ERKS_(%"class.std::allocator.76"* %m_allocator, %"class.std::allocator.76"* dereferenceable(1) %0) #5 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 1 invoke void @_ZN6thrust6detail15normal_iteratorIPbEC2ES2_(%"class.thrust::detail::normal_iterator.79"* %m_begin, i8* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !174 ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.77"*)* @_ZN9__gnu_cxx13new_allocatorIbED2Ev to void (%"class.std::allocator.76"*)*)(%"class.std::allocator.76"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIbED2Ev(%"class.__gnu_cxx::new_allocator.77"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.77"*, align 8 store %"class.__gnu_cxx::new_allocator.77"* %this, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.77"*, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIbSaIbEE12default_initEm(%"class.thrust::detail::vector_base.74"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.79", align 8 store %"class.thrust::detail::vector_base.74"* %this, %"class.thrust::detail::vector_base.74"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageIbSaIbEE8allocateEm(%"class.thrust::detail::contiguous_storage.75"* %m_storage, i64 %1) %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 1 store i64 %2, i64* %m_size, align 8, !tbaa !169 %m_storage2 = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 0 %call = call i8* @_ZN6thrust6detail11vector_baseIbSaIbEE5beginEv(%"class.thrust::detail::vector_base.74"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive3, align 8 %call4 = call i64 @_ZNK6thrust6detail11vector_baseIbSaIbEE4sizeEv(%"class.thrust::detail::vector_base.74"* %this1) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive5, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive6, align 8 call void @_ZN6thrust6detail18contiguous_storageIbSaIbEE19default_construct_nENS0_15normal_iteratorIPbEEm(%"class.thrust::detail::contiguous_storage.75"* %m_storage2, i8* %3, i64 %call4) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIbSaIbEED2Ev(%"class.thrust::detail::contiguous_storage.75"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.75"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.75"* %this, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.75"*, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIbSaIbEE10deallocateEv(%"class.thrust::detail::contiguous_storage.75"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.77"*)* @_ZN9__gnu_cxx13new_allocatorIbED2Ev to void (%"class.std::allocator.76"*)*)(%"class.std::allocator.76"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.77"*)* @_ZN9__gnu_cxx13new_allocatorIbED2Ev to void (%"class.std::allocator.76"*)*)(%"class.std::allocator.76"* %m_allocator2) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIbEC2Ev(%"class.__gnu_cxx::new_allocator.77"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.77"*, align 8 store %"class.__gnu_cxx::new_allocator.77"* %this, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.77"*, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIbEC2ERKS_(%"class.std::allocator.76"* %this, %"class.std::allocator.76"* dereferenceable(1) %__a) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.76"*, align 8 %__a.addr = alloca %"class.std::allocator.76"*, align 8 store %"class.std::allocator.76"* %this, %"class.std::allocator.76"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.76"* %__a, %"class.std::allocator.76"** %__a.addr, align 8, !tbaa !7 %this1 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.76"* %this1 to %"class.__gnu_cxx::new_allocator.77"* %1 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %__a.addr, align 8 %2 = bitcast %"class.std::allocator.76"* %1 to %"class.__gnu_cxx::new_allocator.77"* call void @_ZN9__gnu_cxx13new_allocatorIbEC2ERKS1_(%"class.__gnu_cxx::new_allocator.77"* %0, %"class.__gnu_cxx::new_allocator.77"* dereferenceable(1) %2) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPbEC2ES2_(%"class.thrust::detail::normal_iterator.79"* %this, i8* %p) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %p.addr = alloca i8*, align 8 store %"class.thrust::detail::normal_iterator.79"* %this, %"class.thrust::detail::normal_iterator.79"** %this.addr, align 8, !tbaa !1 store i8* %p, i8** %p.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.79"* %this1 to %"class.thrust::iterator_adaptor.80"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_(%"class.thrust::iterator_adaptor.80"* %0, i8** dereferenceable(8) %p.addr) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIbEC2ERKS1_(%"class.__gnu_cxx::new_allocator.77"* %this, %"class.__gnu_cxx::new_allocator.77"* dereferenceable(1)) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.77"*, align 8 %.addr = alloca %"class.__gnu_cxx::new_allocator.77"*, align 8 store %"class.__gnu_cxx::new_allocator.77"* %this, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8, !tbaa !1 store %"class.__gnu_cxx::new_allocator.77"* %0, %"class.__gnu_cxx::new_allocator.77"** %.addr, align 8, !tbaa !7 %this1 = load %"class.__gnu_cxx::new_allocator.77"*, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_(%"class.thrust::iterator_adaptor.80"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.80"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor.80"* %this, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.80"*, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.80"* %this1 to %"class.thrust::iterator_facade.81"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !175 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIbSaIbEE8allocateEm(%"class.thrust::detail::contiguous_storage.75"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.75"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.79", align 8 %ref.tmp3 = alloca %"class.thrust::detail::normal_iterator.79", align 8 store %"class.thrust::detail::contiguous_storage.75"* %this, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.75"*, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i8* @_ZN6thrust6detail16allocator_traitsISaIbEE8allocateERS2_m(%"class.std::allocator.76"* dereferenceable(1) %m_allocator, i64 %1) call void @_ZN6thrust6detail15normal_iteratorIPbEC2ES2_(%"class.thrust::detail::normal_iterator.79"* %ref.tmp, i8* %call) %2 = bitcast %"class.thrust::detail::normal_iterator.79"* %m_begin to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.79"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 2 store i64 %4, i64* %m_size, align 8, !tbaa !174 br label %if.end if.else: ; preds = %entry %m_begin2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPbEC2ES2_(%"class.thrust::detail::normal_iterator.79"* %ref.tmp3, i8* null) %5 = bitcast %"class.thrust::detail::normal_iterator.79"* %m_begin2 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.79"* %ref.tmp3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 2 store i64 0, i64* %m_size4, align 8, !tbaa !174 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIbSaIbEE19default_construct_nENS0_15normal_iteratorIPbEEm(%"class.thrust::detail::contiguous_storage.75"* %this, i8* %first.coerce, i64 %n) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.79", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.75"*, align 8 %n.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 store %"class.thrust::detail::contiguous_storage.75"* %this, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::contiguous_storage.75"*, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this2, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.79"* %first to %"class.thrust::iterator_adaptor.80"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.80"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23default_construct_rangeISaIbEPbmEEvRT_T0_T1_(%"class.std::allocator.76"* dereferenceable(1) %m_allocator, i8* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIbSaIbEE4sizeEv(%"class.thrust::detail::vector_base.74"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 store %"class.thrust::detail::vector_base.74"* %this, %"class.thrust::detail::vector_base.74"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 1 %0 = load i64, i64* %m_size, align 8, !tbaa !169 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust6detail16allocator_traitsISaIbEE8allocateERS2_m(%"class.std::allocator.76"* dereferenceable(1) %a, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.76"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.76"* %a, %"class.std::allocator.76"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i8* @_ZZN6thrust6detail16allocator_traitsISaIbEE8allocateERS2_mEN19workaround_warnings8allocateES4_m(%"class.std::allocator.76"* dereferenceable(1) %0, i64 %1) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZZN6thrust6detail16allocator_traitsISaIbEE8allocateERS2_mEN19workaround_warnings8allocateES4_m(%"class.std::allocator.76"* dereferenceable(1) %a, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.76"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.76"* %a, %"class.std::allocator.76"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.76"* %0 to %"class.__gnu_cxx::new_allocator.77"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i8* @_ZN9__gnu_cxx13new_allocatorIbE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.77"* %1, i64 %2, i8* null) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN9__gnu_cxx13new_allocatorIbE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.77"* %this, i64 %__n, i8*) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.77"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator.77"* %this, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8, !tbaa !1 store i64 %__n, i64* %__n.addr, align 8, !tbaa !13 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.77"*, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8, !tbaa !13 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorIbE8max_sizeEv(%"class.__gnu_cxx::new_allocator.77"* %this1) #5 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #15 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8, !tbaa !13 %mul = mul i64 %2, 1 %call2 = call i8* @_Znwm(i64 %mul) ret i8* %call2 } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK9__gnu_cxx13new_allocatorIbE8max_sizeEv(%"class.__gnu_cxx::new_allocator.77"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.77"*, align 8 store %"class.__gnu_cxx::new_allocator.77"* %this, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.77"*, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8 ret i64 -1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23default_construct_rangeISaIbEPbmEEvRT_T0_T1_(%"class.std::allocator.76"* dereferenceable(1) %a, i8* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.76"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.76"* %a, %"class.std::allocator.76"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %a.addr, align 8 %1 = load i8*, i8** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIbEPbmEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_(%"class.std::allocator.76"* dereferenceable(1) %0, i8* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.80"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.80"*, align 8 store %"class.thrust::iterator_adaptor.80"* %this, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.80"*, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %this1, i32 0, i32 0 ret i8** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIbEPbmEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_(%"class.std::allocator.76"* dereferenceable(1) %a, i8* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.76"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %ref.tmp1 = alloca i8, align 1 store %"class.std::allocator.76"* %a, %"class.std::allocator.76"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemISaIbEE3getERS2_(%"class.std::allocator.76"* dereferenceable(1) %0) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i8*, i8** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 store i8 0, i8* %ref.tmp1, align 1, !tbaa !75 %call = call i8* @_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPbmbEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i8* %2, i64 %3, i8* dereferenceable(1) %ref.tmp1) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPbmbEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %x) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %x.addr = alloca i8*, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load i8*, i8** %x.addr, align 8 %call2 = call i8* @_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPbmbEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i8* %2, i64 %3, i8* dereferenceable(1) %4) ret i8* %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_systemISaIbEE3getERS2_(%"class.std::allocator.76"* dereferenceable(1) %a) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.76"*, align 8 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 store %"class.std::allocator.76"* %a, %"class.std::allocator.76"** %a.addr, align 8, !tbaa !7 %0 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail6systemISaIbEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_(%"class.std::allocator.76"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPbmbEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %x) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %x.addr = alloca i8*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 %ref.tmp = alloca %"struct.thrust::detail::has_trivial_copy_constructor.177", align 1 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = load i8*, i8** %first.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %3 = load i8*, i8** %x.addr, align 8 %4 = bitcast %"struct.thrust::detail::has_trivial_copy_constructor.177"* %ref.tmp to %"struct.thrust::detail::integral_constant"* %call = call i8* @_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPbmbEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, i8* %1, i64 %2, i8* dereferenceable(1) %3) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPbmbEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %x) #0 comdat { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %x.addr = alloca i8*, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* %3 = load i8*, i8** %first.addr, align 8, !tbaa !1 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %5 = load i8*, i8** %x.addr, align 8 %call = call i8* @_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPbmbEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, i8* %3, i64 %4, i8* dereferenceable(1) %5) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPbmbEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %value) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %value.addr = alloca i8*, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %value, i8** %value.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load i8*, i8** %value.addr, align 8 %call2 = call i8* @_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPbmbEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i8* %2, i64 %3, i8* dereferenceable(1) %4) ret i8* %call2 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPbmbEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i8* %first, i64 %n, i8* dereferenceable(1) %value) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %value.addr = alloca i8*, align 8 %agg.tmp = alloca %"struct.thrust::detail::fill_functor.178", align 1 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i8* %value, i8** %value.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load i8*, i8** %value.addr, align 8 call void @_ZN6thrust6detail12fill_functorIbEC2ERKb(%"struct.thrust::detail::fill_functor.178"* %agg.tmp, i8* dereferenceable(1) %4) %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %agg.tmp, i32 0, i32 0 %5 = load i8, i8* %coerce.dive, align 1 %call = call i8* @_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPbmNS_6detail12fill_functorIbEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i8* %2, i64 %3, i8 %5) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPbmNS_6detail12fill_functorIbEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first, i64 %n, i8 %gen.coerce) #0 comdat { entry: %gen = alloca %"struct.thrust::detail::fill_functor.178", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::fill_functor.178", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %gen, i32 0, i32 0 store i8 %gen.coerce, i8* %coerce.dive, align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::fill_functor.178"* %agg.tmp to i8* %5 = bitcast %"struct.thrust::detail::fill_functor.178"* %gen to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 1, i32 1, i1 false), !tbaa.struct !177 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %agg.tmp, i32 0, i32 0 %6 = load i8, i8* %coerce.dive2, align 1 %call3 = call i8* @_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPbmNS_6detail12fill_functorIbEEEET0_RNS_16execution_policyIT_EESB_T1_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i8* %2, i64 %3, i8 %6) ret i8* %call3 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail12fill_functorIbEC2ERKb(%"struct.thrust::detail::fill_functor.178"* %this, i8* dereferenceable(1) %_exemplar) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::fill_functor.178"*, align 8 %_exemplar.addr = alloca i8*, align 8 store %"struct.thrust::detail::fill_functor.178"* %this, %"struct.thrust::detail::fill_functor.178"** %this.addr, align 8, !tbaa !1 store i8* %_exemplar, i8** %_exemplar.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::fill_functor.178"*, %"struct.thrust::detail::fill_functor.178"** %this.addr, align 8 %exemplar = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %this1, i32 0, i32 0 %0 = load i8*, i8** %_exemplar.addr, align 8 %1 = load i8, i8* %0, align 1, !tbaa !75, !range !77 %tobool = trunc i8 %1 to i1 %frombool = zext i1 %tobool to i8 store i8 %frombool, i8* %exemplar, align 1, !tbaa !178 ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPbmNS_6detail12fill_functorIbEEEET0_RNS_16execution_policyIT_EESB_T1_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i8* %first, i64 %n, i8 %gen.coerce) #0 comdat { entry: %gen = alloca %"struct.thrust::detail::fill_functor.178", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::host_generate_functor.179", align 1 %agg.tmp1 = alloca %"struct.thrust::detail::fill_functor.178", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %gen, i32 0, i32 0 store i8 %gen.coerce, i8* %coerce.dive, align 1 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::fill_functor.178"* %agg.tmp1 to i8* %5 = bitcast %"struct.thrust::detail::fill_functor.178"* %gen to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 1, i32 1, i1 false), !tbaa.struct !177 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %agg.tmp1, i32 0, i32 0 %6 = load i8, i8* %coerce.dive2, align 1 call void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIbEEEC2ES3_(%"struct.thrust::detail::host_generate_functor.179"* %agg.tmp, i8 %6) %coerce.dive3 = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.179", %"struct.thrust::detail::host_generate_functor.179"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %coerce.dive3, i32 0, i32 0 %7 = load i8, i8* %coerce.dive4, align 1 %call = call i8* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPbmNS_6detail21host_generate_functorINS6_12fill_functorIbEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i8* %2, i64 %3, i8 %7) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPbmNS_6detail21host_generate_functorINS6_12fill_functorIbEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first, i64 %n, i8 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::host_generate_functor.179", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::host_generate_functor.179", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.179", %"struct.thrust::detail::host_generate_functor.179"* %f, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %coerce.dive, i32 0, i32 0 store i8 %f.coerce, i8* %coerce.dive1, align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call2 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = load i8*, i8** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::host_generate_functor.179"* %agg.tmp to i8* %5 = bitcast %"struct.thrust::detail::host_generate_functor.179"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 1, i32 1, i1 false), !tbaa.struct !177 %coerce.dive3 = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.179", %"struct.thrust::detail::host_generate_functor.179"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %coerce.dive3, i32 0, i32 0 %6 = load i8, i8* %coerce.dive4, align 1 %call5 = call i8* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPbmNS_6detail21host_generate_functorINS8_12fill_functorIbEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, i8* %2, i64 %3, i8 %6) ret i8* %call5 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIbEEEC2ES3_(%"struct.thrust::detail::host_generate_functor.179"* %this, i8 %g.coerce) unnamed_addr #1 comdat align 2 { entry: %g = alloca %"struct.thrust::detail::fill_functor.178", align 1 %this.addr = alloca %"struct.thrust::detail::host_generate_functor.179"*, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %g, i32 0, i32 0 store i8 %g.coerce, i8* %coerce.dive, align 1 store %"struct.thrust::detail::host_generate_functor.179"* %this, %"struct.thrust::detail::host_generate_functor.179"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::host_generate_functor.179"*, %"struct.thrust::detail::host_generate_functor.179"** %this.addr, align 8 %gen = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.179", %"struct.thrust::detail::host_generate_functor.179"* %this1, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::fill_functor.178"* %gen to i8* %1 = bitcast %"struct.thrust::detail::fill_functor.178"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 1, i32 1, i1 false), !tbaa.struct !177 ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPbmNS_6detail21host_generate_functorINS8_12fill_functorIbEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), i8* %first, i64 %n, i8 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::host_generate_functor.179", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %first.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.180", align 1 %i = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.179", %"struct.thrust::detail::host_generate_functor.179"* %f, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %coerce.dive, i32 0, i32 0 store i8 %f.coerce, i8* %coerce.dive1, align 1 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store i8* %first, i8** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = bitcast %"struct.thrust::detail::wrapped_function.180"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIbEEEEvEC2ERKS5_(%"struct.thrust::detail::wrapped_function.180"* %wrapped_f, %"struct.thrust::detail::host_generate_functor.179"* dereferenceable(1) %f) %2 = bitcast i64* %i to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 store i64 0, i64* %i, align 8, !tbaa !13 br label %for.cond for.cond: ; preds = %for.inc, %entry %3 = load i64, i64* %i, align 8, !tbaa !13 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ne i64 %3, %4 br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %5 = bitcast i64* %i to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 br label %for.end for.body: ; preds = %for.cond %6 = load i8*, i8** %first.addr, align 8, !tbaa !1 call void @_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIbEEEEvEclIbEEvRT_(%"struct.thrust::detail::wrapped_function.180"* %wrapped_f, i8* dereferenceable(1) %6) %7 = load i8*, i8** %first.addr, align 8, !tbaa !1 %incdec.ptr = getelementptr inbounds i8, i8* %7, i32 1 store i8* %incdec.ptr, i8** %first.addr, align 8, !tbaa !1 br label %for.inc for.inc: ; preds = %for.body %8 = load i64, i64* %i, align 8, !tbaa !13 %inc = add i64 %8, 1 store i64 %inc, i64* %i, align 8, !tbaa !13 br label %for.cond for.end: ; preds = %for.cond.cleanup %9 = load i8*, i8** %first.addr, align 8, !tbaa !1 %10 = bitcast %"struct.thrust::detail::wrapped_function.180"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %10) #5 ret i8* %9 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIbEEEEvEC2ERKS5_(%"struct.thrust::detail::wrapped_function.180"* %this, %"struct.thrust::detail::host_generate_functor.179"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.180"*, align 8 %f.addr = alloca %"struct.thrust::detail::host_generate_functor.179"*, align 8 store %"struct.thrust::detail::wrapped_function.180"* %this, %"struct.thrust::detail::wrapped_function.180"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::host_generate_functor.179"* %f, %"struct.thrust::detail::host_generate_functor.179"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.180"*, %"struct.thrust::detail::wrapped_function.180"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.180", %"struct.thrust::detail::wrapped_function.180"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::host_generate_functor.179"*, %"struct.thrust::detail::host_generate_functor.179"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::host_generate_functor.179"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::host_generate_functor.179"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !177 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIbEEEEvEclIbEEvRT_(%"struct.thrust::detail::wrapped_function.180"* %this, i8* dereferenceable(1) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.180"*, align 8 %x.addr = alloca i8*, align 8 store %"struct.thrust::detail::wrapped_function.180"* %this, %"struct.thrust::detail::wrapped_function.180"** %this.addr, align 8, !tbaa !1 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.180"*, %"struct.thrust::detail::wrapped_function.180"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.180", %"struct.thrust::detail::wrapped_function.180"* %this1, i32 0, i32 0 %0 = load i8*, i8** %x.addr, align 8 %call = call dereferenceable(1) i8* @_ZN6thrust18raw_reference_castIbEENS_6detail13raw_referenceIT_E4typeERS3_(i8* dereferenceable(1) %0) call void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIbEEEclIbEEvRKT_(%"struct.thrust::detail::host_generate_functor.179"* %m_f, i8* dereferenceable(1) %call) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIbEEEclIbEEvRKT_(%"struct.thrust::detail::host_generate_functor.179"* %this, i8* dereferenceable(1) %x) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::host_generate_functor.179"*, align 8 %x.addr = alloca i8*, align 8 %lvalue = alloca i8*, align 8 store %"struct.thrust::detail::host_generate_functor.179"* %this, %"struct.thrust::detail::host_generate_functor.179"** %this.addr, align 8, !tbaa !1 store i8* %x, i8** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::host_generate_functor.179"*, %"struct.thrust::detail::host_generate_functor.179"** %this.addr, align 8 %0 = bitcast i8** %lvalue to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load i8*, i8** %x.addr, align 8 store i8* %1, i8** %lvalue, align 8, !tbaa !7 %gen = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.179", %"struct.thrust::detail::host_generate_functor.179"* %this1, i32 0, i32 0 %call = call zeroext i1 @_ZNK6thrust6detail12fill_functorIbEclEv(%"struct.thrust::detail::fill_functor.178"* %gen) %2 = load i8*, i8** %lvalue, align 8 %frombool = zext i1 %call to i8 store i8 %frombool, i8* %2, align 1, !tbaa !75 %3 = bitcast i8** %lvalue to i8* call void @llvm.lifetime.end(i64 8, i8* %3) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust18raw_reference_castIbEENS_6detail13raw_referenceIT_E4typeERS3_(i8* dereferenceable(1) %ref) #8 comdat { entry: %ref.addr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 store i8* %ref, i8** %ref.addr, align 8, !tbaa !7 %0 = load i8*, i8** %ref.addr, align 8 store i8* %0, i8** %ref.tmp, align 8, !tbaa !1 %call = call i8* @_ZN6thrust16raw_pointer_castIPbEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_(i8** dereferenceable(8) %ref.tmp) ret i8* %call } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6detail12fill_functorIbEclEv(%"struct.thrust::detail::fill_functor.178"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::fill_functor.178"*, align 8 store %"struct.thrust::detail::fill_functor.178"* %this, %"struct.thrust::detail::fill_functor.178"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::fill_functor.178"*, %"struct.thrust::detail::fill_functor.178"** %this.addr, align 8 %exemplar = getelementptr inbounds %"struct.thrust::detail::fill_functor.178", %"struct.thrust::detail::fill_functor.178"* %this1, i32 0, i32 0 %0 = load i8, i8* %exemplar, align 1, !tbaa !178, !range !77 %tobool = trunc i8 %0 to i1 ret i1 %tobool } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrust16raw_pointer_castIPbEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_(i8** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca i8**, align 8 store i8** %ptr, i8*** %ptr.addr, align 8, !tbaa !7 %0 = load i8**, i8*** %ptr.addr, align 8 %1 = load i8*, i8** %0, align 8, !tbaa !1 %call = call i8* @_ZN6thrust6detail14pointer_traitsIPbE3getES2_(i8* %1) ret i8* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZN6thrust6detail14pointer_traitsIPbE3getES2_(i8* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca i8*, align 8 store i8* %ptr, i8** %ptr.addr, align 8, !tbaa !1 %0 = load i8*, i8** %ptr.addr, align 8, !tbaa !1 ret i8* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail6systemISaIbEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_(%"class.std::allocator.76"* dereferenceable(1) %a) #1 comdat { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.76"*, align 8 store %"class.std::allocator.76"* %a, %"class.std::allocator.76"** %a.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIbSaIbEE10deallocateEv(%"class.thrust::detail::contiguous_storage.75"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.75"*, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.79", align 8 store %"class.thrust::detail::contiguous_storage.75"* %this, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.75"*, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIbSaIbEE4sizeEv(%"class.thrust::detail::contiguous_storage.75"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.79"* %m_begin to %"class.thrust::iterator_adaptor.80"* %call2 = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.80"* %0) %1 = load i8*, i8** %call2, align 8, !tbaa !1 %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageIbSaIbEE4sizeEv(%"class.thrust::detail::contiguous_storage.75"* %this1) call void @_ZN6thrust6detail16allocator_traitsISaIbEE10deallocateERS2_Pbm(%"class.std::allocator.76"* dereferenceable(1) %m_allocator, i8* %1, i64 %call3) %m_begin4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPbEC2ES2_(%"class.thrust::detail::normal_iterator.79"* %ref.tmp, i8* null) %2 = bitcast %"class.thrust::detail::normal_iterator.79"* %m_begin4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.79"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !174 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIbSaIbEE4sizeEv(%"class.thrust::detail::contiguous_storage.75"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.75"*, align 8 store %"class.thrust::detail::contiguous_storage.75"* %this, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.75"*, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !174 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsISaIbEE10deallocateERS2_Pbm(%"class.std::allocator.76"* dereferenceable(1) %a, i8* %p, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.76"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.76"* %a, %"class.std::allocator.76"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %a.addr, align 8 %1 = load i8*, i8** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZZN6thrust6detail16allocator_traitsISaIbEE10deallocateERS2_PbmEN19workaround_warnings10deallocateES4_S5_m(%"class.std::allocator.76"* dereferenceable(1) %0, i8* %1, i64 %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsISaIbEE10deallocateERS2_PbmEN19workaround_warnings10deallocateES4_S5_m(%"class.std::allocator.76"* dereferenceable(1) %a, i8* %p, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.76"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.76"* %a, %"class.std::allocator.76"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.76"* %0 to %"class.__gnu_cxx::new_allocator.77"* %2 = load i8*, i8** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN9__gnu_cxx13new_allocatorIbE10deallocateEPbm(%"class.__gnu_cxx::new_allocator.77"* %1, i8* %2, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIbE10deallocateEPbm(%"class.__gnu_cxx::new_allocator.77"* %this, i8* %__p, i64) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.77"*, align 8 %__p.addr = alloca i8*, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator.77"* %this, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8, !tbaa !1 store i8* %__p, i8** %__p.addr, align 8, !tbaa !1 store i64 %0, i64* %.addr, align 8, !tbaa !13 %this1 = load %"class.__gnu_cxx::new_allocator.77"*, %"class.__gnu_cxx::new_allocator.77"** %this.addr, align 8 %1 = load i8*, i8** %__p.addr, align 8, !tbaa !1 call void @_ZdlPv(i8* %1) #5 ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPbEEN8unittest14random_integerIbLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"class.thrust::counting_iterator"* %first, %"class.thrust::counting_iterator"* %last, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.79", align 8 %result = alloca %"class.thrust::detail::normal_iterator.79", align 8 %op = alloca %"struct.unittest::random_integer.176", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp3 = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.79", align 8 %agg.tmp5 = alloca %"struct.unittest::random_integer.176", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call2 to %"struct.thrust::execution_policy.88"* call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* dereferenceable(8) %first) call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp3, %"class.thrust::counting_iterator"* dereferenceable(8) %last) %2 = bitcast %"class.thrust::detail::normal_iterator.79"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.79"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %agg.tmp4, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive6, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive7, align 8 %call8 = call i8* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPbEEN8unittest14random_integerIbLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* %agg.tmp3, i8* %4) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive9, i32 0, i32 0 store i8* %call8, i8** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive11, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive12, align 8 ret i8* %5 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPbEEN8unittest14random_integerIbLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, %"class.thrust::counting_iterator"* %first, %"class.thrust::counting_iterator"* %last, i8* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.79", align 8 %result = alloca %"class.thrust::detail::normal_iterator.79", align 8 %op = alloca %"struct.unittest::random_integer.176", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %zipped_result = alloca %"class.thrust::zip_iterator.181", align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.181", align 8 %agg.tmp2 = alloca %"class.thrust::tuple.183", align 8 %agg.tmp3 = alloca %"class.thrust::zip_iterator.181", align 8 %agg.tmp4 = alloca %"class.thrust::tuple.183", align 8 %agg.tmp5 = alloca %"struct.thrust::detail::unary_transform_functor.186", align 1 %agg.tmp6 = alloca %"struct.unittest::random_integer.176", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive1, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %0 = bitcast %"class.thrust::zip_iterator.181"* %zipped_result to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* call void @_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_(%"class.thrust::tuple.183"* sret %agg.tmp2, %"class.thrust::counting_iterator"* dereferenceable(8) %first, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_(%"class.thrust::zip_iterator.181"* sret %agg.tmp, %"class.thrust::tuple.183"* %agg.tmp2) call void @_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_(%"class.thrust::tuple.183"* sret %agg.tmp4, %"class.thrust::counting_iterator"* dereferenceable(8) %last, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_(%"class.thrust::zip_iterator.181"* sret %agg.tmp3, %"class.thrust::tuple.183"* %agg.tmp4) call void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIbLb0EEEEC2ES4_(%"struct.thrust::detail::unary_transform_functor.186"* %agg.tmp5) call void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPbEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_(%"class.thrust::zip_iterator.181"* sret %zipped_result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, %"class.thrust::zip_iterator.181"* %agg.tmp, %"class.thrust::zip_iterator.181"* %agg.tmp3) %call = call dereferenceable(16) %"class.thrust::tuple.183"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.181"* %zipped_result) %3 = bitcast %"class.thrust::tuple.183"* %call to %"struct.thrust::detail::cons.184"* %call7 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPbEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.184"* dereferenceable(16) %3) %4 = bitcast %"class.thrust::detail::normal_iterator.79"* %retval to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.79"* %call7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::zip_iterator.181"* %zipped_result to i8* call void @llvm.lifetime.end(i64 16, i8* %6) #5 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive8, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive9, align 8 ret i8* %7 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPbEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_(%"class.thrust::zip_iterator.181"* noalias sret %agg.result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.181"* %first, %"class.thrust::zip_iterator.181"* %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::unary_transform_functor.186", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.181", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.181", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::unary_transform_functor.186", align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_(%"class.thrust::zip_iterator.181"* %agg.tmp, %"class.thrust::zip_iterator.181"* dereferenceable(16) %first) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_(%"class.thrust::zip_iterator.181"* %agg.tmp2, %"class.thrust::zip_iterator.181"* dereferenceable(16) %last) %2 = bitcast %"struct.thrust::detail::unary_transform_functor.186"* %agg.tmp3 to i8* %3 = bitcast %"struct.thrust::detail::unary_transform_functor.186"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPbEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_(%"class.thrust::zip_iterator.181"* sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"class.thrust::zip_iterator.181"* %agg.tmp, %"class.thrust::zip_iterator.181"* %agg.tmp2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_(%"class.thrust::zip_iterator.181"* noalias sret %agg.result, %"class.thrust::tuple.183"* %t) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::tuple.183", align 8 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple.183"* %agg.tmp, %"class.thrust::tuple.183"* dereferenceable(16) %t) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_(%"class.thrust::zip_iterator.181"* %agg.result, %"class.thrust::tuple.183"* %agg.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_(%"class.thrust::tuple.183"* noalias sret %agg.result, %"class.thrust::counting_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %t1) #8 comdat { entry: %t0.addr = alloca %"class.thrust::counting_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 store %"class.thrust::counting_iterator"* %t0, %"class.thrust::counting_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.79"* %t1, %"class.thrust::detail::normal_iterator.79"** %t1.addr, align 8, !tbaa !7 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %t1.addr, align 8 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_(%"class.thrust::tuple.183"* %agg.result, %"class.thrust::counting_iterator"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIbLb0EEEEC2ES4_(%"struct.thrust::detail::unary_transform_functor.186"* %this) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.unittest::random_integer.176", align 1 %this.addr = alloca %"struct.thrust::detail::unary_transform_functor.186"*, align 8 store %"struct.thrust::detail::unary_transform_functor.186"* %this, %"struct.thrust::detail::unary_transform_functor.186"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::unary_transform_functor.186"*, %"struct.thrust::detail::unary_transform_functor.186"** %this.addr, align 8 %f2 = getelementptr inbounds %"struct.thrust::detail::unary_transform_functor.186", %"struct.thrust::detail::unary_transform_functor.186"* %this1, i32 0, i32 0 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPbEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.184"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.184"*, align 8 store %"struct.thrust::detail::cons.184"* %c, %"struct.thrust::detail::cons.184"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPbEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE(%"struct.thrust::detail::cons.184"* dereferenceable(16) %0) ret %"class.thrust::detail::normal_iterator.79"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::tuple.183"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.181"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 store %"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.181", %"class.thrust::zip_iterator.181"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.183"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPbEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_(%"class.thrust::zip_iterator.181"* noalias sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"class.thrust::zip_iterator.181"* %first, %"class.thrust::zip_iterator.181"* %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::unary_transform_functor.186", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.187", align 1 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.188", align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 %1 = bitcast %"struct.thrust::detail::wrapped_function.187"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEvEC2ERKS6_(%"struct.thrust::detail::wrapped_function.187"* %wrapped_f, %"struct.thrust::detail::unary_transform_functor.186"* dereferenceable(1) %f) br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = bitcast %"class.thrust::zip_iterator.181"* %first to %"class.thrust::iterator_facade.182"* %3 = bitcast %"class.thrust::zip_iterator.181"* %last to %"class.thrust::iterator_facade.182"* %call = call zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.182"* dereferenceable(1) %2, %"class.thrust::iterator_facade.182"* dereferenceable(1) %3) br i1 %call, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = bitcast %"class.thrust::zip_iterator.181"* %first to %"class.thrust::iterator_facade.182"* %call1 = call { i64, i8* } @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv(%"class.thrust::iterator_facade.182"* %4) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.188", %"class.thrust::detail::tuple_of_iterator_references.188"* %ref.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %coerce.dive, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive2 to { i64, i8* }* %6 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %5, i32 0, i32 0 %7 = extractvalue { i64, i8* } %call1, 0 store i64 %7, i64* %6, align 8 %8 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %5, i32 0, i32 1 %9 = extractvalue { i64, i8* } %call1, 1 store i8* %9, i8** %8, align 8 call void @_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRbNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.187"* %wrapped_f, %"class.thrust::detail::tuple_of_iterator_references.188"* dereferenceable(16) %ref.tmp) br label %for.inc for.inc: ; preds = %for.body %10 = bitcast %"class.thrust::zip_iterator.181"* %first to %"class.thrust::iterator_facade.182"* %call3 = call dereferenceable(16) %"class.thrust::zip_iterator.181"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv(%"class.thrust::iterator_facade.182"* %10) br label %for.cond for.end: ; preds = %for.cond call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_(%"class.thrust::zip_iterator.181"* %agg.result, %"class.thrust::zip_iterator.181"* dereferenceable(16) %first) %11 = bitcast %"struct.thrust::detail::wrapped_function.187"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %11) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_(%"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 %.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 store %"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.181"* %0, %"class.thrust::zip_iterator.181"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %this.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.181"* %this1 to %"class.thrust::iterator_facade.182"* %2 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.181"* %2 to %"class.thrust::iterator_facade.182"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.181", %"class.thrust::zip_iterator.181"* %this1, i32 0, i32 0 %4 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %.addr, align 8 %m_iterator_tuple2 = getelementptr inbounds %"class.thrust::zip_iterator.181", %"class.thrust::zip_iterator.181"* %4, i32 0, i32 0 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple.183"* %m_iterator_tuple, %"class.thrust::tuple.183"* dereferenceable(16) %m_iterator_tuple2) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEvEC2ERKS6_(%"struct.thrust::detail::wrapped_function.187"* %this, %"struct.thrust::detail::unary_transform_functor.186"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.187"*, align 8 %f.addr = alloca %"struct.thrust::detail::unary_transform_functor.186"*, align 8 store %"struct.thrust::detail::wrapped_function.187"* %this, %"struct.thrust::detail::wrapped_function.187"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::unary_transform_functor.186"* %f, %"struct.thrust::detail::unary_transform_functor.186"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.187"*, %"struct.thrust::detail::wrapped_function.187"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.187", %"struct.thrust::detail::wrapped_function.187"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::unary_transform_functor.186"*, %"struct.thrust::detail::unary_transform_functor.186"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::unary_transform_functor.186"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::unary_transform_functor.186"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.182"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.182"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.182"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.182"*, align 8 store %"class.thrust::iterator_facade.182"* %lhs, %"class.thrust::iterator_facade.182"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.182"* %rhs, %"class.thrust::iterator_facade.182"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.182"*, %"class.thrust::iterator_facade.182"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.182"* %0 to %"class.thrust::zip_iterator.181"* %2 = load %"class.thrust::iterator_facade.182"*, %"class.thrust::iterator_facade.182"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.182"* %2 to %"class.thrust::zip_iterator.181"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_(%"class.thrust::zip_iterator.181"* dereferenceable(16) %1, %"class.thrust::zip_iterator.181"* dereferenceable(16) %3) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIbLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRbNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.187"* %this, %"class.thrust::detail::tuple_of_iterator_references.188"* dereferenceable(16) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.187"*, align 8 %x.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.188"*, align 8 %agg.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.188", align 8 store %"struct.thrust::detail::wrapped_function.187"* %this, %"struct.thrust::detail::wrapped_function.187"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tuple_of_iterator_references.188"* %x, %"class.thrust::detail::tuple_of_iterator_references.188"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.187"*, %"struct.thrust::detail::wrapped_function.187"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.187", %"struct.thrust::detail::wrapped_function.187"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tuple_of_iterator_references.188"*, %"class.thrust::detail::tuple_of_iterator_references.188"** %x.addr, align 8 %call = call dereferenceable(16) %"class.thrust::detail::tuple_of_iterator_references.188"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRbNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_(%"class.thrust::detail::tuple_of_iterator_references.188"* dereferenceable(16) %0) %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references.188"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::tuple_of_iterator_references.188"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::tuple_of_iterator_references.188"* %agg.tmp to { i64, i8* }* %4 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %3, i32 0, i32 0 %5 = load i64, i64* %4, align 8 %6 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %3, i32 0, i32 1 %7 = load i8*, i8** %6, align 8 call void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIbLb0EEEEclINS0_28tuple_of_iterator_referencesImRbNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_(%"struct.thrust::detail::unary_transform_functor.186"* %m_f, i64 %5, i8* %7) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv(%"class.thrust::iterator_facade.182"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.188", align 8 %this.addr = alloca %"class.thrust::iterator_facade.182"*, align 8 store %"class.thrust::iterator_facade.182"* %this, %"class.thrust::iterator_facade.182"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.182"*, %"class.thrust::iterator_facade.182"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator.181"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.182"* %this1) %call2 = call { i64, i8* } @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_(%"class.thrust::zip_iterator.181"* dereferenceable(16) %call) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.188", %"class.thrust::detail::tuple_of_iterator_references.188"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %coerce.dive, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive3 to { i64, i8* }* %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 0 %2 = extractvalue { i64, i8* } %call2, 0 store i64 %2, i64* %1, align 8 %3 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 1 %4 = extractvalue { i64, i8* } %call2, 1 store i8* %4, i8** %3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.188", %"class.thrust::detail::tuple_of_iterator_references.188"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %coerce.dive4, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive5 to { i64, i8* }* %6 = load { i64, i8* }, { i64, i8* }* %5, align 8 ret { i64, i8* } %6 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.181"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv(%"class.thrust::iterator_facade.182"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.182"*, align 8 store %"class.thrust::iterator_facade.182"* %this, %"class.thrust::iterator_facade.182"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.182"*, %"class.thrust::iterator_facade.182"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator.181"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.182"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_(%"class.thrust::zip_iterator.181"* dereferenceable(16) %call) %call2 = call dereferenceable(16) %"class.thrust::zip_iterator.181"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.182"* %this1) ret %"class.thrust::zip_iterator.181"* %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_(%"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 %.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 store %"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.181"* %0, %"class.thrust::zip_iterator.181"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %this.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.181"* %this1 to %"class.thrust::iterator_facade.182"* %2 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.181"* %2 to %"class.thrust::iterator_facade.182"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.181", %"class.thrust::zip_iterator.181"* %this1, i32 0, i32 0 %4 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %.addr, align 8 %m_iterator_tuple2 = getelementptr inbounds %"class.thrust::zip_iterator.181", %"class.thrust::zip_iterator.181"* %4, i32 0, i32 0 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_(%"class.thrust::tuple.183"* %m_iterator_tuple, %"class.thrust::tuple.183"* dereferenceable(16) %m_iterator_tuple2) ret void } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_(%"class.thrust::zip_iterator.181"* dereferenceable(16) %f1, %"class.thrust::zip_iterator.181"* dereferenceable(16) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 store %"class.thrust::zip_iterator.181"* %f1, %"class.thrust::zip_iterator.181"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.181"* %f2, %"class.thrust::zip_iterator.181"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %f2.addr, align 8 %call = call zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.181"* %0, %"class.thrust::zip_iterator.181"* dereferenceable(16) %1) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"* dereferenceable(16) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 store %"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.181"* %other, %"class.thrust::zip_iterator.181"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::tuple.183"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.181"* %this1) %0 = bitcast %"class.thrust::tuple.183"* %call to %"struct.thrust::detail::cons.184"* %call2 = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPbEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.184"* dereferenceable(16) %0) %1 = bitcast %"class.thrust::counting_iterator"* %call2 to %"class.thrust::iterator_facade.84"* %2 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %other.addr, align 8 %call3 = call dereferenceable(16) %"class.thrust::tuple.183"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.181"* %2) %3 = bitcast %"class.thrust::tuple.183"* %call3 to %"struct.thrust::detail::cons.184"* %call4 = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPbEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.184"* dereferenceable(16) %3) %4 = bitcast %"class.thrust::counting_iterator"* %call4 to %"class.thrust::iterator_facade.84"* %call5 = call zeroext i1 @_ZN6thrusteqINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxS3_mS4_S5_mxEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNS6_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.84"* dereferenceable(1) %1, %"class.thrust::iterator_facade.84"* dereferenceable(1) %4) ret i1 %call5 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPbEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.184"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.184"*, align 8 store %"struct.thrust::detail::cons.184"* %c, %"struct.thrust::detail::cons.184"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPbEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.184"* dereferenceable(16) %0) ret %"class.thrust::counting_iterator"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPbEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.184"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.184"*, align 8 store %"struct.thrust::detail::cons.184"* %t, %"struct.thrust::detail::cons.184"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %0, i32 0, i32 0 ret %"class.thrust::counting_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIbLb0EEEEclINS0_28tuple_of_iterator_referencesImRbNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_(%"struct.thrust::detail::unary_transform_functor.186"* %this, i64 %t.coerce0, i8* %t.coerce1) #8 comdat align 2 { entry: %t = alloca %"class.thrust::detail::tuple_of_iterator_references.188", align 8 %this.addr = alloca %"struct.thrust::detail::unary_transform_functor.186"*, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.188"* %t to { i64, i8* }* %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 0 store i64 %t.coerce0, i64* %1, align 8 %2 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 1 store i8* %t.coerce1, i8** %2, align 8 store %"struct.thrust::detail::unary_transform_functor.186"* %this, %"struct.thrust::detail::unary_transform_functor.186"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::unary_transform_functor.186"*, %"struct.thrust::detail::unary_transform_functor.186"** %this.addr, align 8 %f = getelementptr inbounds %"struct.thrust::detail::unary_transform_functor.186", %"struct.thrust::detail::unary_transform_functor.186"* %this1, i32 0, i32 0 %3 = bitcast %"class.thrust::detail::tuple_of_iterator_references.188"* %t to %"struct.thrust::detail::cons.190"* %call = call dereferenceable(8) i64* @_ZN6thrust3getILi0EmNS_6detail4consIRbNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.190"* dereferenceable(16) %3) %4 = load i64, i64* %call, align 8, !tbaa !13 %conv = trunc i64 %4 to i32 %call2 = call zeroext i1 @_ZNK8unittest14random_integerIbLb0EEclEj(%"struct.unittest::random_integer.176"* %f, i32 %conv) %5 = bitcast %"class.thrust::detail::tuple_of_iterator_references.188"* %t to %"struct.thrust::detail::cons.190"* %call3 = call dereferenceable(1) i8* @_ZN6thrust3getILi1EmNS_6detail4consIRbNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.190"* dereferenceable(16) %5) %frombool = zext i1 %call2 to i8 store i8 %frombool, i8* %call3, align 1, !tbaa !75 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(16) %"class.thrust::detail::tuple_of_iterator_references.188"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRbNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_(%"class.thrust::detail::tuple_of_iterator_references.188"* dereferenceable(16) %ref) #8 comdat { entry: %ref.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.188"*, align 8 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.188"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.188"* %ref, %"class.thrust::detail::tuple_of_iterator_references.188"** %ref.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.188"*, %"class.thrust::detail::tuple_of_iterator_references.188"** %ref.addr, align 8 store %"class.thrust::detail::tuple_of_iterator_references.188"* %0, %"class.thrust::detail::tuple_of_iterator_references.188"** %ref.tmp, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references.188"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRbNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_(%"class.thrust::detail::tuple_of_iterator_references.188"** dereferenceable(8) %ref.tmp) ret %"class.thrust::detail::tuple_of_iterator_references.188"* %call } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZNK8unittest14random_integerIbLb0EEclEj(%"struct.unittest::random_integer.176"* %this, i32 %i) #0 comdat align 2 { entry: %this.addr = alloca %"struct.unittest::random_integer.176"*, align 8 %i.addr = alloca i32, align 4 %rng = alloca %"class.thrust::random::linear_congruential_engine", align 4 %dist = alloca %"class.thrust::random::uniform_int_distribution.192", align 4 store %"struct.unittest::random_integer.176"* %this, %"struct.unittest::random_integer.176"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"struct.unittest::random_integer.176"*, %"struct.unittest::random_integer.176"** %this.addr, align 8 %0 = bitcast %"class.thrust::random::linear_congruential_engine"* %rng to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %i.addr, align 4, !tbaa !11 %call = call i32 @_ZN8unittest4hashEj(i32 %1) call void @_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EEC2Ej(%"class.thrust::random::linear_congruential_engine"* %rng, i32 %call) %2 = bitcast %"class.thrust::random::uniform_int_distribution.192"* %dist to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 call void @_ZN6thrust6random24uniform_int_distributionIjEC2Ejj(%"class.thrust::random::uniform_int_distribution.192"* %dist, i32 0, i32 1) %call2 = call i32 @_ZN6thrust6random24uniform_int_distributionIjEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEjRT_(%"class.thrust::random::uniform_int_distribution.192"* %dist, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %rng) %cmp = icmp eq i32 %call2, 1 %3 = bitcast %"class.thrust::random::uniform_int_distribution.192"* %dist to i8* call void @llvm.lifetime.end(i64 8, i8* %3) #5 %4 = bitcast %"class.thrust::random::linear_congruential_engine"* %rng to i8* call void @llvm.lifetime.end(i64 4, i8* %4) #5 ret i1 %cmp } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) i64* @_ZN6thrust3getILi0EmNS_6detail4consIRbNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.190"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.190"*, align 8 store %"struct.thrust::detail::cons.190"* %c, %"struct.thrust::detail::cons.190"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.190"*, %"struct.thrust::detail::cons.190"** %c.addr, align 8 %call = call dereferenceable(8) i64* @_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRbNS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.190"* dereferenceable(16) %0) ret i64* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust3getILi1EmNS_6detail4consIRbNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.190"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.190"*, align 8 store %"struct.thrust::detail::cons.190"* %c, %"struct.thrust::detail::cons.190"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.190"*, %"struct.thrust::detail::cons.190"** %c.addr, align 8 %call = call dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi1EE3getIRbmNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.190"* dereferenceable(16) %0) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6random24uniform_int_distributionIjEC2Ejj(%"class.thrust::random::uniform_int_distribution.192"* %this, i32 %a, i32 %b) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_int_distribution.192"*, align 8 %a.addr = alloca i32, align 4 %b.addr = alloca i32, align 4 store %"class.thrust::random::uniform_int_distribution.192"* %this, %"class.thrust::random::uniform_int_distribution.192"** %this.addr, align 8, !tbaa !1 store i32 %a, i32* %a.addr, align 4, !tbaa !11 store i32 %b, i32* %b.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::random::uniform_int_distribution.192"*, %"class.thrust::random::uniform_int_distribution.192"** %this.addr, align 8 %m_param = getelementptr inbounds %"class.thrust::random::uniform_int_distribution.192", %"class.thrust::random::uniform_int_distribution.192"* %this1, i32 0, i32 0 call void @_ZN6thrust4pairIjjEC2ERKjS3_(%"struct.thrust::pair.193"* %m_param, i32* dereferenceable(4) %a.addr, i32* dereferenceable(4) %b.addr) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6random24uniform_int_distributionIjEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEjRT_(%"class.thrust::random::uniform_int_distribution.192"* %this, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %urng) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_int_distribution.192"*, align 8 %urng.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 store %"class.thrust::random::uniform_int_distribution.192"* %this, %"class.thrust::random::uniform_int_distribution.192"** %this.addr, align 8, !tbaa !1 store %"class.thrust::random::linear_congruential_engine"* %urng, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::random::uniform_int_distribution.192"*, %"class.thrust::random::uniform_int_distribution.192"** %this.addr, align 8 %0 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8 %m_param = getelementptr inbounds %"class.thrust::random::uniform_int_distribution.192", %"class.thrust::random::uniform_int_distribution.192"* %this1, i32 0, i32 0 %call = call i32 @_ZN6thrust6random24uniform_int_distributionIjEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEjRT_RKNS_4pairIjjEE(%"class.thrust::random::uniform_int_distribution.192"* %this1, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %0, %"struct.thrust::pair.193"* dereferenceable(8) %m_param) ret i32 %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairIjjEC2ERKjS3_(%"struct.thrust::pair.193"* %this, i32* dereferenceable(4) %x, i32* dereferenceable(4) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.193"*, align 8 %x.addr = alloca i32*, align 8 %y.addr = alloca i32*, align 8 store %"struct.thrust::pair.193"* %this, %"struct.thrust::pair.193"** %this.addr, align 8, !tbaa !1 store i32* %x, i32** %x.addr, align 8, !tbaa !7 store i32* %y, i32** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.193"*, %"struct.thrust::pair.193"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.193", %"struct.thrust::pair.193"* %this1, i32 0, i32 0 %0 = load i32*, i32** %x.addr, align 8 %1 = load i32, i32* %0, align 4, !tbaa !11 store i32 %1, i32* %first, align 4, !tbaa !180 %second = getelementptr inbounds %"struct.thrust::pair.193", %"struct.thrust::pair.193"* %this1, i32 0, i32 1 %2 = load i32*, i32** %y.addr, align 8 %3 = load i32, i32* %2, align 4, !tbaa !11 store i32 %3, i32* %second, align 4, !tbaa !182 ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6random24uniform_int_distributionIjEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEjRT_RKNS_4pairIjjEE(%"class.thrust::random::uniform_int_distribution.192"* %this, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %urng, %"struct.thrust::pair.193"* dereferenceable(8) %parm) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_int_distribution.192"*, align 8 %urng.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 %parm.addr = alloca %"struct.thrust::pair.193"*, align 8 %real_min = alloca double, align 8 %real_max = alloca double, align 8 %real_dist = alloca %"class.thrust::random::uniform_real_distribution", align 8 store %"class.thrust::random::uniform_int_distribution.192"* %this, %"class.thrust::random::uniform_int_distribution.192"** %this.addr, align 8, !tbaa !1 store %"class.thrust::random::linear_congruential_engine"* %urng, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8, !tbaa !7 store %"struct.thrust::pair.193"* %parm, %"struct.thrust::pair.193"** %parm.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::random::uniform_int_distribution.192"*, %"class.thrust::random::uniform_int_distribution.192"** %this.addr, align 8 %0 = bitcast double* %real_min to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::pair.193"*, %"struct.thrust::pair.193"** %parm.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.193", %"struct.thrust::pair.193"* %1, i32 0, i32 0 %2 = load i32, i32* %first, align 4, !tbaa !180 %conv = uitofp i32 %2 to double store double %conv, double* %real_min, align 8, !tbaa !44 %3 = bitcast double* %real_max to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load %"struct.thrust::pair.193"*, %"struct.thrust::pair.193"** %parm.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair.193", %"struct.thrust::pair.193"* %4, i32 0, i32 1 %5 = load i32, i32* %second, align 4, !tbaa !182 %conv2 = uitofp i32 %5 to double store double %conv2, double* %real_max, align 8, !tbaa !44 %6 = bitcast %"class.thrust::random::uniform_real_distribution"* %real_dist to i8* call void @llvm.lifetime.start(i64 16, i8* %6) #5 %7 = load double, double* %real_min, align 8, !tbaa !44 %8 = load double, double* %real_max, align 8, !tbaa !44 %add = fadd double %8, 1.000000e+00 call void @_ZN6thrust6random25uniform_real_distributionIdEC2Edd(%"class.thrust::random::uniform_real_distribution"* %real_dist, double %7, double %add) %9 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8 %call = call double @_ZN6thrust6random25uniform_real_distributionIdEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEdRT_(%"class.thrust::random::uniform_real_distribution"* %real_dist, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %9) %conv3 = fptoui double %call to i32 %10 = bitcast %"class.thrust::random::uniform_real_distribution"* %real_dist to i8* call void @llvm.lifetime.end(i64 16, i8* %10) #5 %11 = bitcast double* %real_max to i8* call void @llvm.lifetime.end(i64 8, i8* %11) #5 %12 = bitcast double* %real_min to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret i32 %conv3 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) i64* @_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRbNS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.190"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.190"*, align 8 store %"struct.thrust::detail::cons.190"* %t, %"struct.thrust::detail::cons.190"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.190"*, %"struct.thrust::detail::cons.190"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.190", %"struct.thrust::detail::cons.190"* %0, i32 0, i32 0 ret i64* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi1EE3getIRbmNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.190"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.190"*, align 8 store %"struct.thrust::detail::cons.190"* %t, %"struct.thrust::detail::cons.190"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.190"*, %"struct.thrust::detail::cons.190"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.190", %"struct.thrust::detail::cons.190"* %0, i32 0, i32 1 %call = call dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi0EE3getIRbS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.191"* dereferenceable(8) %tail) ret i8* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust6detail9get_classILi0EE3getIRbS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.191"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.191"*, align 8 store %"struct.thrust::detail::cons.191"* %t, %"struct.thrust::detail::cons.191"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.191"*, %"struct.thrust::detail::cons.191"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.191", %"struct.thrust::detail::cons.191"* %0, i32 0, i32 0 %ref = load i8*, i8** %head, align 8, !tbaa !7 ret i8* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references.188"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRbNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_(%"class.thrust::detail::tuple_of_iterator_references.188"** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.188"**, align 8 store %"class.thrust::detail::tuple_of_iterator_references.188"** %ptr, %"class.thrust::detail::tuple_of_iterator_references.188"*** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.188"**, %"class.thrust::detail::tuple_of_iterator_references.188"*** %ptr.addr, align 8 %1 = load %"class.thrust::detail::tuple_of_iterator_references.188"*, %"class.thrust::detail::tuple_of_iterator_references.188"** %0, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references.188"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRbNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_(%"class.thrust::detail::tuple_of_iterator_references.188"* %1) ret %"class.thrust::detail::tuple_of_iterator_references.188"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references.188"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRbNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_(%"class.thrust::detail::tuple_of_iterator_references.188"* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.188"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.188"* %ptr, %"class.thrust::detail::tuple_of_iterator_references.188"** %ptr.addr, align 8, !tbaa !1 %0 = load %"class.thrust::detail::tuple_of_iterator_references.188"*, %"class.thrust::detail::tuple_of_iterator_references.188"** %ptr.addr, align 8, !tbaa !1 ret %"class.thrust::detail::tuple_of_iterator_references.188"* %0 } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_(%"class.thrust::zip_iterator.181"* dereferenceable(16) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.188", align 8 %f.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 store %"class.thrust::zip_iterator.181"* %f, %"class.thrust::zip_iterator.181"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %f.addr, align 8 %call = call { i64, i8* } @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv(%"class.thrust::zip_iterator.181"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.188", %"class.thrust::detail::tuple_of_iterator_references.188"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %coerce.dive, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive1 to { i64, i8* }* %2 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %1, i32 0, i32 0 %3 = extractvalue { i64, i8* } %call, 0 store i64 %3, i64* %2, align 8 %4 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %1, i32 0, i32 1 %5 = extractvalue { i64, i8* } %call, 1 store i8* %5, i8** %4, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.188", %"class.thrust::detail::tuple_of_iterator_references.188"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %coerce.dive2, i32 0, i32 0 %6 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive3 to { i64, i8* }* %7 = load { i64, i8* }, { i64, i8* }* %6, align 8 ret { i64, i8* } %7 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.181"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.182"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.182"*, align 8 store %"class.thrust::iterator_facade.182"* %this, %"class.thrust::iterator_facade.182"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.182"*, %"class.thrust::iterator_facade.182"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.182"* %this1 to %"class.thrust::zip_iterator.181"* ret %"class.thrust::zip_iterator.181"* %0 } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv(%"class.thrust::zip_iterator.181"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.188", align 8 %this.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 %ref.tmp = alloca %"class.thrust::tuple.189", align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::tuple.183"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.181"* %this1) %call2 = call { i64, i8* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_(%"class.thrust::tuple.183"* dereferenceable(16) %call) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %ref.tmp, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive to { i64, i8* }* %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 0 %2 = extractvalue { i64, i8* } %call2, 0 store i64 %2, i64* %1, align 8 %3 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %0, i32 0, i32 1 %4 = extractvalue { i64, i8* } %call2, 1 store i8* %4, i8** %3, align 8 call void @_ZN6thrust6detail28tuple_of_iterator_referencesImRbNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE(%"class.thrust::detail::tuple_of_iterator_references.188"* %retval, %"class.thrust::tuple.189"* dereferenceable(16) %ref.tmp) %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.188", %"class.thrust::detail::tuple_of_iterator_references.188"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %coerce.dive3, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive4 to { i64, i8* }* %6 = load { i64, i8* }, { i64, i8* }* %5, align 8 ret { i64, i8* } %6 } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_(%"class.thrust::tuple.183"* dereferenceable(16) %t) #0 comdat { entry: %retval = alloca %"class.thrust::tuple.189", align 8 %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.183"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::tuple.183"* %t, %"class.thrust::tuple.183"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %t.addr, align 8 %call = call { i64, i8* } @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_(%"class.thrust::tuple.183"* dereferenceable(16) %0) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %retval, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive to { i64, i8* }* %2 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %1, i32 0, i32 0 %3 = extractvalue { i64, i8* } %call, 0 store i64 %3, i64* %2, align 8 %4 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %1, i32 0, i32 1 %5 = extractvalue { i64, i8* } %call, 1 store i8* %5, i8** %4, align 8 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %retval, i32 0, i32 0 %6 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive1 to { i64, i8* }* %7 = load { i64, i8* }, { i64, i8* }* %6, align 8 ret { i64, i8* } %7 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail28tuple_of_iterator_referencesImRbNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE(%"class.thrust::detail::tuple_of_iterator_references.188"* %this, %"class.thrust::tuple.189"* dereferenceable(16) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.188"*, align 8 %other.addr = alloca %"class.thrust::tuple.189"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.188"* %this, %"class.thrust::detail::tuple_of_iterator_references.188"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.189"* %other, %"class.thrust::tuple.189"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::tuple_of_iterator_references.188"*, %"class.thrust::detail::tuple_of_iterator_references.188"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.188"* %this1 to %"class.thrust::tuple.189"* %1 = load %"class.thrust::tuple.189"*, %"class.thrust::tuple.189"** %other.addr, align 8 %2 = bitcast %"class.thrust::tuple.189"* %0 to i8* %3 = bitcast %"class.thrust::tuple.189"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 16, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i8* } @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_(%"class.thrust::tuple.183"* dereferenceable(16) %t) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::tuple.189", align 8 %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.183"*, align 8 %ref.tmp = alloca i64, align 8 store %"class.thrust::tuple.183"* %t, %"class.thrust::tuple.183"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.183"* %0 to %"struct.thrust::detail::cons.184"* %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPbEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.184"* dereferenceable(16) %1) %call1 = call i64 @_ZN6thrust6detail20dereference_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::counting_iterator"* dereferenceable(8) %call) store i64 %call1, i64* %ref.tmp, align 8, !tbaa !13 %2 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.183"* %2 to %"struct.thrust::detail::cons.184"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPbEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.184"* dereferenceable(16) %3) %call3 = call dereferenceable(1) i8* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPbEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %call2) call void @_ZN6thrust5tupleImRbNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_(%"class.thrust::tuple.189"* %retval, i64* dereferenceable(8) %ref.tmp, i8* dereferenceable(1) %call3) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.189", %"class.thrust::tuple.189"* %retval, i32 0, i32 0 %4 = bitcast %"struct.thrust::detail::cons.190"* %coerce.dive to { i64, i8* }* %5 = load { i64, i8* }, { i64, i8* }* %4, align 8 ret { i64, i8* } %5 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPbEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %this, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %it) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::dereference_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 store %"struct.thrust::detail::dereference_iterator"* %this, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.79"* %it, %"class.thrust::detail::normal_iterator.79"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::dereference_iterator"*, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.79"* %0 to %"class.thrust::iterator_facade.81"* %call = call dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblEdeEv(%"class.thrust::iterator_facade.81"* %1) ret i8* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleImRbNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_(%"class.thrust::tuple.189"* %this, i64* dereferenceable(8) %t0, i8* dereferenceable(1) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.189"*, align 8 %t0.addr = alloca i64*, align 8 %t1.addr = alloca i8*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.189"* %this, %"class.thrust::tuple.189"** %this.addr, align 8, !tbaa !1 store i64* %t0, i64** %t0.addr, align 8, !tbaa !7 store i8* %t1, i8** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.189"*, %"class.thrust::tuple.189"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.189"* %this1 to %"struct.thrust::detail::cons.190"* %1 = load i64*, i64** %t0.addr, align 8 %2 = load i8*, i8** %t1.addr, align 8 call void @_ZN6thrust6detail4consImNS1_IRbNS_9null_typeEEEEC2IKmbKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.190"* %0, i64* dereferenceable(8) %1, i8* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblEdeEv(%"class.thrust::iterator_facade.81"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.81"*, align 8 store %"class.thrust::iterator_facade.81"* %this, %"class.thrust::iterator_facade.81"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.81"*, %"class.thrust::iterator_facade.81"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblE7derivedEv(%"class.thrust::iterator_facade.81"* %this1) %call2 = call dereferenceable(1) i8* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPbEEEENT_9referenceERKS6_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %call) ret i8* %call2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPbEEEENT_9referenceERKS6_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 store %"class.thrust::detail::normal_iterator.79"* %f, %"class.thrust::detail::normal_iterator.79"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.79"* %0 to %"class.thrust::iterator_adaptor.80"* %call = call dereferenceable(1) i8* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv(%"class.thrust::iterator_adaptor.80"* %1) ret i8* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblE7derivedEv(%"class.thrust::iterator_facade.81"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.81"*, align 8 store %"class.thrust::iterator_facade.81"* %this, %"class.thrust::iterator_facade.81"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.81"*, %"class.thrust::iterator_facade.81"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.81"* %this1 to %"class.thrust::detail::normal_iterator.79"* ret %"class.thrust::detail::normal_iterator.79"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) i8* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv(%"class.thrust::iterator_adaptor.80"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.80"*, align 8 store %"class.thrust::iterator_adaptor.80"* %this, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.80"*, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %this1, i32 0, i32 0 %0 = load i8*, i8** %m_iterator, align 8, !tbaa !175 ret i8* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consImNS1_IRbNS_9null_typeEEEEC2IKmbKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.190"* %this, i64* dereferenceable(8) %t1, i8* dereferenceable(1) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.190"*, align 8 %t1.addr = alloca i64*, align 8 %t2.addr = alloca i8*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.190"* %this, %"struct.thrust::detail::cons.190"** %this.addr, align 8, !tbaa !1 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 store i8* %t2, i8** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.190"*, %"struct.thrust::detail::cons.190"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.190", %"struct.thrust::detail::cons.190"* %this1, i32 0, i32 0 %0 = load i64*, i64** %t1.addr, align 8 %1 = load i64, i64* %0, align 8, !tbaa !13 store i64 %1, i64* %head, align 8, !tbaa !183 %tail = getelementptr inbounds %"struct.thrust::detail::cons.190", %"struct.thrust::detail::cons.190"* %this1, i32 0, i32 1 %2 = load i8*, i8** %t2.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRbNS_9null_typeEEC2IbEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.191"* %tail, i8* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIRbNS_9null_typeEEC2IbEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.191"* %this, i8* dereferenceable(1) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.191"*, align 8 %t1.addr = alloca i8*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.191"* %this, %"struct.thrust::detail::cons.191"** %this.addr, align 8, !tbaa !1 store i8* %t1, i8** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.191"*, %"struct.thrust::detail::cons.191"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.191", %"struct.thrust::detail::cons.191"* %this9, i32 0, i32 0 %9 = load i8*, i8** %t1.addr, align 8 store i8* %9, i8** %head, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPbEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_(%"class.thrust::zip_iterator.181"* dereferenceable(16) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 store %"class.thrust::zip_iterator.181"* %f, %"class.thrust::zip_iterator.181"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %f.addr, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv(%"class.thrust::zip_iterator.181"* %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.181"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImbSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRbSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.182"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.182"*, align 8 store %"class.thrust::iterator_facade.182"* %this, %"class.thrust::iterator_facade.182"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.182"*, %"class.thrust::iterator_facade.182"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.182"* %this1 to %"class.thrust::zip_iterator.181"* ret %"class.thrust::zip_iterator.181"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv(%"class.thrust::zip_iterator.181"* %this) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.181", %"class.thrust::zip_iterator.181"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_(%"class.thrust::tuple.183"* dereferenceable(16) %m_iterator_tuple) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPbEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_(%"class.thrust::tuple.183"* dereferenceable(16) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.183"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::tuple.183"* %t, %"class.thrust::tuple.183"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.183"* %0 to %"struct.thrust::detail::cons.184"* %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.184"* %1) call void @_ZN6thrust6detail18increment_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::counting_iterator"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.183"* %2 to %"struct.thrust::detail::cons.184"* %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.185"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.184"* %3) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPbEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_(%"struct.thrust::detail::cons.185"* dereferenceable(8) %call1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.184"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.184"*, align 8 store %"struct.thrust::detail::cons.184"* %this, %"struct.thrust::detail::cons.184"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %this1, i32 0, i32 0 ret %"class.thrust::counting_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPbEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_(%"struct.thrust::detail::cons.185"* dereferenceable(8) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"struct.thrust::detail::cons.185"*, align 8 %agg.tmp = alloca %"struct.thrust::null_type", align 1 %undef.agg.tmp = alloca %"struct.thrust::null_type", align 1 %agg.tmp1 = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp2 = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"struct.thrust::detail::cons.185"* %t, %"struct.thrust::detail::cons.185"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.185"*, %"struct.thrust::detail::cons.185"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPbEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.185"* %0) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPbEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.185"*, %"struct.thrust::detail::cons.185"** %t.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPbEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.185"* %1) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_18increment_iteratorEEET_NS_9null_typeES4_() ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.185"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.184"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.184"*, align 8 store %"struct.thrust::detail::cons.184"* %this, %"struct.thrust::detail::cons.184"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.185"* %tail } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPbEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %this, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::increment_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 store %"struct.thrust::detail::increment_iterator"* %this, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.79"* %it, %"class.thrust::detail::normal_iterator.79"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::increment_iterator"*, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.79"* %0 to %"class.thrust::iterator_facade.81"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblEppEv(%"class.thrust::iterator_facade.81"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPbEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.185"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.185"*, align 8 store %"struct.thrust::detail::cons.185"* %this, %"struct.thrust::detail::cons.185"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.185"*, %"struct.thrust::detail::cons.185"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.185", %"struct.thrust::detail::cons.185"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.79"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPbEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.185"* %this) #9 comdat align 2 { entry: %retval = alloca %"struct.thrust::null_type", align 1 %this.addr = alloca %"struct.thrust::detail::cons.185"*, align 8 store %"struct.thrust::detail::cons.185"* %this, %"struct.thrust::detail::cons.185"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.185"*, %"struct.thrust::detail::cons.185"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblEppEv(%"class.thrust::iterator_facade.81"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.81"*, align 8 store %"class.thrust::iterator_facade.81"* %this, %"class.thrust::iterator_facade.81"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.81"*, %"class.thrust::iterator_facade.81"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblE7derivedEv(%"class.thrust::iterator_facade.81"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPbEEEEvRT_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblE7derivedEv(%"class.thrust::iterator_facade.81"* %this1) ret %"class.thrust::detail::normal_iterator.79"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPbEEEEvRT_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 store %"class.thrust::detail::normal_iterator.79"* %f, %"class.thrust::detail::normal_iterator.79"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.79"* %0 to %"class.thrust::iterator_adaptor.80"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv(%"class.thrust::iterator_adaptor.80"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblE7derivedEv(%"class.thrust::iterator_facade.81"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.81"*, align 8 store %"class.thrust::iterator_facade.81"* %this, %"class.thrust::iterator_facade.81"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.81"*, %"class.thrust::iterator_facade.81"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.81"* %this1 to %"class.thrust::detail::normal_iterator.79"* ret %"class.thrust::detail::normal_iterator.79"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv(%"class.thrust::iterator_adaptor.80"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.80"*, align 8 store %"class.thrust::iterator_adaptor.80"* %this, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.80"*, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %this1, i32 0, i32 0 %0 = load i8*, i8** %m_iterator, align 8, !tbaa !175 %incdec.ptr = getelementptr inbounds i8, i8* %0, i32 1 store i8* %incdec.ptr, i8** %m_iterator, align 8, !tbaa !175 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_(%"class.thrust::tuple.183"* %this, %"class.thrust::tuple.183"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.183"*, align 8 %.addr = alloca %"class.thrust::tuple.183"*, align 8 store %"class.thrust::tuple.183"* %this, %"class.thrust::tuple.183"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.183"* %0, %"class.thrust::tuple.183"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %this.addr, align 8 %1 = bitcast %"class.thrust::tuple.183"* %this1 to %"struct.thrust::detail::cons.184"* %2 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %.addr, align 8 %3 = bitcast %"class.thrust::tuple.183"* %2 to %"struct.thrust::detail::cons.184"* call void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEEC2ERKSA_(%"struct.thrust::detail::cons.184"* %1, %"struct.thrust::detail::cons.184"* dereferenceable(16) %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEEC2ERKSA_(%"struct.thrust::detail::cons.184"* %this, %"struct.thrust::detail::cons.184"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.184"*, align 8 %.addr = alloca %"struct.thrust::detail::cons.184"*, align 8 store %"struct.thrust::detail::cons.184"* %this, %"struct.thrust::detail::cons.184"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::cons.184"* %0, %"struct.thrust::detail::cons.184"** %.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %.addr, align 8 %head2 = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %1, i32 0, i32 0 call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %head, %"class.thrust::counting_iterator"* dereferenceable(8) %head2) %tail = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %this1, i32 0, i32 1 %2 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %.addr, align 8 %tail3 = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %2, i32 0, i32 1 %3 = bitcast %"struct.thrust::detail::cons.185"* %tail to i8* %4 = bitcast %"struct.thrust::detail::cons.185"* %tail3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple.183"* %this, %"class.thrust::tuple.183"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.183"*, align 8 %.addr = alloca %"class.thrust::tuple.183"*, align 8 store %"class.thrust::tuple.183"* %this, %"class.thrust::tuple.183"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.183"* %0, %"class.thrust::tuple.183"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %this.addr, align 8 %1 = bitcast %"class.thrust::tuple.183"* %this1 to %"struct.thrust::detail::cons.184"* %2 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %.addr, align 8 %3 = bitcast %"class.thrust::tuple.183"* %2 to %"struct.thrust::detail::cons.184"* call void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEEC2ERKSA_(%"struct.thrust::detail::cons.184"* %1, %"struct.thrust::detail::cons.184"* dereferenceable(16) %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPbEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_(%"class.thrust::zip_iterator.181"* %this, %"class.thrust::tuple.183"* %iterator_tuple) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.181"*, align 8 store %"class.thrust::zip_iterator.181"* %this, %"class.thrust::zip_iterator.181"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.181"*, %"class.thrust::zip_iterator.181"** %this.addr, align 8 %0 = bitcast %"class.thrust::zip_iterator.181"* %this1 to %"class.thrust::iterator_facade.182"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.181", %"class.thrust::zip_iterator.181"* %this1, i32 0, i32 0 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple.183"* %m_iterator_tuple, %"class.thrust::tuple.183"* dereferenceable(16) %iterator_tuple) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPbEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_(%"class.thrust::tuple.183"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.183"*, align 8 %t0.addr = alloca %"class.thrust::counting_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.183"* %this, %"class.thrust::tuple.183"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %t0, %"class.thrust::counting_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.79"* %t1, %"class.thrust::detail::normal_iterator.79"** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.183"*, %"class.thrust::tuple.183"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.183"* %this1 to %"struct.thrust::detail::cons.184"* %1 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %t1.addr, align 8 call void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.184"* %0, %"class.thrust::counting_iterator"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPbEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.184"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.184"*, align 8 %t1.addr = alloca %"class.thrust::counting_iterator"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.184"* %this, %"struct.thrust::detail::cons.184"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %t1, %"class.thrust::counting_iterator"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.79"* %t2, %"class.thrust::detail::normal_iterator.79"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %this1, i32 0, i32 0 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %t1.addr, align 8 call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %head, %"class.thrust::counting_iterator"* dereferenceable(8) %0) %tail = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %this1, i32 0, i32 1 %1 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPbEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_(%"struct.thrust::detail::cons.185"* %tail, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPbEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_(%"struct.thrust::detail::cons.185"* %this, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.185"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.185"* %this, %"struct.thrust::detail::cons.185"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.79"* %t1, %"class.thrust::detail::normal_iterator.79"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.185"*, %"struct.thrust::detail::cons.185"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.185", %"struct.thrust::detail::cons.185"* %this9, i32 0, i32 0 %9 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %t1.addr, align 8 %10 = bitcast %"class.thrust::detail::normal_iterator.79"* %head to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.79"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPbEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE(%"struct.thrust::detail::cons.184"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.184"*, align 8 store %"struct.thrust::detail::cons.184"* %t, %"struct.thrust::detail::cons.184"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.184"*, %"struct.thrust::detail::cons.184"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.184", %"struct.thrust::detail::cons.184"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPbEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.185"* dereferenceable(8) %tail) ret %"class.thrust::detail::normal_iterator.79"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPbEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.185"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.185"*, align 8 store %"struct.thrust::detail::cons.185"* %t, %"struct.thrust::detail::cons.185"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.185"*, %"struct.thrust::detail::cons.185"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.185", %"struct.thrust::detail::cons.185"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.79"* %head } ; Function Attrs: nounwind uwtable define linkonce_odr i8* @_ZN6thrust6detail18contiguous_storageIbSaIbEE5beginEv(%"class.thrust::detail::contiguous_storage.75"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.79", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.75"*, align 8 store %"class.thrust::detail::contiguous_storage.75"* %this, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.75"*, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.79"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.79"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive2, align 8 ret i8* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaSaIaEEC2IbSaIbEEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base.74"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 %v.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 %ref.tmp = alloca %"class.std::allocator.42", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.194", align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::vector_base.74"* %v, %"class.thrust::detail::vector_base.74"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 call void @_ZNSaIaEC2Ev(%"class.std::allocator.42"* %ref.tmp) #5 invoke void @_ZN6thrust6detail18contiguous_storageIaSaIaEEC2ERKS2_(%"class.thrust::detail::contiguous_storage"* %m_storage, %"class.std::allocator.42"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void bitcast (void (%"class.__gnu_cxx::new_allocator.43"*)* @_ZN9__gnu_cxx13new_allocatorIaED2Ev to void (%"class.std::allocator.42"*)*)(%"class.std::allocator.42"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !30 %0 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %v.addr, align 8 %call = invoke i8* @_ZNK6thrust6detail11vector_baseIbSaIbEE5beginEv(%"class.thrust::detail::vector_base.74"* %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive4, align 8 %1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %v.addr, align 8 %call7 = invoke i8* @_ZNK6thrust6detail11vector_baseIbSaIbEE3endEv(%"class.thrust::detail::vector_base.74"* %1) to label %invoke.cont6 unwind label %lpad2 invoke.cont6: ; preds = %invoke.cont3 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 store i8* %call7, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive10, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive12, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive13, align 8 invoke void @_ZN6thrust6detail11vector_baseIaSaIaEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_(%"class.thrust::detail::vector_base"* %this1, i8* %2, i8* %3) to label %invoke.cont14 unwind label %lpad2 invoke.cont14: ; preds = %invoke.cont6 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.43"*)* @_ZN9__gnu_cxx13new_allocatorIaED2Ev to void (%"class.std::allocator.42"*)*)(%"class.std::allocator.42"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont6, %invoke.cont3, %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageIaSaIaEED2Ev(%"class.thrust::detail::contiguous_storage"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val15 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaSaIaEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_(%"class.thrust::detail::vector_base"* %this, i8* %first.coerce, i8* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp6 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive7, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive9, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive10, align 8 call void @_ZN6thrust6detail11vector_baseIaSaIaEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base"* %this4, i8* %4, i8* %5) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust6detail11vector_baseIbSaIbEE5beginEv(%"class.thrust::detail::vector_base.74"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.194", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 store %"class.thrust::detail::vector_base.74"* %this, %"class.thrust::detail::vector_base.74"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.74", %"class.thrust::detail::vector_base.74"* %this1, i32 0, i32 0 %call = call i8* @_ZNK6thrust6detail18contiguous_storageIbSaIbEE5beginEv(%"class.thrust::detail::contiguous_storage.75"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive3, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive4, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust6detail11vector_baseIbSaIbEE3endEv(%"class.thrust::detail::vector_base.74"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.194", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 store %"class.thrust::detail::vector_base.74"* %this, %"class.thrust::detail::vector_base.74"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %this.addr, align 8 %call = call i8* @_ZNK6thrust6detail11vector_baseIbSaIbEE5beginEv(%"class.thrust::detail::vector_base.74"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %call3 = call i64 @_ZNK6thrust6detail11vector_baseIbSaIbEE4sizeEv(%"class.thrust::detail::vector_base.74"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKbEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %retval, i64 %call3) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive4, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive5, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaSaIaEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base"* %this, i8* %first.coerce, i8* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 %new_size = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %1 = bitcast i64* %new_size to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp5 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive6, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_(i8* %6, i8* %7) store i64 %call, i64* %new_size, align 8, !tbaa !13 %8 = load i64, i64* %new_size, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp11 to i8* %12 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this4, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp10, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive12, i32 0, i32 0 %13 = load i8*, i8** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp11, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive14, i32 0, i32 0 %14 = load i8*, i8** %coerce.dive15, align 8 call void @_ZN6thrust6detail11vector_baseIaSaIaEE17allocate_and_copyINS0_15normal_iteratorIPKbEEEEvmT_S9_RNS0_18contiguous_storageIaS2_EE(%"class.thrust::detail::vector_base"* %this4, i64 %8, i8* %13, i8* %14, %"class.thrust::detail::contiguous_storage"* dereferenceable(24) %m_storage) %15 = load i64, i64* %new_size, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this4, i32 0, i32 1 store i64 %15, i64* %m_size, align 8, !tbaa !30 %16 = bitcast i64* %new_size to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_(i8* %first.coerce, i8* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive5, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive7, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive8, align 8 %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_(i8* %4, i8* %5) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIaSaIaEE17allocate_and_copyINS0_15normal_iteratorIPKbEEEEvmT_S9_RNS0_18contiguous_storageIaS2_EE(%"class.thrust::detail::vector_base"* %this, i64 %requested_size, i8* %first.coerce, i8* %last.coerce, %"class.thrust::detail::contiguous_storage"* dereferenceable(24) %new_storage) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 %requested_size.addr = alloca i64, align 8 %new_storage.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 %allocated_size = alloca i64, align 8 %ref.tmp = alloca i64, align 8 %ref.tmp6 = alloca i64, align 8 %ref.tmp11 = alloca %"class.std::basic_string", align 8 %ref.tmp12 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp17 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp18 = alloca %"class.thrust::detail::normal_iterator", align 8 %coerce = alloca %"class.thrust::detail::normal_iterator", align 8 %new_storage_end = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp42 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp47 = alloca %"class.thrust::detail::normal_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 store i64 %requested_size, i64* %requested_size.addr, align 8, !tbaa !13 store %"class.thrust::detail::contiguous_storage"* %new_storage, %"class.thrust::detail::contiguous_storage"** %new_storage.addr, align 8, !tbaa !7 %this4 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %0 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %cmp = icmp eq i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %new_storage.addr, align 8 call void @_ZN6thrust6detail18contiguous_storageIaSaIaEE10deallocateEv(%"class.thrust::detail::contiguous_storage"* %1) br label %return if.end: ; preds = %entry %2 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 %call = call i64 @_ZNK6thrust6detail11vector_baseIaSaIaEE8capacityEv(%"class.thrust::detail::vector_base"* %this4) %mul = mul i64 2, %call store i64 %mul, i64* %ref.tmp, align 8, !tbaa !13 %call5 = call i64 @_ZN6thrust3maxImEET_RKS1_S3_(i64* dereferenceable(8) %requested_size.addr, i64* dereferenceable(8) %ref.tmp) store i64 %call5, i64* %allocated_size, align 8, !tbaa !13 %call7 = call i64 @_ZNK6thrust6detail11vector_baseIaSaIaEE8max_sizeEv(%"class.thrust::detail::vector_base"* %this4) store i64 %call7, i64* %ref.tmp6, align 8, !tbaa !13 %call8 = call i64 @_ZN6thrust3minImEET_RKS1_S3_(i64* dereferenceable(8) %allocated_size, i64* dereferenceable(8) %ref.tmp6) store i64 %call8, i64* %allocated_size, align 8, !tbaa !13 %3 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %4 = load i64, i64* %allocated_size, align 8, !tbaa !13 %cmp9 = icmp ugt i64 %3, %4 br i1 %cmp9, label %if.then10, label %if.end16 if.then10: ; preds = %if.end %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %5 = bitcast i8* %exception to %"class.std::length_error"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp12) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp11, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.23, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp12) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then10 invoke void @_ZNSt12length_errorC1ERKSs(%"class.std::length_error"* %5, %"class.std::basic_string"* dereferenceable(8) %ref.tmp11) to label %invoke.cont14 unwind label %lpad13 invoke.cont14: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt12length_error to i8*), i8* bitcast (void (%"class.std::length_error"*)* @_ZNSt12length_errorD1Ev to i8*)) #15 to label %unreachable unwind label %lpad13 lpad: ; preds = %if.then10 %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 br label %ehcleanup lpad13: ; preds = %invoke.cont14, %invoke.cont %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp11) #5 br label %ehcleanup ehcleanup: ; preds = %lpad13, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp12) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup br label %ehcleanup57 if.end16: ; preds = %if.end %12 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %new_storage.addr, align 8 %13 = load i64, i64* %allocated_size, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageIaSaIaEE8allocateEm(%"class.thrust::detail::contiguous_storage"* %12, i64 %13) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this4, i32 0, i32 0 %14 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp17 to i8* %17 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %18 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %new_storage.addr, align 8 %call21 = invoke i8* @_ZN6thrust6detail18contiguous_storageIaSaIaEE5beginEv(%"class.thrust::detail::contiguous_storage"* %18) to label %invoke.cont20 unwind label %lpad19 invoke.cont20: ; preds = %if.end16 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp18, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive22, i32 0, i32 0 store i8* %call21, i8** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive24, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive25, align 8 %coerce.dive26 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp17, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive26, i32 0, i32 0 %20 = load i8*, i8** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp18, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive28, i32 0, i32 0 %21 = load i8*, i8** %coerce.dive29, align 8 %call31 = invoke i8* @_ZN6thrust6detail18contiguous_storageIaSaIaEE18uninitialized_copyINS0_15normal_iteratorIPKbEEEENS5_IPaEET_SB_SA_(%"class.thrust::detail::contiguous_storage"* %m_storage, i8* %19, i8* %20, i8* %21) to label %invoke.cont30 unwind label %lpad19 invoke.cont30: ; preds = %invoke.cont20 %coerce.dive32 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %coerce, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive32, i32 0, i32 0 store i8* %call31, i8** %coerce.dive33, align 8 br label %try.cont lpad19: ; preds = %invoke.cont20, %if.end16 %22 = landingpad { i8*, i32 } catch i8* null %23 = extractvalue { i8*, i32 } %22, 0 store i8* %23, i8** %exn.slot, align 8 %24 = extractvalue { i8*, i32 } %22, 1 store i32 %24, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad19 %exn = load i8*, i8** %exn.slot, align 8 %25 = call i8* @__cxa_begin_catch(i8* %exn) #5 %26 = bitcast %"class.thrust::detail::normal_iterator"* %new_storage_end to i8* call void @llvm.lifetime.start(i64 8, i8* %26) #5 %27 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %new_storage.addr, align 8 %call36 = invoke i8* @_ZN6thrust6detail18contiguous_storageIaSaIaEE5beginEv(%"class.thrust::detail::contiguous_storage"* %27) to label %invoke.cont35 unwind label %lpad34 invoke.cont35: ; preds = %catch %coerce.dive37 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %new_storage_end, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive37, i32 0, i32 0 store i8* %call36, i8** %coerce.dive38, align 8 %28 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 invoke void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPaEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %new_storage_end, i64 %28) to label %invoke.cont40 unwind label %lpad39 invoke.cont40: ; preds = %invoke.cont35 %m_storage41 = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this4, i32 0, i32 0 %29 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %new_storage.addr, align 8 %call44 = invoke i8* @_ZN6thrust6detail18contiguous_storageIaSaIaEE5beginEv(%"class.thrust::detail::contiguous_storage"* %29) to label %invoke.cont43 unwind label %lpad39 invoke.cont43: ; preds = %invoke.cont40 %coerce.dive45 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp42, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive45, i32 0, i32 0 store i8* %call44, i8** %coerce.dive46, align 8 %30 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp47 to i8* %31 = bitcast %"class.thrust::detail::normal_iterator"* %new_storage_end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %31, i64 8, i32 8, i1 false) %coerce.dive48 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp42, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive48, i32 0, i32 0 %32 = load i8*, i8** %coerce.dive49, align 8 %coerce.dive50 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp47, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive50, i32 0, i32 0 %33 = load i8*, i8** %coerce.dive51, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIaSaIaEE7destroyENS0_15normal_iteratorIPaEES6_(%"class.thrust::detail::contiguous_storage"* %m_storage41, i8* %32, i8* %33) to label %invoke.cont52 unwind label %lpad39 invoke.cont52: ; preds = %invoke.cont43 %34 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %new_storage.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIaSaIaEE10deallocateEv(%"class.thrust::detail::contiguous_storage"* %34) to label %invoke.cont53 unwind label %lpad39 invoke.cont53: ; preds = %invoke.cont52 invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad39 lpad34: ; preds = %catch %35 = landingpad { i8*, i32 } cleanup %36 = extractvalue { i8*, i32 } %35, 0 store i8* %36, i8** %exn.slot, align 8 %37 = extractvalue { i8*, i32 } %35, 1 store i32 %37, i32* %ehselector.slot, align 4 br label %ehcleanup55 lpad39: ; preds = %invoke.cont53, %invoke.cont52, %invoke.cont43, %invoke.cont40, %invoke.cont35 %38 = landingpad { i8*, i32 } cleanup %39 = extractvalue { i8*, i32 } %38, 0 store i8* %39, i8** %exn.slot, align 8 %40 = extractvalue { i8*, i32 } %38, 1 store i32 %40, i32* %ehselector.slot, align 4 %41 = bitcast %"class.thrust::detail::normal_iterator"* %new_storage_end to i8* call void @llvm.lifetime.end(i64 8, i8* %41) #5 br label %ehcleanup55 ehcleanup55: ; preds = %lpad39, %lpad34 invoke void @__cxa_end_catch() to label %invoke.cont56 unwind label %terminate.lpad invoke.cont56: ; preds = %ehcleanup55 br label %ehcleanup57 try.cont: ; preds = %invoke.cont30 %42 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %42) #5 br label %return return: ; preds = %try.cont, %if.then ret void ehcleanup57: ; preds = %invoke.cont56, %cleanup.done %43 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %43) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup57 %exn58 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn58, 0 %lpad.val59 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val59 terminate.lpad: ; preds = %ehcleanup55 %44 = landingpad { i8*, i32 } catch i8* null %45 = extractvalue { i8*, i32 } %44, 0 call void @__clang_call_terminate(i8* %45) #13 unreachable unreachable: ; preds = %invoke.cont53, %invoke.cont14 unreachable } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_(i8* %first.coerce, i8* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive6, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE(i8* %4, i8* %5) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE(i8* %first.coerce, i8* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to %"class.thrust::iterator_facade.196"* %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to %"class.thrust::iterator_facade.196"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_bS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.196"* dereferenceable(1) %1, %"class.thrust::iterator_facade.196"* dereferenceable(1) %2) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_bS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.196"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.196"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.196"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.196"*, align 8 store %"class.thrust::iterator_facade.196"* %lhs, %"class.thrust::iterator_facade.196"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.196"* %rhs, %"class.thrust::iterator_facade.196"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.196"*, %"class.thrust::iterator_facade.196"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.196"* %0 to %"class.thrust::detail::normal_iterator.194"* %2 = load %"class.thrust::iterator_facade.196"*, %"class.thrust::iterator_facade.196"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.196"* %2 to %"class.thrust::detail::normal_iterator.194"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKbEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKbEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.194"* %f1, %"class.thrust::detail::normal_iterator.194"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.194"* %f2, %"class.thrust::detail::normal_iterator.194"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKbEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKbEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 store %"class.thrust::detail::normal_iterator.194"* %f1, %"class.thrust::detail::normal_iterator.194"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.194"* %f2, %"class.thrust::detail::normal_iterator.194"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %1 to %"class.thrust::iterator_adaptor.195"* %3 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %3 to %"class.thrust::iterator_adaptor.195"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.195"* %2, %"class.thrust::iterator_adaptor.195"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.195"* %this, %"class.thrust::iterator_adaptor.195"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.195"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.195"*, align 8 store %"class.thrust::iterator_adaptor.195"* %this, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.195"* %y, %"class.thrust::iterator_adaptor.195"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.195"*, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.195"*, %"class.thrust::iterator_adaptor.195"** %y.addr, align 8 %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.195"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %this1, i32 0, i32 0 %2 = load i8*, i8** %m_iterator, align 8, !tbaa !186 %sub.ptr.lhs.cast = ptrtoint i8* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i8* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast ret i64 %sub.ptr.sub } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.195"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.195"*, align 8 store %"class.thrust::iterator_adaptor.195"* %this, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.195"*, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %this1, i32 0, i32 0 ret i8** %m_iterator } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIaSaIaEE8capacityEv(%"class.thrust::detail::vector_base"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIaSaIaEE4sizeEv(%"class.thrust::detail::contiguous_storage"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIaSaIaEE8max_sizeEv(%"class.thrust::detail::vector_base"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base"*, align 8 store %"class.thrust::detail::vector_base"* %this, %"class.thrust::detail::vector_base"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base"*, %"class.thrust::detail::vector_base"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base", %"class.thrust::detail::vector_base"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIaSaIaEE8max_sizeEv(%"class.thrust::detail::contiguous_storage"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail18contiguous_storageIaSaIaEE18uninitialized_copyINS0_15normal_iteratorIPKbEEEENS5_IPaEET_SB_SA_(%"class.thrust::detail::contiguous_storage"* %this, i8* %first.coerce, i8* %last.coerce, i8* %result.coerce) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator", align 8 %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %result = alloca %"class.thrust::detail::normal_iterator", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 %from_system = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive4, i32 0, i32 0 store i8* %result.coerce, i8** %coerce.dive5, align 8 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 %this6 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to %"struct.thrust::execution_policy.88"* %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this6, i32 0, i32 0 %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp7 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator"* %result to %"class.thrust::iterator_adaptor"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor"* %6) %7 = load i8*, i8** %call, align 8, !tbaa !1 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp7, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive10, i32 0, i32 0 %9 = load i8*, i8** %coerce.dive11, align 8 %call12 = call i8* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIaENS0_15normal_iteratorIPKbEEPaEET2_RNS_16execution_policyIT_EERT0_T1_SJ_SC_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"class.std::allocator.42"* dereferenceable(1) %m_allocator, i8* %8, i8* %9, i8* %7) call void @_ZN6thrust6detail15normal_iteratorIPaEC2ES2_(%"class.thrust::detail::normal_iterator"* %retval, i8* %call12) %10 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.end(i64 1, i8* %10) #5 %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %retval, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive13, i32 0, i32 0 %11 = load i8*, i8** %coerce.dive14, align 8 ret i8* %11 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIaSaIaEE7destroyENS0_15normal_iteratorIPaEES6_(%"class.thrust::detail::contiguous_storage"* %this, i8* %first.coerce, i8* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator", align 8 %last = alloca %"class.thrust::detail::normal_iterator", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this4, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator"* %first to %"class.thrust::iterator_adaptor"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 %2 = bitcast %"class.thrust::detail::normal_iterator"* %last to %"class.thrust::iterator_facade"* %3 = bitcast %"class.thrust::detail::normal_iterator"* %first to %"class.thrust::iterator_facade"* %call5 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade"* dereferenceable(1) %2, %"class.thrust::iterator_facade"* dereferenceable(1) %3) call void @_ZN6thrust6detail13destroy_rangeISaIaEPalEEvRT_T0_T1_(%"class.std::allocator.42"* dereferenceable(1) %m_allocator, i8* %1, i64 %call5) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIaSaIaEE8max_sizeEv(%"class.thrust::detail::contiguous_storage"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage"*, align 8 store %"class.thrust::detail::contiguous_storage"* %this, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage"*, %"class.thrust::detail::contiguous_storage"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage", %"class.thrust::detail::contiguous_storage"* %this1, i32 0, i32 0 %call = call i64 @_ZN6thrust6detail16allocator_traitsISaIaEE8max_sizeERKS2_(%"class.std::allocator.42"* dereferenceable(1) %m_allocator) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail16allocator_traitsISaIaEE8max_sizeERKS2_(%"class.std::allocator.42"* dereferenceable(1) %a) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.42"*, align 8 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 %call = call i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeISaIaEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS5_E9size_typeEE4typeERKS5_(%"class.std::allocator.42"* dereferenceable(1) %0) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeISaIaEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS5_E9size_typeEE4typeERKS5_(%"class.std::allocator.42"* dereferenceable(1) %a) #1 comdat { entry: %a.addr = alloca %"class.std::allocator.42"*, align 8 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 ret i64 -1 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIaENS0_15normal_iteratorIPKbEEPaEET2_RNS_16execution_policyIT_EERT0_T1_SJ_SC_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.std::allocator.42"* dereferenceable(1) %a, i8* %first.coerce, i8* %last.coerce, i8* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.std::allocator.42"*, align 8 %result.addr = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 store i8* %result, i8** %result.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i8*, i8** %result.addr, align 8, !tbaa !1 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive5, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive7, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive8, align 8 %call = call i8* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIaENS0_15normal_iteratorIPKbEEPaEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESG_E4typeERNS_16execution_policyIT_EERSE_T1_SQ_SG_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"class.std::allocator.42"* dereferenceable(1) %1, i8* %7, i8* %8, i8* %6) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIaENS0_15normal_iteratorIPKbEEPaEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESG_E4typeERNS_16execution_policyIT_EERSE_T1_SQ_SG_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.std::allocator.42"* dereferenceable(1) %a, i8* %first.coerce, i8* %last.coerce, i8* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.std::allocator.42"*, align 8 %result.addr = alloca i8*, align 8 %ref.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 store i8* %result, i8** %result.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemISaIaEE3getERS2_(%"class.std::allocator.42"* dereferenceable(1) %1) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %ref.tmp to %"struct.thrust::execution_policy.88"* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = load i8*, i8** %result.addr, align 8, !tbaa !1 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive5, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive7, i32 0, i32 0 %9 = load i8*, i8** %coerce.dive8, align 8 %call = call i8* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagES5_NS0_15normal_iteratorIPKbEEPaEET2_RKNS_16execution_policyIT_EERKNSC_IT0_EET1_SL_SB_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"struct.thrust::execution_policy.88"* dereferenceable(1) %2, i8* %8, i8* %9, i8* %7) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagES5_NS0_15normal_iteratorIPKbEEPaEET2_RKNS_16execution_policyIT_EERKNSC_IT0_EET1_SL_SB_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system2, i8* %first.coerce, i8* %last.coerce, i8* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %result.addr = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %system2, %"struct.thrust::execution_policy.88"** %system2.addr, align 8, !tbaa !7 store i8* %result, i8** %result.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call4 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call4 to %"struct.thrust::execution_policy.88"* %3 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2.addr, align 8 %4 = bitcast %"struct.thrust::execution_policy.88"* %3 to %"struct.thrust::detail::execution_policy_base.85"* %call5 = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %4) %call6 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call5) %5 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call6 to %"struct.thrust::execution_policy.88"* %call7 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %2, %"struct.thrust::execution_policy.88"* dereferenceable(1) %5) %6 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call7 to %"struct.thrust::detail::execution_policy_base.85"* %7 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp8 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = load i8*, i8** %result.addr, align 8, !tbaa !1 %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive9, i32 0, i32 0 %12 = load i8*, i8** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp8, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive11, i32 0, i32 0 %13 = load i8*, i8** %coerce.dive12, align 8 %call13 = call i8* @_ZN6thrust4copyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPaEET1_RKNS5_21execution_policy_baseIT_EET0_SH_SB_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %6, i8* %12, i8* %13, i8* %11) ret i8* %call13 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust4copyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPaEET1_RKNS5_21execution_policy_baseIT_EET0_SH_SB_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first.coerce, i8* %last.coerce, i8* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %result.addr = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i8* %result, i8** %result.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call4 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call4 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp5 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i8*, i8** %result.addr, align 8, !tbaa !1 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive6, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive9, align 8 %call10 = call i8* @_ZN6thrust6system6detail10sequential4copyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPaEET1_RNS2_16execution_policyIT_EET0_SI_SD_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, i8* %7, i8* %8, i8* %6) ret i8* %call10 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail10sequential4copyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPaEET1_RNS2_16execution_policyIT_EET0_SI_SD_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), i8* %first.coerce, i8* %last.coerce, i8* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %result.addr = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"struct.thrust::detail::integral_constant.197", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store i8* %result, i8** %result.addr, align 8, !tbaa !1 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i8*, i8** %result.addr, align 8, !tbaa !1 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive6, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive9, align 8 %call = call i8* @_ZN6thrust6system6detail10sequential11copy_detail4copyINS_6detail15normal_iteratorIPKbEEPaEET0_T_SC_SB_NS5_17integral_constantIbLb0EEE(i8* %6, i8* %7, i8* %5) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail10sequential11copy_detail4copyINS_6detail15normal_iteratorIPKbEEPaEET0_T_SC_SB_NS5_17integral_constantIbLb0EEE(i8* %first.coerce, i8* %last.coerce, i8* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %0 = alloca %"struct.thrust::detail::integral_constant.197", align 1 %result.addr = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store i8* %result, i8** %result.addr, align 8, !tbaa !1 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i8*, i8** %result.addr, align 8, !tbaa !1 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive5, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive7, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive8, align 8 %call = call i8* @_ZN6thrust6system6detail10sequential12general_copyINS_6detail15normal_iteratorIPKbEEPaEET0_T_SB_SA_(i8* %6, i8* %7, i8* %5) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6system6detail10sequential12general_copyINS_6detail15normal_iteratorIPKbEEPaEET0_T_SB_SA_(i8* %first.coerce, i8* %last.coerce, i8* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %result.addr = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store i8* %result, i8** %result.addr, align 8, !tbaa !1 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to %"class.thrust::iterator_facade.196"* %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to %"class.thrust::iterator_facade.196"* %call = call zeroext i1 @_ZN6thrustneINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_bS9_SA_SB_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSC_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.196"* dereferenceable(1) %0, %"class.thrust::iterator_facade.196"* dereferenceable(1) %1) br i1 %call, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load i8*, i8** %result.addr, align 8, !tbaa !1 %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive4, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive5, align 8 call void @_ZN6thrust6system6detail10sequential19general_copy_detail11iter_assignIPaNS_6detail15normal_iteratorIPKbEEEENS6_9enable_ifIXsr23reference_is_assignableIT0_T_EE5valueEvE4typeESD_SC_(i8* %2, i8* %5) br label %for.inc for.inc: ; preds = %for.body %6 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to %"class.thrust::iterator_facade.196"* %call6 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEppEv(%"class.thrust::iterator_facade.196"* %6) %7 = load i8*, i8** %result.addr, align 8, !tbaa !1 %incdec.ptr = getelementptr inbounds i8, i8* %7, i32 1 store i8* %incdec.ptr, i8** %result.addr, align 8, !tbaa !1 br label %for.cond for.end: ; preds = %for.cond %8 = load i8*, i8** %result.addr, align 8, !tbaa !1 ret i8* %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrustneINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_bS9_SA_SB_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSC_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.196"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.196"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.196"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.196"*, align 8 store %"class.thrust::iterator_facade.196"* %lhs, %"class.thrust::iterator_facade.196"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.196"* %rhs, %"class.thrust::iterator_facade.196"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.196"*, %"class.thrust::iterator_facade.196"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.196"* %0 to %"class.thrust::detail::normal_iterator.194"* %2 = load %"class.thrust::iterator_facade.196"*, %"class.thrust::iterator_facade.196"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.196"* %2 to %"class.thrust::detail::normal_iterator.194"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPKbEES6_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %3) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system6detail10sequential19general_copy_detail11iter_assignIPaNS_6detail15normal_iteratorIPKbEEEENS6_9enable_ifIXsr23reference_is_assignableIT0_T_EE5valueEvE4typeESD_SC_(i8* %dst, i8* %src.coerce) #8 comdat { entry: %src = alloca %"class.thrust::detail::normal_iterator.194", align 8 %dst.addr = alloca i8*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %src, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %src.coerce, i8** %coerce.dive1, align 8 store i8* %dst, i8** %dst.addr, align 8, !tbaa !1 %0 = bitcast %"class.thrust::detail::normal_iterator.194"* %src to %"class.thrust::iterator_facade.196"* %call = call dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv(%"class.thrust::iterator_facade.196"* %0) %1 = load i8, i8* %call, align 1, !tbaa !75, !range !77 %tobool = trunc i8 %1 to i1 %conv = zext i1 %tobool to i8 %2 = load i8*, i8** %dst.addr, align 8, !tbaa !1 store i8 %conv, i8* %2, align 1, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEppEv(%"class.thrust::iterator_facade.196"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.196"*, align 8 store %"class.thrust::iterator_facade.196"* %this, %"class.thrust::iterator_facade.196"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.196"*, %"class.thrust::iterator_facade.196"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.196"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPKbEEEEvRT_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.196"* %this1) ret %"class.thrust::detail::normal_iterator.194"* %call2 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPKbEES6_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 store %"class.thrust::detail::normal_iterator.194"* %f1, %"class.thrust::detail::normal_iterator.194"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.194"* %f2, %"class.thrust::detail::normal_iterator.194"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %f1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %0 to %"class.thrust::iterator_adaptor.195"* %2 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %f2.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %2 to %"class.thrust::iterator_adaptor.195"* %call = call zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E5equalIS5_S4_S6_S6_S6_S6_S6_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.195"* %1, %"class.thrust::iterator_adaptor.195"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E5equalIS5_S4_S6_S6_S6_S6_S6_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.195"* %this, %"class.thrust::iterator_adaptor.195"* dereferenceable(8) %x) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.195"*, align 8 %x.addr = alloca %"class.thrust::iterator_adaptor.195"*, align 8 store %"class.thrust::iterator_adaptor.195"* %this, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.195"* %x, %"class.thrust::iterator_adaptor.195"** %x.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.195"*, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %this1, i32 0, i32 0 %0 = load i8*, i8** %m_iterator, align 8, !tbaa !186 %1 = load %"class.thrust::iterator_adaptor.195"*, %"class.thrust::iterator_adaptor.195"** %x.addr, align 8 %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.195"* %1) %2 = load i8*, i8** %call, align 8, !tbaa !1 %cmp = icmp eq i8* %0, %2 ret i1 %cmp } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv(%"class.thrust::iterator_facade.196"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.196"*, align 8 store %"class.thrust::iterator_facade.196"* %this, %"class.thrust::iterator_facade.196"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.196"*, %"class.thrust::iterator_facade.196"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.196"* %this1) %call2 = call dereferenceable(1) i8* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKbEEEENT_9referenceERKS7_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %call) ret i8* %call2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) i8* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKbEEEENT_9referenceERKS7_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 store %"class.thrust::detail::normal_iterator.194"* %f, %"class.thrust::detail::normal_iterator.194"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %0 to %"class.thrust::iterator_adaptor.195"* %call = call dereferenceable(1) i8* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv(%"class.thrust::iterator_adaptor.195"* %1) ret i8* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.196"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.196"*, align 8 store %"class.thrust::iterator_facade.196"* %this, %"class.thrust::iterator_facade.196"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.196"*, %"class.thrust::iterator_facade.196"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.196"* %this1 to %"class.thrust::detail::normal_iterator.194"* ret %"class.thrust::detail::normal_iterator.194"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) i8* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv(%"class.thrust::iterator_adaptor.195"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.195"*, align 8 store %"class.thrust::iterator_adaptor.195"* %this, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.195"*, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %this1, i32 0, i32 0 %0 = load i8*, i8** %m_iterator, align 8, !tbaa !186 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPKbEEEEvRT_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 store %"class.thrust::detail::normal_iterator.194"* %f, %"class.thrust::detail::normal_iterator.194"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %0 to %"class.thrust::iterator_adaptor.195"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E9incrementEv(%"class.thrust::iterator_adaptor.195"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.196"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.196"*, align 8 store %"class.thrust::iterator_facade.196"* %this, %"class.thrust::iterator_facade.196"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.196"*, %"class.thrust::iterator_facade.196"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.196"* %this1 to %"class.thrust::detail::normal_iterator.194"* ret %"class.thrust::detail::normal_iterator.194"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E9incrementEv(%"class.thrust::iterator_adaptor.195"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.195"*, align 8 store %"class.thrust::iterator_adaptor.195"* %this, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.195"*, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %this1, i32 0, i32 0 %0 = load i8*, i8** %m_iterator, align 8, !tbaa !186 %incdec.ptr = getelementptr inbounds i8, i8* %0, i32 1 store i8* %incdec.ptr, i8** %m_iterator, align 8, !tbaa !186 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeISaIaEPalEEvRT_T0_T1_(%"class.std::allocator.42"* dereferenceable(1) %a, i8* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.42"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.42"* %a, %"class.std::allocator.42"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.42"*, %"class.std::allocator.42"** %a.addr, align 8 %1 = load i8*, i8** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIaEPalEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_(%"class.std::allocator.42"* dereferenceable(1) %0, i8* %1, i64 %2) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade"*, align 8 store %"class.thrust::iterator_facade"* %lhs, %"class.thrust::iterator_facade"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade"* %rhs, %"class.thrust::iterator_facade"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade"* %0 to %"class.thrust::detail::normal_iterator"* %2 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade"* %2 to %"class.thrust::detail::normal_iterator"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPaEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIaEPalEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_(%"class.std::allocator.42"* dereferenceable(1), i8*, i64) #1 comdat { entry: %.addr = alloca %"class.std::allocator.42"*, align 8 %.addr1 = alloca i8*, align 8 %.addr2 = alloca i64, align 8 store %"class.std::allocator.42"* %0, %"class.std::allocator.42"** %.addr, align 8, !tbaa !7 store i8* %1, i8** %.addr1, align 8, !tbaa !1 store i64 %2, i64* %.addr2, align 8, !tbaa !13 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPaEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator"* %f1, %"class.thrust::detail::normal_iterator"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator"* %f2, %"class.thrust::detail::normal_iterator"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPaEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPaEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator"*, align 8 store %"class.thrust::detail::normal_iterator"* %f1, %"class.thrust::detail::normal_iterator"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator"* %f2, %"class.thrust::detail::normal_iterator"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator"* %1 to %"class.thrust::iterator_adaptor"* %3 = load %"class.thrust::detail::normal_iterator"*, %"class.thrust::detail::normal_iterator"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator"* %3 to %"class.thrust::iterator_adaptor"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor"* %2, %"class.thrust::iterator_adaptor"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor"* %this, %"class.thrust::iterator_adaptor"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor"*, align 8 store %"class.thrust::iterator_adaptor"* %this, %"class.thrust::iterator_adaptor"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor"* %y, %"class.thrust::iterator_adaptor"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor"*, %"class.thrust::iterator_adaptor"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor"*, %"class.thrust::iterator_adaptor"** %y.addr, align 8 %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPaEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %this1, i32 0, i32 0 %2 = load i8*, i8** %m_iterator, align 8, !tbaa !36 %sub.ptr.lhs.cast = ptrtoint i8* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i8* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast ret i64 %sub.ptr.sub } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust6detail18contiguous_storageIbSaIbEE5beginEv(%"class.thrust::detail::contiguous_storage.75"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.194", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.75"*, align 8 store %"class.thrust::detail::contiguous_storage.75"* %this, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.75"*, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPKbEC2IPbEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE(%"class.thrust::detail::normal_iterator.194"* %retval, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %m_begin, i8* null) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive2, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPKbEC2IPbEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE(%"class.thrust::detail::normal_iterator.194"* %this, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 %other.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 store %"class.thrust::detail::normal_iterator.194"* %this, %"class.thrust::detail::normal_iterator.194"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.79"* %other, %"class.thrust::detail::normal_iterator.79"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %this.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %this1 to %"class.thrust::iterator_adaptor.195"* %2 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %other.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.79"* %2 to %"class.thrust::iterator_adaptor.80"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.80"* %3) %4 = load i8*, i8** %call, align 8, !tbaa !1 store i8* %4, i8** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.195"* %1, i8** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.195"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.195"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor.195"* %this, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.195"*, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.195"* %this1 to %"class.thrust::iterator_facade.196"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !186 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKbEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.194"* %i, %"class.thrust::detail::normal_iterator.194"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKbEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKbEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.194"* %i, %"class.thrust::detail::normal_iterator.194"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKbEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKbEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.194"* %i, %"class.thrust::detail::normal_iterator.194"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %1 to %"class.thrust::iterator_facade.196"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl(%"class.thrust::iterator_facade.196"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl(%"class.thrust::iterator_facade.196"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.196"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.196"* %this, %"class.thrust::iterator_facade.196"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.196"*, %"class.thrust::iterator_facade.196"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.196"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKbEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.196"* %this1) ret %"class.thrust::detail::normal_iterator.194"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKbEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.194"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.194"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.194"* %f, %"class.thrust::detail::normal_iterator.194"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.194"*, %"class.thrust::detail::normal_iterator.194"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %0 to %"class.thrust::iterator_adaptor.195"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.195"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKbEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.195"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.195"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.195"* %this, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.195"*, %"class.thrust::iterator_adaptor.195"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %this1, i32 0, i32 0 %1 = load i8*, i8** %m_iterator, align 8, !tbaa !186 %add.ptr = getelementptr inbounds i8, i8* %1, i64 %0 store i8* %add.ptr, i8** %m_iterator, align 8, !tbaa !186 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIbSaIbEE7destroyENS0_15normal_iteratorIPbEES6_(%"class.thrust::detail::contiguous_storage.75"* %this, i8* %first.coerce, i8* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.79", align 8 %last = alloca %"class.thrust::detail::normal_iterator.79", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.75"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::contiguous_storage.75"* %this, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::contiguous_storage.75"*, %"class.thrust::detail::contiguous_storage.75"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.75", %"class.thrust::detail::contiguous_storage.75"* %this4, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.79"* %first to %"class.thrust::iterator_adaptor.80"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.80"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 %2 = bitcast %"class.thrust::detail::normal_iterator.79"* %last to %"class.thrust::iterator_facade.81"* %3 = bitcast %"class.thrust::detail::normal_iterator.79"* %first to %"class.thrust::iterator_facade.81"* %call5 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblS4_bS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade.81"* dereferenceable(1) %2, %"class.thrust::iterator_facade.81"* dereferenceable(1) %3) call void @_ZN6thrust6detail13destroy_rangeISaIbEPblEEvRT_T0_T1_(%"class.std::allocator.76"* dereferenceable(1) %m_allocator, i8* %1, i64 %call5) ret void } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6detail11vector_baseIbSaIbEE3endEv(%"class.thrust::detail::vector_base.74"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.79", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 store %"class.thrust::detail::vector_base.74"* %this, %"class.thrust::detail::vector_base.74"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %this.addr, align 8 %call = call i8* @_ZN6thrust6detail11vector_baseIbSaIbEE5beginEv(%"class.thrust::detail::vector_base.74"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive2, align 8 %call3 = call i64 @_ZNK6thrust6detail11vector_baseIbSaIbEE4sizeEv(%"class.thrust::detail::vector_base.74"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPbEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %retval, i64 %call3) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.79", %"class.thrust::detail::normal_iterator.79"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %coerce.dive4, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive5, align 8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeISaIbEPblEEvRT_T0_T1_(%"class.std::allocator.76"* dereferenceable(1) %a, i8* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.76"*, align 8 %p.addr = alloca i8*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.76"* %a, %"class.std::allocator.76"** %a.addr, align 8, !tbaa !7 store i8* %p, i8** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.76"*, %"class.std::allocator.76"** %a.addr, align 8 %1 = load i8*, i8** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIbEPblEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_(%"class.std::allocator.76"* dereferenceable(1) %0, i8* %1, i64 %2) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblS4_bS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade.81"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.81"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.81"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.81"*, align 8 store %"class.thrust::iterator_facade.81"* %lhs, %"class.thrust::iterator_facade.81"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.81"* %rhs, %"class.thrust::iterator_facade.81"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.81"*, %"class.thrust::iterator_facade.81"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.81"* %0 to %"class.thrust::detail::normal_iterator.79"* %2 = load %"class.thrust::iterator_facade.81"*, %"class.thrust::iterator_facade.81"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.81"* %2 to %"class.thrust::detail::normal_iterator.79"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPbEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIbEPblEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_(%"class.std::allocator.76"* dereferenceable(1), i8*, i64) #1 comdat { entry: %.addr = alloca %"class.std::allocator.76"*, align 8 %.addr1 = alloca i8*, align 8 %.addr2 = alloca i64, align 8 store %"class.std::allocator.76"* %0, %"class.std::allocator.76"** %.addr, align 8, !tbaa !7 store i8* %1, i8** %.addr1, align 8, !tbaa !1 store i64 %2, i64* %.addr2, align 8, !tbaa !13 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPbEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.79"* %f1, %"class.thrust::detail::normal_iterator.79"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.79"* %f2, %"class.thrust::detail::normal_iterator.79"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPbEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPbEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 store %"class.thrust::detail::normal_iterator.79"* %f1, %"class.thrust::detail::normal_iterator.79"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.79"* %f2, %"class.thrust::detail::normal_iterator.79"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.79"* %1 to %"class.thrust::iterator_adaptor.80"* %3 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.79"* %3 to %"class.thrust::iterator_adaptor.80"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.80"* %2, %"class.thrust::iterator_adaptor.80"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.80"* %this, %"class.thrust::iterator_adaptor.80"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.80"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.80"*, align 8 store %"class.thrust::iterator_adaptor.80"* %this, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.80"* %y, %"class.thrust::iterator_adaptor.80"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.80"*, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.80"*, %"class.thrust::iterator_adaptor.80"** %y.addr, align 8 %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.80"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %this1, i32 0, i32 0 %2 = load i8*, i8** %m_iterator, align 8, !tbaa !175 %sub.ptr.lhs.cast = ptrtoint i8* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i8* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast ret i64 %sub.ptr.sub } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPbEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.79"* %i, %"class.thrust::detail::normal_iterator.79"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPbEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPbEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.79"* %i, %"class.thrust::detail::normal_iterator.79"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPbEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPbEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.79"* %i, %"class.thrust::detail::normal_iterator.79"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.79"* %1 to %"class.thrust::iterator_facade.81"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblEpLEl(%"class.thrust::iterator_facade.81"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblEpLEl(%"class.thrust::iterator_facade.81"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.81"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.81"* %this, %"class.thrust::iterator_facade.81"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.81"*, %"class.thrust::iterator_facade.81"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblE7derivedEv(%"class.thrust::iterator_facade.81"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPbEEEEvRT_NS6_15difference_typeE(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.79"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERblE7derivedEv(%"class.thrust::iterator_facade.81"* %this1) ret %"class.thrust::detail::normal_iterator.79"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPbEEEEvRT_NS6_15difference_typeE(%"class.thrust::detail::normal_iterator.79"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.79"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.79"* %f, %"class.thrust::detail::normal_iterator.79"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.79"*, %"class.thrust::detail::normal_iterator.79"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.79"* %0 to %"class.thrust::iterator_adaptor.80"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl(%"class.thrust::iterator_adaptor.80"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPbEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl(%"class.thrust::iterator_adaptor.80"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.80"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.80"* %this, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.80"*, %"class.thrust::iterator_adaptor.80"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.80", %"class.thrust::iterator_adaptor.80"* %this1, i32 0, i32 0 %1 = load i8*, i8** %m_iterator, align 8, !tbaa !175 %add.ptr = getelementptr inbounds i8, i8* %1, i64 %0 store i8* %add.ptr, i8** %m_iterator, align 8, !tbaa !175 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairIiiEC2ERKiS3_(%"struct.thrust::pair.82"* %this, i32* dereferenceable(4) %x, i32* dereferenceable(4) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.82"*, align 8 %x.addr = alloca i32*, align 8 %y.addr = alloca i32*, align 8 store %"struct.thrust::pair.82"* %this, %"struct.thrust::pair.82"** %this.addr, align 8, !tbaa !1 store i32* %x, i32** %x.addr, align 8, !tbaa !7 store i32* %y, i32** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %this1, i32 0, i32 0 %0 = load i32*, i32** %x.addr, align 8 %1 = load i32, i32* %0, align 4, !tbaa !11 store i32 %1, i32* %first, align 4, !tbaa !24 %second = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %this1, i32 0, i32 1 %2 = load i32*, i32** %y.addr, align 8 %3 = load i32, i32* %2, align 4, !tbaa !11 store i32 %3, i32* %second, align 4, !tbaa !28 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust21exclusive_scan_by_keyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPaEENS6_IPNS_4pairIaaEEEESC_SA_NS_8equal_toIaEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SM_T1_SG_T3_T4_T5_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first1.coerce, i8* %last1.coerce, %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"* %result.coerce, i16 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.51", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %result = alloca %"class.thrust::detail::normal_iterator.51", align 8 %init = alloca %"struct.thrust::pair", align 1 %binary_pred = alloca %"struct.thrust::equal_to", align 1 %binary_op = alloca %struct.add_pairs, align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp12 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %agg.tmp13 = alloca %"struct.thrust::pair", align 1 %agg.tmp14 = alloca %"struct.thrust::equal_to", align 1 %agg.tmp15 = alloca %struct.add_pairs, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive2, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %0 = bitcast %"struct.thrust::pair"* %init to i16* store i16 %init.coerce, i16* %0, align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call9 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call9 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %3 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator"* %agg.tmp10 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.51"* %agg.tmp11 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.51"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.51"* %agg.tmp12 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.51"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::pair"* %agg.tmp13 to i8* %12 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 2, i32 1, i1 false), !tbaa.struct !23 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive16, i32 0, i32 0 %13 = load i8*, i8** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %agg.tmp10, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive18, i32 0, i32 0 %14 = load i8*, i8** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp11, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive20, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %agg.tmp12, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive22, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive23, align 8 %17 = bitcast %"struct.thrust::pair"* %agg.tmp13 to i16* %18 = load i16, i16* %17, align 1 %call24 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail10sequential21exclusive_scan_by_keyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPaEENS8_IPNS_4pairIaaEEEESE_SC_NS_8equal_toIaEE9add_pairsEET2_RNS2_16execution_policyIT_EET0_SN_T1_SI_T3_T4_T5_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %2, i8* %13, i8* %14, %"struct.thrust::pair"* %15, %"struct.thrust::pair"* %16, i16 %18) %coerce.dive25 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive25, i32 0, i32 0 store %"struct.thrust::pair"* %call24, %"struct.thrust::pair"** %coerce.dive26, align 8 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive27, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive28, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail10sequential21exclusive_scan_by_keyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPaEENS8_IPNS_4pairIaaEEEESE_SC_NS_8equal_toIaEE9add_pairsEET2_RNS2_16execution_policyIT_EET0_SN_T1_SI_T3_T4_T5_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), i8* %first1.coerce, i8* %last1.coerce, %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"* %result.coerce, i16 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.51", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.51", align 8 %result = alloca %"class.thrust::detail::normal_iterator.51", align 8 %init = alloca %"struct.thrust::pair", align 1 %binary_pred = alloca %"struct.thrust::equal_to", align 1 %binary_op = alloca %struct.add_pairs, align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %temp_key = alloca i8, align 1 %temp_value = alloca %"struct.thrust::pair", align 1 %next = alloca %"struct.thrust::pair", align 1 %ref.tmp = alloca %"struct.thrust::pair", align 1 %key = alloca i8, align 1 %ref.tmp22 = alloca %"struct.thrust::pair", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator", %"class.thrust::detail::normal_iterator"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor", %"class.thrust::iterator_adaptor"* %coerce.dive2, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %1 = bitcast %"struct.thrust::pair"* %init to i16* store i16 %init.coerce, i16* %1, align 1 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 %2 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to %"class.thrust::iterator_facade"* %3 = bitcast %"class.thrust::detail::normal_iterator"* %last1 to %"class.thrust::iterator_facade"* %call = call zeroext i1 @_ZN6thrustneINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade"* dereferenceable(1) %2, %"class.thrust::iterator_facade"* dereferenceable(1) %3) br i1 %call, label %if.then, label %if.end27 if.then: ; preds = %entry call void @llvm.lifetime.start(i64 1, i8* %temp_key) #5 %4 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to %"class.thrust::iterator_facade"* %call9 = call dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEdeEv(%"class.thrust::iterator_facade"* %4) %5 = load i8, i8* %call9, align 1, !tbaa !7 store i8 %5, i8* %temp_key, align 1, !tbaa !7 %6 = bitcast %"struct.thrust::pair"* %temp_value to i8* call void @llvm.lifetime.start(i64 2, i8* %6) #5 %7 = bitcast %"class.thrust::detail::normal_iterator.51"* %first2 to %"class.thrust::iterator_facade.53"* %call10 = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.53"* %7) %8 = bitcast %"struct.thrust::pair"* %temp_value to i8* %9 = bitcast %"struct.thrust::pair"* %call10 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 2, i32 1, i1 false), !tbaa.struct !23 %10 = bitcast %"struct.thrust::pair"* %next to i8* call void @llvm.lifetime.start(i64 2, i8* %10) #5 %11 = bitcast %"struct.thrust::pair"* %next to i8* %12 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 2, i32 1, i1 false), !tbaa.struct !23 %13 = bitcast %"class.thrust::detail::normal_iterator.51"* %result to %"class.thrust::iterator_facade.53"* %call11 = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.53"* %13) %14 = bitcast %"struct.thrust::pair"* %call11 to i8* %15 = bitcast %"struct.thrust::pair"* %next to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 2, i32 1, i1 false), !tbaa.struct !23 %call12 = call i16 @_ZN9add_pairsclIN6thrust4pairIaaEES3_EET_RKS4_RKT0_(%struct.add_pairs* %binary_op, %"struct.thrust::pair"* dereferenceable(2) %next, %"struct.thrust::pair"* dereferenceable(2) %temp_value) %16 = bitcast %"struct.thrust::pair"* %ref.tmp to i16* store i16 %call12, i16* %16, align 1 %17 = bitcast %"struct.thrust::pair"* %next to i8* %18 = bitcast %"struct.thrust::pair"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %17, i8* %18, i64 2, i32 1, i1 false), !tbaa.struct !23 %19 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to %"class.thrust::iterator_facade"* %call13 = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEppEv(%"class.thrust::iterator_facade"* %19) %20 = bitcast %"class.thrust::detail::normal_iterator.51"* %first2 to %"class.thrust::iterator_facade.53"* %call14 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.53"* %20) %21 = bitcast %"class.thrust::detail::normal_iterator.51"* %result to %"class.thrust::iterator_facade.53"* %call15 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.53"* %21) br label %for.cond for.cond: ; preds = %for.inc, %if.then %22 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to %"class.thrust::iterator_facade"* %23 = bitcast %"class.thrust::detail::normal_iterator"* %last1 to %"class.thrust::iterator_facade"* %call16 = call zeroext i1 @_ZN6thrustneINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade"* dereferenceable(1) %22, %"class.thrust::iterator_facade"* dereferenceable(1) %23) br i1 %call16, label %for.body, label %for.end for.body: ; preds = %for.cond call void @llvm.lifetime.start(i64 1, i8* %key) #5 %24 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to %"class.thrust::iterator_facade"* %call17 = call dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEdeEv(%"class.thrust::iterator_facade"* %24) %25 = load i8, i8* %call17, align 1, !tbaa !7 store i8 %25, i8* %key, align 1, !tbaa !7 %26 = bitcast %"class.thrust::detail::normal_iterator.51"* %first2 to %"class.thrust::iterator_facade.53"* %call18 = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.53"* %26) %27 = bitcast %"struct.thrust::pair"* %temp_value to i8* %28 = bitcast %"struct.thrust::pair"* %call18 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %27, i8* %28, i64 2, i32 1, i1 false), !tbaa.struct !23 %call19 = call zeroext i1 @_ZNK6thrust8equal_toIaEclERKaS3_(%"struct.thrust::equal_to"* %binary_pred, i8* dereferenceable(1) %temp_key, i8* dereferenceable(1) %key) br i1 %call19, label %if.end, label %if.then20 if.then20: ; preds = %for.body %29 = bitcast %"struct.thrust::pair"* %next to i8* %30 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %29, i8* %30, i64 2, i32 1, i1 false), !tbaa.struct !23 br label %if.end if.end: ; preds = %if.then20, %for.body %31 = bitcast %"class.thrust::detail::normal_iterator.51"* %result to %"class.thrust::iterator_facade.53"* %call21 = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.53"* %31) %32 = bitcast %"struct.thrust::pair"* %call21 to i8* %33 = bitcast %"struct.thrust::pair"* %next to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %32, i8* %33, i64 2, i32 1, i1 false), !tbaa.struct !23 %call23 = call i16 @_ZN9add_pairsclIN6thrust4pairIaaEES3_EET_RKS4_RKT0_(%struct.add_pairs* %binary_op, %"struct.thrust::pair"* dereferenceable(2) %next, %"struct.thrust::pair"* dereferenceable(2) %temp_value) %34 = bitcast %"struct.thrust::pair"* %ref.tmp22 to i16* store i16 %call23, i16* %34, align 1 %35 = bitcast %"struct.thrust::pair"* %next to i8* %36 = bitcast %"struct.thrust::pair"* %ref.tmp22 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %35, i8* %36, i64 2, i32 1, i1 false), !tbaa.struct !23 %37 = load i8, i8* %key, align 1, !tbaa !7 store i8 %37, i8* %temp_key, align 1, !tbaa !7 call void @llvm.lifetime.end(i64 1, i8* %key) #5 br label %for.inc for.inc: ; preds = %if.end %38 = bitcast %"class.thrust::detail::normal_iterator"* %first1 to %"class.thrust::iterator_facade"* %call24 = call dereferenceable(8) %"class.thrust::detail::normal_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalEppEv(%"class.thrust::iterator_facade"* %38) %39 = bitcast %"class.thrust::detail::normal_iterator.51"* %first2 to %"class.thrust::iterator_facade.53"* %call25 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.53"* %39) %40 = bitcast %"class.thrust::detail::normal_iterator.51"* %result to %"class.thrust::iterator_facade.53"* %call26 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.53"* %40) br label %for.cond for.end: ; preds = %for.cond %41 = bitcast %"struct.thrust::pair"* %next to i8* call void @llvm.lifetime.end(i64 2, i8* %41) #5 %42 = bitcast %"struct.thrust::pair"* %temp_value to i8* call void @llvm.lifetime.end(i64 2, i8* %42) #5 call void @llvm.lifetime.end(i64 1, i8* %temp_key) #5 br label %if.end27 if.end27: ; preds = %for.end, %entry %43 = bitcast %"class.thrust::detail::normal_iterator.51"* %retval to i8* %44 = bitcast %"class.thrust::detail::normal_iterator.51"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %43, i8* %44, i64 8, i32 8, i1 false) %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive28, i32 0, i32 0 %45 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive29, align 8 ret %"struct.thrust::pair"* %45 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrustneINS_6detail15normal_iteratorIPaEEaNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERalS4_aS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade"*, align 8 store %"class.thrust::iterator_facade"* %lhs, %"class.thrust::iterator_facade"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade"* %rhs, %"class.thrust::iterator_facade"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade"* %0 to %"class.thrust::detail::normal_iterator"* %2 = load %"class.thrust::iterator_facade"*, %"class.thrust::iterator_facade"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade"* %2 to %"class.thrust::detail::normal_iterator"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPaEES5_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator"* dereferenceable(8) %3) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: uwtable define linkonce_odr i16 @_ZN9add_pairsclIN6thrust4pairIaaEES3_EET_RKS4_RKT0_(%struct.add_pairs* %this, %"struct.thrust::pair"* dereferenceable(2) %x, %"struct.thrust::pair"* dereferenceable(2) %y) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair", align 1 %this.addr = alloca %struct.add_pairs*, align 8 %x.addr = alloca %"struct.thrust::pair"*, align 8 %y.addr = alloca %"struct.thrust::pair"*, align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 store %struct.add_pairs* %this, %struct.add_pairs** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %x, %"struct.thrust::pair"** %x.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %y, %"struct.thrust::pair"** %y.addr, align 8, !tbaa !7 %this1 = load %struct.add_pairs*, %struct.add_pairs** %this.addr, align 8 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %x.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %0, i32 0, i32 0 %1 = load i8, i8* %first, align 1, !tbaa !26 %conv = sext i8 %1 to i32 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %y.addr, align 8 %first2 = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %2, i32 0, i32 0 %3 = load i8, i8* %first2, align 1, !tbaa !26 %conv3 = sext i8 %3 to i32 %add = add nsw i32 %conv, %conv3 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %x.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %4, i32 0, i32 1 %5 = load i8, i8* %second, align 1, !tbaa !29 %conv4 = sext i8 %5 to i32 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %y.addr, align 8 %second5 = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %6, i32 0, i32 1 %7 = load i8, i8* %second5, align 1, !tbaa !29 %conv6 = sext i8 %7 to i32 %add7 = add nsw i32 %conv4, %conv6 %call = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %add, i32 %add7) %8 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call, i64* %8, align 4 call void @_ZN6thrust4pairIaaEC2IiiEERKNS0_IT_T0_EE(%"struct.thrust::pair"* %retval, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %9 = bitcast %"struct.thrust::pair"* %retval to i16* %10 = load i16, i16* %9, align 1 ret i16 %10 } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust8equal_toIaEclERKaS3_(%"struct.thrust::equal_to"* %this, i8* dereferenceable(1) %lhs, i8* dereferenceable(1) %rhs) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::equal_to"*, align 8 %lhs.addr = alloca i8*, align 8 %rhs.addr = alloca i8*, align 8 store %"struct.thrust::equal_to"* %this, %"struct.thrust::equal_to"** %this.addr, align 8, !tbaa !1 store i8* %lhs, i8** %lhs.addr, align 8, !tbaa !7 store i8* %rhs, i8** %rhs.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::equal_to"*, %"struct.thrust::equal_to"** %this.addr, align 8 %0 = load i8*, i8** %lhs.addr, align 8 %1 = load i8, i8* %0, align 1, !tbaa !7 %conv = sext i8 %1 to i32 %2 = load i8*, i8** %rhs.addr, align 8 %3 = load i8, i8* %2, align 1, !tbaa !7 %conv2 = sext i8 %3 to i32 %cmp = icmp eq i32 %conv, %conv2 ret i1 %cmp } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust21exclusive_scan_by_keyINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS6_INS7_INS_4pairIaaEEEEEESD_SB_NS_8equal_toIaEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SN_T1_SH_T3_T4_T5_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i8* %first1.coerce, i8* %last1.coerce, %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"* %result.coerce, i16 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.66", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %result = alloca %"class.thrust::detail::normal_iterator.66", align 8 %init = alloca %"struct.thrust::pair", align 1 %binary_pred = alloca %"struct.thrust::equal_to", align 1 %binary_op = alloca %struct.add_pairs, align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp22 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp23 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp24 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp25 = alloca %"struct.thrust::pair", align 1 %agg.tmp26 = alloca %"struct.thrust::equal_to", align 1 %agg.tmp27 = alloca %struct.add_pairs, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive3, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive8, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive13, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive18, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive19, align 8 %0 = bitcast %"struct.thrust::pair"* %init to i16* store i16 %init.coerce, i16* %0, align 1 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call21 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call21 to %"struct.thrust::execution_policy.120"* %3 = bitcast %"class.thrust::detail::normal_iterator.56"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.56"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.56"* %agg.tmp22 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.56"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp23 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.66"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp24 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.66"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::pair"* %agg.tmp25 to i8* %12 = bitcast %"struct.thrust::pair"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 2, i32 1, i1 false), !tbaa.struct !23 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive31, i32 0, i32 0 %13 = load i8*, i8** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp22, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive35, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive36, i32 0, i32 0 %14 = load i8*, i8** %coerce.dive37, align 8 %coerce.dive38 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp23, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive41, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive42, align 8 %coerce.dive43 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp24, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive45, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive46, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive47, align 8 %17 = bitcast %"struct.thrust::pair"* %agg.tmp25 to i16* %18 = load i16, i16* %17, align 1 %call48 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic21exclusive_scan_by_keyINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS8_INS9_INS_4pairIaaEEEEEESF_SD_NS_8equal_toIaEE9add_pairsEET2_RNS_16execution_policyIT_EET0_SO_T1_SJ_T3_T4_T5_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i8* %13, i8* %14, %"struct.thrust::pair"* %15, %"struct.thrust::pair"* %16, i16 %18) %coerce.dive49 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive49, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive50, i32 0, i32 0 %coerce.dive52 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive51, i32 0, i32 0 %coerce.dive53 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive52, i32 0, i32 0 store %"struct.thrust::pair"* %call48, %"struct.thrust::pair"** %coerce.dive53, align 8 %coerce.dive54 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive55, i32 0, i32 0 %coerce.dive57 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive56, i32 0, i32 0 %coerce.dive58 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive57, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive58, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_4cuda6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE(%"struct.thrust::execution_policy.120"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system2, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system3) #0 comdat { entry: %system1.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %system3.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 store %"struct.thrust::execution_policy.120"* %system1, %"struct.thrust::execution_policy.120"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %system2, %"struct.thrust::execution_policy.120"** %system2.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %system3, %"struct.thrust::execution_policy.120"** %system3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system1.addr, align 8 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_4cuda6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE(%"struct.thrust::execution_policy.120"* dereferenceable(1) %0, %"struct.thrust::execution_policy.120"* dereferenceable(1) %1) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::execution_policy.120"* %3 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system3.addr, align 8 %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_4cuda6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE(%"struct.thrust::execution_policy.120"* dereferenceable(1) %2, %"struct.thrust::execution_policy.120"* dereferenceable(1) %3) ret %"struct.thrust::system::cuda::detail::tag"* %call1 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic21exclusive_scan_by_keyINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS8_INS9_INS_4pairIaaEEEEEESF_SD_NS_8equal_toIaEE9add_pairsEET2_RNS_16execution_policyIT_EET0_SO_T1_SJ_T3_T4_T5_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i8* %first1.coerce, i8* %last1.coerce, %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"* %result.coerce, i16 %init.coerce) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca %"class.thrust::detail::normal_iterator.66", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %result = alloca %"class.thrust::detail::normal_iterator.66", align 8 %init = alloca %"struct.thrust::pair", align 1 %binary_pred = alloca %"struct.thrust::equal_to", align 1 %binary_op = alloca %struct.add_pairs, align 1 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n = alloca i64, align 8 %last2 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %flags = alloca %"class.thrust::detail::temporary_array", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce = alloca %"class.thrust::reference.205", align 8 %ref.tmp = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp33 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp41 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp49 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %ref.tmp50 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp63 = alloca %"struct.thrust::detail::binary_negate", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::binary_negate", align 1 %coerce86 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %temp = alloca %"class.thrust::detail::temporary_array.206", align 8 %agg.tmp92 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp93 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp102 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %ref.tmp103 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp116 = alloca %"class.thrust::detail::normal_iterator.212", align 8 %ref.tmp117 = alloca %"class.thrust::detail::normal_iterator.212", align 8 %agg.tmp130 = alloca %"struct.thrust::negate", align 1 %coerce151 = alloca %"class.thrust::detail::normal_iterator.212", align 8 %coerce158 = alloca %"class.thrust::reference.215", align 8 %agg.tmp164 = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp165 = alloca %"class.thrust::tuple.223", align 8 %ref.tmp166 = alloca %"class.thrust::detail::normal_iterator.212", align 8 %ref.tmp173 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp187 = alloca %"class.thrust::zip_iterator.221", align 8 %ref.tmp188 = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp189 = alloca %"class.thrust::tuple.223", align 8 %ref.tmp190 = alloca %"class.thrust::detail::normal_iterator.212", align 8 %ref.tmp197 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp215 = alloca %"class.thrust::zip_iterator.216", align 8 %agg.tmp216 = alloca %"class.thrust::tuple.218", align 8 %ref.tmp217 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp231 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %agg.tmp232 = alloca %struct.add_pairs, align 1 %coerce236 = alloca %"class.thrust::zip_iterator.216", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive3, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive8, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive13, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive18, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive19, align 8 %0 = bitcast %"struct.thrust::pair"* %init to i16* store i16 %init.coerce, i16* %0, align 1 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %1 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = bitcast %"class.thrust::detail::normal_iterator.56"* %last1 to %"class.thrust::iterator_facade.58"* %3 = bitcast %"class.thrust::detail::normal_iterator.56"* %first1 to %"class.thrust::iterator_facade.58"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElS5_aS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.58"* dereferenceable(1) %2, %"class.thrust::iterator_facade.58"* dereferenceable(1) %3) store i64 %call, i64* %n, align 8, !tbaa !13 %4 = load i64, i64* %n, align 8, !tbaa !13 %cmp = icmp ne i64 %4, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %5 = bitcast %"class.thrust::detail::normal_iterator.66"* %last2 to i8* call void @llvm.lifetime.start(i64 8, i8* %5) #5 %6 = bitcast %"class.thrust::detail::normal_iterator.66"* %first2 to %"class.thrust::iterator_facade.68"* %7 = load i64, i64* %n, align 8, !tbaa !13 %call21 = call %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEET_RKNS_15iterator_facadeISF_T0_T1_T2_T3_T4_EENSF_15difference_typeE(%"class.thrust::iterator_facade.68"* dereferenceable(1) %6, i64 %7) %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %last2, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive25, i32 0, i32 0 store %"struct.thrust::pair"* %call21, %"struct.thrust::pair"** %coerce.dive26, align 8 %8 = bitcast %"class.thrust::detail::temporary_array"* %flags to i8* call void @llvm.lifetime.start(i64 24, i8* %8) #5 %9 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %10 = load i64, i64* %n, align 8, !tbaa !13 call void @_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS5_EEm(%"class.thrust::detail::temporary_array"* %flags, %"struct.thrust::execution_policy.120"* dereferenceable(1) %9, i64 %10) %11 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call27 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEEixEm(%"class.thrust::detail::contiguous_storage.198"* %11, i64 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then %coerce.dive28 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %coerce, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive29, i32 0, i32 0 store i32* %call27, i32** %coerce.dive30, align 8 store i32 1, i32* %ref.tmp, align 4, !tbaa !11 %call32 = invoke dereferenceable(8) %"class.thrust::reference.205"* @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EaSERKj(%"class.thrust::reference.205"* %coerce, i32* dereferenceable(4) %ref.tmp) to label %invoke.cont31 unwind label %lpad invoke.cont31: ; preds = %invoke.cont %12 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %13 = bitcast %"struct.thrust::execution_policy.120"* %12 to %"struct.thrust::detail::execution_policy_base.121"* %14 = bitcast %"class.thrust::detail::normal_iterator.56"* %agg.tmp to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.56"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::detail::normal_iterator.56"* %last1 to %"class.thrust::iterator_facade.58"* %call35 = invoke i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEmiEl(%"class.thrust::iterator_facade.58"* %16, i64 1) to label %invoke.cont34 unwind label %lpad invoke.cont34: ; preds = %invoke.cont31 %coerce.dive36 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp33, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive36, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive37, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive39, i32 0, i32 0 store i8* %call35, i8** %coerce.dive40, align 8 %17 = bitcast %"class.thrust::detail::normal_iterator.56"* %first1 to %"class.thrust::iterator_facade.58"* %call43 = invoke i8* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE(%"class.thrust::iterator_facade.58"* dereferenceable(1) %17, i64 1) to label %invoke.cont42 unwind label %lpad invoke.cont42: ; preds = %invoke.cont34 %coerce.dive44 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp41, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive45, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive47, i32 0, i32 0 store i8* %call43, i8** %coerce.dive48, align 8 %18 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call52 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %18) to label %invoke.cont51 unwind label %lpad invoke.cont51: ; preds = %invoke.cont42 %coerce.dive53 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp50, i32 0, i32 0 %coerce.dive54 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive53, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive55, i32 0, i32 0 store i32* %call52, i32** %coerce.dive56, align 8 %19 = bitcast %"class.thrust::detail::normal_iterator.199"* %ref.tmp50 to %"class.thrust::iterator_facade.201"* %call58 = invoke i32* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEET_RKNS_15iterator_facadeISE_T0_T1_T2_T3_T4_EENSE_15difference_typeE(%"class.thrust::iterator_facade.201"* dereferenceable(1) %19, i64 1) to label %invoke.cont57 unwind label %lpad invoke.cont57: ; preds = %invoke.cont51 %coerce.dive59 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp49, i32 0, i32 0 %coerce.dive60 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive59, i32 0, i32 0 %coerce.dive61 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive60, i32 0, i32 0 %coerce.dive62 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive61, i32 0, i32 0 store i32* %call58, i32** %coerce.dive62, align 8 invoke void @_ZN6thrust6detail4not2INS_8equal_toIaEEEENS0_13binary_negateIT_EERKS5_(%"struct.thrust::equal_to"* dereferenceable(1) %binary_pred) to label %invoke.cont64 unwind label %lpad invoke.cont64: ; preds = %invoke.cont57 %coerce.dive65 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp, i32 0, i32 0 %coerce.dive66 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive65, i32 0, i32 0 %coerce.dive67 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive66, i32 0, i32 0 %coerce.dive68 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive67, i32 0, i32 0 %coerce.dive69 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive68, i32 0, i32 0 %20 = load i8*, i8** %coerce.dive69, align 8 %coerce.dive70 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp33, i32 0, i32 0 %coerce.dive71 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive70, i32 0, i32 0 %coerce.dive72 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive71, i32 0, i32 0 %coerce.dive73 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive72, i32 0, i32 0 %coerce.dive74 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive73, i32 0, i32 0 %21 = load i8*, i8** %coerce.dive74, align 8 %coerce.dive75 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp41, i32 0, i32 0 %coerce.dive76 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive75, i32 0, i32 0 %coerce.dive77 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive76, i32 0, i32 0 %coerce.dive78 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive77, i32 0, i32 0 %coerce.dive79 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive78, i32 0, i32 0 %22 = load i8*, i8** %coerce.dive79, align 8 %coerce.dive80 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp49, i32 0, i32 0 %coerce.dive81 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive80, i32 0, i32 0 %coerce.dive82 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive81, i32 0, i32 0 %coerce.dive83 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive82, i32 0, i32 0 %23 = load i32*, i32** %coerce.dive83, align 8 %call85 = invoke i32* @_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEES9_NS6_INS_7pointerIjS4_NS_11use_defaultESB_EEEENS5_13binary_negateINS_8equal_toIaEEEEEET2_RKNS5_21execution_policy_baseIT_EET0_SO_T1_SI_T3_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %13, i8* %20, i8* %21, i8* %22, i32* %23) to label %invoke.cont84 unwind label %lpad invoke.cont84: ; preds = %invoke.cont64 %coerce.dive87 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %coerce86, i32 0, i32 0 %coerce.dive88 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive87, i32 0, i32 0 %coerce.dive89 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive88, i32 0, i32 0 %coerce.dive90 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive89, i32 0, i32 0 store i32* %call85, i32** %coerce.dive90, align 8 %24 = bitcast %"class.thrust::detail::temporary_array.206"* %temp to i8* call void @llvm.lifetime.start(i64 24, i8* %24) #5 %25 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %26 = load i64, i64* %n, align 8, !tbaa !13 invoke void @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EEm(%"class.thrust::detail::temporary_array.206"* %temp, %"struct.thrust::execution_policy.120"* dereferenceable(1) %25, i64 %26) to label %invoke.cont91 unwind label %lpad invoke.cont91: ; preds = %invoke.cont84 %27 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %28 = bitcast %"struct.thrust::execution_policy.120"* %27 to %"struct.thrust::detail::execution_policy_base.121"* %29 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp92 to i8* %30 = bitcast %"class.thrust::detail::normal_iterator.66"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %29, i8* %30, i64 8, i32 8, i1 false) %31 = bitcast %"class.thrust::detail::normal_iterator.66"* %last2 to %"class.thrust::iterator_facade.68"* %call96 = invoke %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmiEl(%"class.thrust::iterator_facade.68"* %31, i64 1) to label %invoke.cont95 unwind label %lpad94 invoke.cont95: ; preds = %invoke.cont91 %coerce.dive97 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp93, i32 0, i32 0 %coerce.dive98 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive97, i32 0, i32 0 %coerce.dive99 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive98, i32 0, i32 0 %coerce.dive100 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive99, i32 0, i32 0 %coerce.dive101 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive100, i32 0, i32 0 store %"struct.thrust::pair"* %call96, %"struct.thrust::pair"** %coerce.dive101, align 8 %32 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call105 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %32) to label %invoke.cont104 unwind label %lpad94 invoke.cont104: ; preds = %invoke.cont95 %coerce.dive106 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp103, i32 0, i32 0 %coerce.dive107 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive106, i32 0, i32 0 %coerce.dive108 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive107, i32 0, i32 0 %coerce.dive109 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive108, i32 0, i32 0 store i32* %call105, i32** %coerce.dive109, align 8 %33 = bitcast %"class.thrust::detail::normal_iterator.199"* %ref.tmp103 to %"class.thrust::iterator_facade.201"* %call111 = invoke i32* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEET_RKNS_15iterator_facadeISE_T0_T1_T2_T3_T4_EENSE_15difference_typeE(%"class.thrust::iterator_facade.201"* dereferenceable(1) %33, i64 1) to label %invoke.cont110 unwind label %lpad94 invoke.cont110: ; preds = %invoke.cont104 %coerce.dive112 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp102, i32 0, i32 0 %coerce.dive113 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive112, i32 0, i32 0 %coerce.dive114 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive113, i32 0, i32 0 %coerce.dive115 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive114, i32 0, i32 0 store i32* %call111, i32** %coerce.dive115, align 8 %34 = bitcast %"class.thrust::detail::temporary_array.206"* %temp to %"class.thrust::detail::contiguous_storage.207"* %call119 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.207"* %34) to label %invoke.cont118 unwind label %lpad94 invoke.cont118: ; preds = %invoke.cont110 %coerce.dive120 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %ref.tmp117, i32 0, i32 0 %coerce.dive121 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive120, i32 0, i32 0 %coerce.dive122 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive121, i32 0, i32 0 %coerce.dive123 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive122, i32 0, i32 0 store %"struct.thrust::pair"* %call119, %"struct.thrust::pair"** %coerce.dive123, align 8 %35 = bitcast %"class.thrust::detail::normal_iterator.212"* %ref.tmp117 to %"class.thrust::iterator_facade.214"* %call125 = invoke %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.214"* dereferenceable(1) %35, i64 1) to label %invoke.cont124 unwind label %lpad94 invoke.cont124: ; preds = %invoke.cont118 %coerce.dive126 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %agg.tmp116, i32 0, i32 0 %coerce.dive127 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive126, i32 0, i32 0 %coerce.dive128 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive127, i32 0, i32 0 %coerce.dive129 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive128, i32 0, i32 0 store %"struct.thrust::pair"* %call125, %"struct.thrust::pair"** %coerce.dive129, align 8 %coerce.dive131 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp92, i32 0, i32 0 %coerce.dive132 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive131, i32 0, i32 0 %coerce.dive133 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive132, i32 0, i32 0 %coerce.dive134 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive133, i32 0, i32 0 %coerce.dive135 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive134, i32 0, i32 0 %36 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive135, align 8 %coerce.dive136 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp93, i32 0, i32 0 %coerce.dive137 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive136, i32 0, i32 0 %coerce.dive138 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive137, i32 0, i32 0 %coerce.dive139 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive138, i32 0, i32 0 %coerce.dive140 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive139, i32 0, i32 0 %37 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive140, align 8 %coerce.dive141 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp102, i32 0, i32 0 %coerce.dive142 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive141, i32 0, i32 0 %coerce.dive143 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive142, i32 0, i32 0 %coerce.dive144 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive143, i32 0, i32 0 %38 = load i32*, i32** %coerce.dive144, align 8 %coerce.dive145 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %agg.tmp116, i32 0, i32 0 %coerce.dive146 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive145, i32 0, i32 0 %coerce.dive147 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive146, i32 0, i32 0 %coerce.dive148 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive147, i32 0, i32 0 %39 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive148, align 8 %call150 = invoke %"struct.thrust::pair"* @_ZN6thrust15replace_copy_ifINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS_6negateIjEES9_EET2_RKNS5_21execution_policy_baseIT_EET0_SQ_T1_SK_T3_RKT4_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %28, %"struct.thrust::pair"* %36, %"struct.thrust::pair"* %37, i32* %38, %"struct.thrust::pair"* %39, %"struct.thrust::pair"* dereferenceable(2) %init) to label %invoke.cont149 unwind label %lpad94 invoke.cont149: ; preds = %invoke.cont124 %coerce.dive152 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %coerce151, i32 0, i32 0 %coerce.dive153 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive152, i32 0, i32 0 %coerce.dive154 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive153, i32 0, i32 0 %coerce.dive155 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive154, i32 0, i32 0 store %"struct.thrust::pair"* %call150, %"struct.thrust::pair"** %coerce.dive155, align 8 %40 = bitcast %"class.thrust::detail::temporary_array.206"* %temp to %"class.thrust::detail::contiguous_storage.207"* %call157 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEixEm(%"class.thrust::detail::contiguous_storage.207"* %40, i64 0) to label %invoke.cont156 unwind label %lpad94 invoke.cont156: ; preds = %invoke.cont149 %coerce.dive159 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %coerce158, i32 0, i32 0 %coerce.dive160 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive159, i32 0, i32 0 %coerce.dive161 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive160, i32 0, i32 0 store %"struct.thrust::pair"* %call157, %"struct.thrust::pair"** %coerce.dive161, align 8 %call163 = invoke dereferenceable(8) %"class.thrust::reference.215"* @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EaSERKS2_(%"class.thrust::reference.215"* %coerce158, %"struct.thrust::pair"* dereferenceable(2) %init) to label %invoke.cont162 unwind label %lpad94 invoke.cont162: ; preds = %invoke.cont156 %41 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %42 = bitcast %"struct.thrust::execution_policy.120"* %41 to %"struct.thrust::detail::execution_policy_base.121"* %43 = bitcast %"class.thrust::detail::temporary_array.206"* %temp to %"class.thrust::detail::contiguous_storage.207"* %call168 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.207"* %43) to label %invoke.cont167 unwind label %lpad94 invoke.cont167: ; preds = %invoke.cont162 %coerce.dive169 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %ref.tmp166, i32 0, i32 0 %coerce.dive170 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive169, i32 0, i32 0 %coerce.dive171 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive170, i32 0, i32 0 %coerce.dive172 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive171, i32 0, i32 0 store %"struct.thrust::pair"* %call168, %"struct.thrust::pair"** %coerce.dive172, align 8 %44 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call175 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %44) to label %invoke.cont174 unwind label %lpad94 invoke.cont174: ; preds = %invoke.cont167 %coerce.dive176 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp173, i32 0, i32 0 %coerce.dive177 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive176, i32 0, i32 0 %coerce.dive178 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive177, i32 0, i32 0 %coerce.dive179 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive178, i32 0, i32 0 store i32* %call175, i32** %coerce.dive179, align 8 %call181 = invoke { %"struct.thrust::pair"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESI_SI_SI_SI_SI_SI_SI_E4typeERKSG_RKSH_(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %ref.tmp166, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %ref.tmp173) to label %invoke.cont180 unwind label %lpad94 invoke.cont180: ; preds = %invoke.cont174 %coerce.dive182 = getelementptr inbounds %"class.thrust::tuple.223", %"class.thrust::tuple.223"* %agg.tmp165, i32 0, i32 0 %45 = bitcast %"struct.thrust::detail::cons.224"* %coerce.dive182 to { %"struct.thrust::pair"*, i32* }* %46 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %45, i32 0, i32 0 %47 = extractvalue { %"struct.thrust::pair"*, i32* } %call181, 0 store %"struct.thrust::pair"* %47, %"struct.thrust::pair"** %46, align 8 %48 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %45, i32 0, i32 1 %49 = extractvalue { %"struct.thrust::pair"*, i32* } %call181, 1 store i32* %49, i32** %48, align 8 %50 = bitcast %"class.thrust::tuple.223"* %agg.tmp165 to { %"struct.thrust::pair"*, i32* }* %51 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %50, i32 0, i32 0 %52 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %51, align 8 %53 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %50, i32 0, i32 1 %54 = load i32*, i32** %53, align 8 %call184 = invoke { %"struct.thrust::pair"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENS_12zip_iteratorIT_EESJ_(%"struct.thrust::pair"* %52, i32* %54) to label %invoke.cont183 unwind label %lpad94 invoke.cont183: ; preds = %invoke.cont180 %coerce.dive185 = getelementptr inbounds %"class.thrust::zip_iterator.221", %"class.thrust::zip_iterator.221"* %agg.tmp164, i32 0, i32 0 %coerce.dive186 = getelementptr inbounds %"class.thrust::tuple.223", %"class.thrust::tuple.223"* %coerce.dive185, i32 0, i32 0 %55 = bitcast %"struct.thrust::detail::cons.224"* %coerce.dive186 to { %"struct.thrust::pair"*, i32* }* %56 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %55, i32 0, i32 0 %57 = extractvalue { %"struct.thrust::pair"*, i32* } %call184, 0 store %"struct.thrust::pair"* %57, %"struct.thrust::pair"** %56, align 8 %58 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %55, i32 0, i32 1 %59 = extractvalue { %"struct.thrust::pair"*, i32* } %call184, 1 store i32* %59, i32** %58, align 8 %60 = bitcast %"class.thrust::detail::temporary_array.206"* %temp to %"class.thrust::detail::contiguous_storage.207"* %call192 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.207"* %60) to label %invoke.cont191 unwind label %lpad94 invoke.cont191: ; preds = %invoke.cont183 %coerce.dive193 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %ref.tmp190, i32 0, i32 0 %coerce.dive194 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive193, i32 0, i32 0 %coerce.dive195 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive194, i32 0, i32 0 %coerce.dive196 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive195, i32 0, i32 0 store %"struct.thrust::pair"* %call192, %"struct.thrust::pair"** %coerce.dive196, align 8 %61 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call199 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %61) to label %invoke.cont198 unwind label %lpad94 invoke.cont198: ; preds = %invoke.cont191 %coerce.dive200 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp197, i32 0, i32 0 %coerce.dive201 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive200, i32 0, i32 0 %coerce.dive202 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive201, i32 0, i32 0 %coerce.dive203 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive202, i32 0, i32 0 store i32* %call199, i32** %coerce.dive203, align 8 %call205 = invoke { %"struct.thrust::pair"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESI_SI_SI_SI_SI_SI_SI_E4typeERKSG_RKSH_(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %ref.tmp190, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %ref.tmp197) to label %invoke.cont204 unwind label %lpad94 invoke.cont204: ; preds = %invoke.cont198 %coerce.dive206 = getelementptr inbounds %"class.thrust::tuple.223", %"class.thrust::tuple.223"* %agg.tmp189, i32 0, i32 0 %62 = bitcast %"struct.thrust::detail::cons.224"* %coerce.dive206 to { %"struct.thrust::pair"*, i32* }* %63 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %62, i32 0, i32 0 %64 = extractvalue { %"struct.thrust::pair"*, i32* } %call205, 0 store %"struct.thrust::pair"* %64, %"struct.thrust::pair"** %63, align 8 %65 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %62, i32 0, i32 1 %66 = extractvalue { %"struct.thrust::pair"*, i32* } %call205, 1 store i32* %66, i32** %65, align 8 %67 = bitcast %"class.thrust::tuple.223"* %agg.tmp189 to { %"struct.thrust::pair"*, i32* }* %68 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %67, i32 0, i32 0 %69 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %68, align 8 %70 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %67, i32 0, i32 1 %71 = load i32*, i32** %70, align 8 %call208 = invoke { %"struct.thrust::pair"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENS_12zip_iteratorIT_EESJ_(%"struct.thrust::pair"* %69, i32* %71) to label %invoke.cont207 unwind label %lpad94 invoke.cont207: ; preds = %invoke.cont204 %coerce.dive209 = getelementptr inbounds %"class.thrust::zip_iterator.221", %"class.thrust::zip_iterator.221"* %ref.tmp188, i32 0, i32 0 %coerce.dive210 = getelementptr inbounds %"class.thrust::tuple.223", %"class.thrust::tuple.223"* %coerce.dive209, i32 0, i32 0 %72 = bitcast %"struct.thrust::detail::cons.224"* %coerce.dive210 to { %"struct.thrust::pair"*, i32* }* %73 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %72, i32 0, i32 0 %74 = extractvalue { %"struct.thrust::pair"*, i32* } %call208, 0 store %"struct.thrust::pair"* %74, %"struct.thrust::pair"** %73, align 8 %75 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %72, i32 0, i32 1 %76 = extractvalue { %"struct.thrust::pair"*, i32* } %call208, 1 store i32* %76, i32** %75, align 8 %77 = bitcast %"class.thrust::zip_iterator.221"* %ref.tmp188 to %"class.thrust::iterator_facade.222"* %78 = load i64, i64* %n, align 8, !tbaa !13 %call212 = invoke { %"struct.thrust::pair"*, i32* } @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE(%"class.thrust::iterator_facade.222"* dereferenceable(1) %77, i64 %78) to label %invoke.cont211 unwind label %lpad94 invoke.cont211: ; preds = %invoke.cont207 %coerce.dive213 = getelementptr inbounds %"class.thrust::zip_iterator.221", %"class.thrust::zip_iterator.221"* %agg.tmp187, i32 0, i32 0 %coerce.dive214 = getelementptr inbounds %"class.thrust::tuple.223", %"class.thrust::tuple.223"* %coerce.dive213, i32 0, i32 0 %79 = bitcast %"struct.thrust::detail::cons.224"* %coerce.dive214 to { %"struct.thrust::pair"*, i32* }* %80 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %79, i32 0, i32 0 %81 = extractvalue { %"struct.thrust::pair"*, i32* } %call212, 0 store %"struct.thrust::pair"* %81, %"struct.thrust::pair"** %80, align 8 %82 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %79, i32 0, i32 1 %83 = extractvalue { %"struct.thrust::pair"*, i32* } %call212, 1 store i32* %83, i32** %82, align 8 %84 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call219 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %84) to label %invoke.cont218 unwind label %lpad94 invoke.cont218: ; preds = %invoke.cont211 %coerce.dive220 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp217, i32 0, i32 0 %coerce.dive221 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive220, i32 0, i32 0 %coerce.dive222 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive221, i32 0, i32 0 %coerce.dive223 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive222, i32 0, i32 0 store i32* %call219, i32** %coerce.dive223, align 8 %call225 = invoke { %"struct.thrust::pair"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_E4typeERKSH_RKSI_(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %result, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %ref.tmp217) to label %invoke.cont224 unwind label %lpad94 invoke.cont224: ; preds = %invoke.cont218 %coerce.dive226 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %agg.tmp216, i32 0, i32 0 %85 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive226 to { %"struct.thrust::pair"*, i32* }* %86 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %85, i32 0, i32 0 %87 = extractvalue { %"struct.thrust::pair"*, i32* } %call225, 0 store %"struct.thrust::pair"* %87, %"struct.thrust::pair"** %86, align 8 %88 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %85, i32 0, i32 1 %89 = extractvalue { %"struct.thrust::pair"*, i32* } %call225, 1 store i32* %89, i32** %88, align 8 %90 = bitcast %"class.thrust::tuple.218"* %agg.tmp216 to { %"struct.thrust::pair"*, i32* }* %91 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %90, i32 0, i32 0 %92 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %91, align 8 %93 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %90, i32 0, i32 1 %94 = load i32*, i32** %93, align 8 %call228 = invoke { %"struct.thrust::pair"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS_12zip_iteratorIT_EESK_(%"struct.thrust::pair"* %92, i32* %94) to label %invoke.cont227 unwind label %lpad94 invoke.cont227: ; preds = %invoke.cont224 %coerce.dive229 = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %agg.tmp215, i32 0, i32 0 %coerce.dive230 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive229, i32 0, i32 0 %95 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive230 to { %"struct.thrust::pair"*, i32* }* %96 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %95, i32 0, i32 0 %97 = extractvalue { %"struct.thrust::pair"*, i32* } %call228, 0 store %"struct.thrust::pair"* %97, %"struct.thrust::pair"** %96, align 8 %98 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %95, i32 0, i32 1 %99 = extractvalue { %"struct.thrust::pair"*, i32* } %call228, 1 store i32* %99, i32** %98, align 8 invoke void @_ZN6thrust6system6detail7generic6detail22segmented_scan_functorINS_4pairIaaEEj9add_pairsEC2ES7_(%"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %agg.tmp231) to label %invoke.cont233 unwind label %lpad94 invoke.cont233: ; preds = %invoke.cont227 %100 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp164 to { %"struct.thrust::pair"*, i32* }* %101 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %100, i32 0, i32 0 %102 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %101, align 8 %103 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %100, i32 0, i32 1 %104 = load i32*, i32** %103, align 8 %105 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp187 to { %"struct.thrust::pair"*, i32* }* %106 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %105, i32 0, i32 0 %107 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %106, align 8 %108 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %105, i32 0, i32 1 %109 = load i32*, i32** %108, align 8 %call235 = invoke { %"struct.thrust::pair"*, i32* } @_ZN6thrust14inclusive_scanINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RKNS7_21execution_policy_baseIT_EET0_S11_SV_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %42, %"struct.thrust::pair"* %102, i32* %104, %"struct.thrust::pair"* %107, i32* %109, %"class.thrust::zip_iterator.216"* byval align 8 %agg.tmp215) to label %invoke.cont234 unwind label %lpad94 invoke.cont234: ; preds = %invoke.cont233 %coerce.dive237 = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %coerce236, i32 0, i32 0 %coerce.dive238 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive237, i32 0, i32 0 %110 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive238 to { %"struct.thrust::pair"*, i32* }* %111 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %110, i32 0, i32 0 %112 = extractvalue { %"struct.thrust::pair"*, i32* } %call235, 0 store %"struct.thrust::pair"* %112, %"struct.thrust::pair"** %111, align 8 %113 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %110, i32 0, i32 1 %114 = extractvalue { %"struct.thrust::pair"*, i32* } %call235, 1 store i32* %114, i32** %113, align 8 call void @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.206"* %temp) #5 %115 = bitcast %"class.thrust::detail::temporary_array.206"* %temp to i8* call void @llvm.lifetime.end(i64 24, i8* %115) #5 call void @_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array"* %flags) #5 %116 = bitcast %"class.thrust::detail::temporary_array"* %flags to i8* call void @llvm.lifetime.end(i64 24, i8* %116) #5 %117 = bitcast %"class.thrust::detail::normal_iterator.66"* %last2 to i8* call void @llvm.lifetime.end(i64 8, i8* %117) #5 br label %if.end lpad: ; preds = %invoke.cont84, %invoke.cont64, %invoke.cont57, %invoke.cont51, %invoke.cont42, %invoke.cont34, %invoke.cont31, %invoke.cont, %if.then %118 = landingpad { i8*, i32 } cleanup %119 = extractvalue { i8*, i32 } %118, 0 store i8* %119, i8** %exn.slot, align 8 %120 = extractvalue { i8*, i32 } %118, 1 store i32 %120, i32* %ehselector.slot, align 4 br label %ehcleanup lpad94: ; preds = %invoke.cont233, %invoke.cont227, %invoke.cont224, %invoke.cont218, %invoke.cont211, %invoke.cont207, %invoke.cont204, %invoke.cont198, %invoke.cont191, %invoke.cont183, %invoke.cont180, %invoke.cont174, %invoke.cont167, %invoke.cont162, %invoke.cont156, %invoke.cont149, %invoke.cont124, %invoke.cont118, %invoke.cont110, %invoke.cont104, %invoke.cont95, %invoke.cont91 %121 = landingpad { i8*, i32 } cleanup %122 = extractvalue { i8*, i32 } %121, 0 store i8* %122, i8** %exn.slot, align 8 %123 = extractvalue { i8*, i32 } %121, 1 store i32 %123, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.206"* %temp) #5 %124 = bitcast %"class.thrust::detail::temporary_array.206"* %temp to i8* call void @llvm.lifetime.end(i64 24, i8* %124) #5 br label %ehcleanup ehcleanup: ; preds = %lpad94, %lpad call void @_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array"* %flags) #5 %125 = bitcast %"class.thrust::detail::temporary_array"* %flags to i8* call void @llvm.lifetime.end(i64 24, i8* %125) #5 %126 = bitcast %"class.thrust::detail::normal_iterator.66"* %last2 to i8* call void @llvm.lifetime.end(i64 8, i8* %126) #5 %127 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %127) #5 br label %eh.resume if.end: ; preds = %invoke.cont234, %entry %128 = bitcast %"class.thrust::detail::normal_iterator.66"* %result to %"class.thrust::iterator_facade.68"* %129 = load i64, i64* %n, align 8, !tbaa !13 %call241 = call %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEET_RKNS_15iterator_facadeISF_T0_T1_T2_T3_T4_EENSF_15difference_typeE(%"class.thrust::iterator_facade.68"* dereferenceable(1) %128, i64 %129) %coerce.dive242 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive243 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive242, i32 0, i32 0 %coerce.dive244 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive243, i32 0, i32 0 %coerce.dive245 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive244, i32 0, i32 0 %coerce.dive246 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive245, i32 0, i32 0 store %"struct.thrust::pair"* %call241, %"struct.thrust::pair"** %coerce.dive246, align 8 %130 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %130) #5 %coerce.dive248 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive249 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive248, i32 0, i32 0 %coerce.dive250 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive249, i32 0, i32 0 %coerce.dive251 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive250, i32 0, i32 0 %coerce.dive252 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive251, i32 0, i32 0 %131 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive252, align 8 ret %"struct.thrust::pair"* %131 eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val253 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val253 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEET_RKNS_15iterator_facadeISF_T0_T1_T2_T3_T4_EENSF_15difference_typeE(%"class.thrust::iterator_facade.68"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.66", align 8 %i.addr = alloca %"class.thrust::iterator_facade.68"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.66", align 8 store %"class.thrust::iterator_facade.68"* %i, %"class.thrust::iterator_facade.68"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.66"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.68"*, %"class.thrust::iterator_facade.68"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.68"* %1 to %"class.thrust::detail::normal_iterator.66"* %3 = bitcast %"class.thrust::detail::normal_iterator.66"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.66"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.66"* %tmp to %"class.thrust::iterator_facade.68"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl(%"class.thrust::iterator_facade.68"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.66"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.66"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.66"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive3, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %10 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS5_EEm(%"class.thrust::detail::temporary_array"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system, i64 %n) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_array"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::detail::no_throw_allocator", align 8 %ref.tmp2 = alloca %"class.thrust::detail::temporary_allocator", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::temporary_array"* %this, %"class.thrust::detail::temporary_array"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %system, %"struct.thrust::execution_policy.120"** %system.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::temporary_array"*, %"class.thrust::detail::temporary_array"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array"* %this1 to %"class.thrust::detail::contiguous_storage.198"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %2 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS5_EE(%"class.thrust::detail::temporary_allocator"* %ref.tmp2, %"struct.thrust::execution_policy.120"* dereferenceable(1) %2) invoke void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEC2ERKS7_(%"struct.thrust::detail::no_throw_allocator"* %ref.tmp, %"class.thrust::detail::temporary_allocator"* dereferenceable(8) %ref.tmp2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEEC2EmRKS9_(%"class.thrust::detail::contiguous_storage.198"* %0, i64 %1, %"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont call void bitcast (void (%"class.thrust::detail::tagged_allocator"*)* @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator"*)*)(%"struct.thrust::detail::no_throw_allocator"* %ref.tmp) #5 call void bitcast (void (%"class.thrust::detail::tagged_allocator"*)* @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev to void (%"class.thrust::detail::temporary_allocator"*)*)(%"class.thrust::detail::temporary_allocator"* %ref.tmp2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail22temporary_array_detail16construct_valuesIjNS0_15temporary_arrayIjNS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_(%"class.thrust::detail::temporary_array"* dereferenceable(24) %this1, i64 %3) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %invoke.cont4 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator"*)* @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator"*)*)(%"struct.thrust::detail::no_throw_allocator"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void bitcast (void (%"class.thrust::detail::tagged_allocator"*)* @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev to void (%"class.thrust::detail::temporary_allocator"*)*)(%"class.thrust::detail::temporary_allocator"* %ref.tmp2) #5 br label %eh.resume lpad5: ; preds = %invoke.cont4 %10 = landingpad { i8*, i32 } cleanup %11 = extractvalue { i8*, i32 } %10, 0 store i8* %11, i8** %exn.slot, align 8 %12 = extractvalue { i8*, i32 } %10, 1 store i32 %12, i32* %ehselector.slot, align 4 %13 = bitcast %"class.thrust::detail::temporary_array"* %this1 to %"class.thrust::detail::contiguous_storage.198"* call void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.198"* %13) #5 br label %eh.resume eh.resume: ; preds = %lpad5, %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val8 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val8 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEEixEm(%"class.thrust::detail::contiguous_storage.198"* %this, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.205", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.198"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::contiguous_storage.198"* %this, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.198"*, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.199"* %m_begin to %"class.thrust::iterator_facade.201"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i32* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEixEl(%"class.thrust::iterator_facade.201"* %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 store i32* %call, i32** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive5, i32 0, i32 0 %2 = load i32*, i32** %coerce.dive6, align 8 ret i32* %2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::reference.205"* @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EaSERKj(%"class.thrust::reference.205"* %this, i32* dereferenceable(4) %v) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.205"*, align 8 %v.addr = alloca i32*, align 8 store %"class.thrust::reference.205"* %this, %"class.thrust::reference.205"** %this.addr, align 8, !tbaa !1 store i32* %v, i32** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.205"*, %"class.thrust::reference.205"** %this.addr, align 8 %0 = load i32*, i32** %v.addr, align 8 call void @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_E11assign_fromIPKjEEvT_(%"class.thrust::reference.205"* %this1, i32* %0) ret %"class.thrust::reference.205"* %this1 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEES9_NS6_INS_7pointerIjS4_NS_11use_defaultESB_EEEENS5_13binary_negateINS_8equal_toIaEEEEEET2_RKNS5_21execution_policy_baseIT_EET0_SO_T1_SI_T3_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i8* %first1.coerce, i8* %last1.coerce, i8* %first2.coerce, i32* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.199", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %result = alloca %"class.thrust::detail::normal_iterator.199", align 8 %op = alloca %"struct.thrust::detail::binary_negate", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp20 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %agg.tmp22 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp23 = alloca %"struct.thrust::detail::binary_negate", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive3, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive8, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive13, i32 0, i32 0 store i8* %first2.coerce, i8** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive17, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive18, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call19 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call19 to %"struct.thrust::execution_policy.120"* %2 = bitcast %"class.thrust::detail::normal_iterator.56"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.56"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.56"* %agg.tmp20 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.56"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.56"* %agg.tmp21 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.56"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::detail::normal_iterator.199"* %agg.tmp22 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.199"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"struct.thrust::detail::binary_negate"* %agg.tmp23 to i8* %11 = bitcast %"struct.thrust::detail::binary_negate"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 1, i32 1, i1 false), !tbaa.struct !41 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive27, i32 0, i32 0 %12 = load i8*, i8** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp20, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive31, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive32, i32 0, i32 0 %13 = load i8*, i8** %coerce.dive33, align 8 %coerce.dive34 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %agg.tmp21, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive35, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive36, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive37, i32 0, i32 0 %14 = load i8*, i8** %coerce.dive38, align 8 %coerce.dive39 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp22, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive41, i32 0, i32 0 %15 = load i32*, i32** %coerce.dive42, align 8 %call43 = call i32* @_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS6_NS_11use_defaultESD_EEEENS7_13binary_negateINS_8equal_toIaEEEEEET2_RNS_16execution_policyIT_EET0_SP_T1_SK_T3_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, i8* %12, i8* %13, i8* %14, i32* %15) %coerce.dive44 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive45, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive46, i32 0, i32 0 store i32* %call43, i32** %coerce.dive47, align 8 %coerce.dive48 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive49, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive50, i32 0, i32 0 %16 = load i32*, i32** %coerce.dive51, align 8 ret i32* %16 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEmiEl(%"class.thrust::iterator_facade.58"* %this, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.56", align 8 %this.addr = alloca %"class.thrust::iterator_facade.58"*, align 8 %n.addr = alloca i64, align 8 %result = alloca %"class.thrust::detail::normal_iterator.56", align 8 store %"class.thrust::iterator_facade.58"* %this, %"class.thrust::iterator_facade.58"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.58"*, %"class.thrust::iterator_facade.58"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.56"* %result to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.58"* %this1) %1 = bitcast %"class.thrust::detail::normal_iterator.56"* %result to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.56"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.56"* %result to %"class.thrust::iterator_facade.58"* %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEmIEl(%"class.thrust::iterator_facade.58"* %3, i64 %4) %5 = bitcast %"class.thrust::detail::normal_iterator.56"* %retval to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.56"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.56"* %result to i8* call void @llvm.lifetime.end(i64 8, i8* %7) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive5, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive6, align 8 ret i8* %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr i8* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE(%"class.thrust::iterator_facade.58"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.56", align 8 %i.addr = alloca %"class.thrust::iterator_facade.58"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.56", align 8 store %"class.thrust::iterator_facade.58"* %i, %"class.thrust::iterator_facade.58"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.56"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.58"*, %"class.thrust::iterator_facade.58"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.58"* %1 to %"class.thrust::detail::normal_iterator.56"* %3 = bitcast %"class.thrust::detail::normal_iterator.56"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.56"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.56"* %tmp to %"class.thrust::iterator_facade.58"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEpLEl(%"class.thrust::iterator_facade.58"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.56"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.56"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.56"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive3, i32 0, i32 0 %10 = load i8*, i8** %coerce.dive4, align 8 ret i8* %10 } ; Function Attrs: inlinehint uwtable define linkonce_odr i32* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEET_RKNS_15iterator_facadeISE_T0_T1_T2_T3_T4_EENSE_15difference_typeE(%"class.thrust::iterator_facade.201"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.199", align 8 %i.addr = alloca %"class.thrust::iterator_facade.201"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.199", align 8 store %"class.thrust::iterator_facade.201"* %i, %"class.thrust::iterator_facade.201"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.199"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.201"*, %"class.thrust::iterator_facade.201"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.201"* %1 to %"class.thrust::detail::normal_iterator.199"* %3 = bitcast %"class.thrust::detail::normal_iterator.199"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.199"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.199"* %tmp to %"class.thrust::iterator_facade.201"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEpLEl(%"class.thrust::iterator_facade.201"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.199"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.199"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.199"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %10 = load i32*, i32** %coerce.dive3, align 8 ret i32* %10 } ; Function Attrs: nounwind uwtable define linkonce_odr i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.199", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.198"*, align 8 store %"class.thrust::detail::contiguous_storage.198"* %this, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.198"*, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.199"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.199"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 %2 = load i32*, i32** %coerce.dive4, align 8 ret i32* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail4not2INS_8equal_toIaEEEENS0_13binary_negateIT_EERKS5_(%"struct.thrust::equal_to"* dereferenceable(1) %pred) #0 comdat { entry: %retval = alloca %"struct.thrust::detail::binary_negate", align 1 %pred.addr = alloca %"struct.thrust::equal_to"*, align 8 store %"struct.thrust::equal_to"* %pred, %"struct.thrust::equal_to"** %pred.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::equal_to"*, %"struct.thrust::equal_to"** %pred.addr, align 8 call void @_ZN6thrust6detail13binary_negateINS_8equal_toIaEEEC2ERKS3_(%"struct.thrust::detail::binary_negate"* %retval, %"struct.thrust::equal_to"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EEm(%"class.thrust::detail::temporary_array.206"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system, i64 %n) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_array.206"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::detail::no_throw_allocator.208", align 8 %ref.tmp2 = alloca %"class.thrust::detail::temporary_allocator.209", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::temporary_array.206"* %this, %"class.thrust::detail::temporary_array.206"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %system, %"struct.thrust::execution_policy.120"** %system.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::temporary_array.206"*, %"class.thrust::detail::temporary_array.206"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array.206"* %this1 to %"class.thrust::detail::contiguous_storage.207"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %2 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EE(%"class.thrust::detail::temporary_allocator.209"* %ref.tmp2, %"struct.thrust::execution_policy.120"* dereferenceable(1) %2) invoke void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEC2ERKS9_(%"struct.thrust::detail::no_throw_allocator.208"* %ref.tmp, %"class.thrust::detail::temporary_allocator.209"* dereferenceable(8) %ref.tmp2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEC2EmRKSB_(%"class.thrust::detail::contiguous_storage.207"* %0, i64 %1, %"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont call void bitcast (void (%"class.thrust::detail::tagged_allocator.210"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.208"*)*)(%"struct.thrust::detail::no_throw_allocator.208"* %ref.tmp) #5 call void bitcast (void (%"class.thrust::detail::tagged_allocator.210"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"class.thrust::detail::temporary_allocator.209"*)*)(%"class.thrust::detail::temporary_allocator.209"* %ref.tmp2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_4pairIaaEENS0_15temporary_arrayIS4_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_(%"class.thrust::detail::temporary_array.206"* dereferenceable(24) %this1, i64 %3) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %invoke.cont4 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator.210"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.208"*)*)(%"struct.thrust::detail::no_throw_allocator.208"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void bitcast (void (%"class.thrust::detail::tagged_allocator.210"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"class.thrust::detail::temporary_allocator.209"*)*)(%"class.thrust::detail::temporary_allocator.209"* %ref.tmp2) #5 br label %eh.resume lpad5: ; preds = %invoke.cont4 %10 = landingpad { i8*, i32 } cleanup %11 = extractvalue { i8*, i32 } %10, 0 store i8* %11, i8** %exn.slot, align 8 %12 = extractvalue { i8*, i32 } %10, 1 store i32 %12, i32* %ehselector.slot, align 4 %13 = bitcast %"class.thrust::detail::temporary_array.206"* %this1 to %"class.thrust::detail::contiguous_storage.207"* call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.207"* %13) #5 br label %eh.resume eh.resume: ; preds = %lpad5, %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val8 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val8 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust15replace_copy_ifINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS_6negateIjEES9_EET2_RKNS5_21execution_policy_baseIT_EET0_SQ_T1_SK_T3_RKT4_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, i32* %stencil.coerce, %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"* dereferenceable(2) %new_value) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.212", align 8 %first = alloca %"class.thrust::detail::normal_iterator.66", align 8 %last = alloca %"class.thrust::detail::normal_iterator.66", align 8 %stencil = alloca %"class.thrust::detail::normal_iterator.199", align 8 %result = alloca %"class.thrust::detail::normal_iterator.212", align 8 %pred = alloca %"struct.thrust::negate", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %new_value.addr = alloca %"struct.thrust::pair"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp19 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp20 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.212", align 8 %agg.tmp22 = alloca %"struct.thrust::negate", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %stencil, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive12, i32 0, i32 0 store i32* %stencil.coerce, i32** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %result, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive16, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive17, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %new_value, %"struct.thrust::pair"** %new_value.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call18 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call18 to %"struct.thrust::execution_policy.120"* %2 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.66"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp19 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.66"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.199"* %agg.tmp20 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.199"* %stencil to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::detail::normal_iterator.212"* %agg.tmp21 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.212"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %new_value.addr, align 8 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive26, i32 0, i32 0 %11 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp19, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive31, i32 0, i32 0 %12 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp20, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive35, i32 0, i32 0 %13 = load i32*, i32** %coerce.dive36, align 8 %coerce.dive37 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %agg.tmp21, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive37, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive39, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive40, align 8 %call41 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic15replace_copy_ifINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS_6negateIjEESB_EET2_RNS_16execution_policyIT_EET0_SR_T1_SM_T3_RKT4_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, %"struct.thrust::pair"* %11, %"struct.thrust::pair"* %12, i32* %13, %"struct.thrust::pair"* %14, %"struct.thrust::pair"* dereferenceable(2) %10) %coerce.dive42 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive42, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive44, i32 0, i32 0 store %"struct.thrust::pair"* %call41, %"struct.thrust::pair"** %coerce.dive45, align 8 %coerce.dive46 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive48, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive49, align 8 ret %"struct.thrust::pair"* %15 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmiEl(%"class.thrust::iterator_facade.68"* %this, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.66", align 8 %this.addr = alloca %"class.thrust::iterator_facade.68"*, align 8 %n.addr = alloca i64, align 8 %result = alloca %"class.thrust::detail::normal_iterator.66", align 8 store %"class.thrust::iterator_facade.68"* %this, %"class.thrust::iterator_facade.68"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.68"*, %"class.thrust::iterator_facade.68"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.66"* %result to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.68"* %this1) %1 = bitcast %"class.thrust::detail::normal_iterator.66"* %result to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.66"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.66"* %result to %"class.thrust::iterator_facade.68"* %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmIEl(%"class.thrust::iterator_facade.68"* %3, i64 %4) %5 = bitcast %"class.thrust::detail::normal_iterator.66"* %retval to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.66"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.66"* %result to i8* call void @llvm.lifetime.end(i64 8, i8* %7) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive5, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 ret %"struct.thrust::pair"* %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.214"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.212", align 8 %i.addr = alloca %"class.thrust::iterator_facade.214"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.212", align 8 store %"class.thrust::iterator_facade.214"* %i, %"class.thrust::iterator_facade.214"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.212"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.214"*, %"class.thrust::iterator_facade.214"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.214"* %1 to %"class.thrust::detail::normal_iterator.212"* %3 = bitcast %"class.thrust::detail::normal_iterator.212"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.212"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.212"* %tmp to %"class.thrust::iterator_facade.214"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl(%"class.thrust::iterator_facade.214"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.212"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.212"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.212"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %10 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.207"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.212", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.207"*, align 8 store %"class.thrust::detail::contiguous_storage.207"* %this, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.207"*, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.212"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.212"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEixEm(%"class.thrust::detail::contiguous_storage.207"* %this, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.215", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.207"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::contiguous_storage.207"* %this, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.207"*, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.212"* %m_begin to %"class.thrust::iterator_facade.214"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEixEl(%"class.thrust::iterator_facade.214"* %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive5, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::reference.215"* @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EaSERKS2_(%"class.thrust::reference.215"* %this, %"struct.thrust::pair"* dereferenceable(2) %v) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.215"*, align 8 %v.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.thrust::reference.215"* %this, %"class.thrust::reference.215"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %v, %"struct.thrust::pair"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.215"*, %"class.thrust::reference.215"** %this.addr, align 8 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %v.addr, align 8 call void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIPKS2_EEvT_(%"class.thrust::reference.215"* %this1, %"struct.thrust::pair"* %0) ret %"class.thrust::reference.215"* %this1 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZN6thrust14inclusive_scanINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RKNS7_21execution_policy_baseIT_EET0_S11_SV_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce0, i32* %first.coerce1, %"struct.thrust::pair"* %last.coerce0, i32* %last.coerce1, %"class.thrust::zip_iterator.216"* byval align 8 %result) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.216", align 8 %first = alloca %"class.thrust::zip_iterator.221", align 8 %last = alloca %"class.thrust::zip_iterator.221", align 8 %binary_op = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp3 = alloca %"class.thrust::zip_iterator.216", align 8 %agg.tmp4 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %0 = bitcast %"class.thrust::zip_iterator.221"* %first to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %first.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::zip_iterator.221"* %last to { %"struct.thrust::pair"*, i32* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 1 store i32* %last.coerce1, i32** %5, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %6 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %6) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %7 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %8 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp to i8* %9 = bitcast %"class.thrust::zip_iterator.221"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 16, i32 8, i1 false) %10 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp2 to i8* %11 = bitcast %"class.thrust::zip_iterator.221"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 16, i32 8, i1 false) %12 = bitcast %"class.thrust::zip_iterator.216"* %agg.tmp3 to i8* %13 = bitcast %"class.thrust::zip_iterator.216"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 16, i32 8, i1 false) %14 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %agg.tmp4 to i8* %15 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %binary_op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 1, i32 1, i1 false), !tbaa.struct !41 %16 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp to { %"struct.thrust::pair"*, i32* }* %17 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %16, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %17, align 8 %19 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %16, i32 0, i32 1 %20 = load i32*, i32** %19, align 8 %21 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp2 to { %"struct.thrust::pair"*, i32* }* %22 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %21, i32 0, i32 0 %23 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %22, align 8 %24 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %21, i32 0, i32 1 %25 = load i32*, i32** %24, align 8 %call5 = call { %"struct.thrust::pair"*, i32* } @_ZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %7, %"struct.thrust::pair"* %18, i32* %20, %"struct.thrust::pair"* %23, i32* %25, %"class.thrust::zip_iterator.216"* byval align 8 %agg.tmp3) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive, i32 0, i32 0 %26 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive6 to { %"struct.thrust::pair"*, i32* }* %27 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %26, i32 0, i32 0 %28 = extractvalue { %"struct.thrust::pair"*, i32* } %call5, 0 store %"struct.thrust::pair"* %28, %"struct.thrust::pair"** %27, align 8 %29 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %26, i32 0, i32 1 %30 = extractvalue { %"struct.thrust::pair"*, i32* } %call5, 1 store i32* %30, i32** %29, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive7, i32 0, i32 0 %31 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive8 to { %"struct.thrust::pair"*, i32* }* %32 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %31, align 8 ret { %"struct.thrust::pair"*, i32* } %32 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENS_12zip_iteratorIT_EESJ_(%"struct.thrust::pair"* %t.coerce0, i32* %t.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.221", align 8 %t = alloca %"class.thrust::tuple.223", align 8 %agg.tmp = alloca %"class.thrust::tuple.223", align 8 %0 = bitcast %"class.thrust::tuple.223"* %t to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %t.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %t.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::tuple.223"* %agg.tmp to i8* %4 = bitcast %"class.thrust::tuple.223"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::tuple.223"* %agg.tmp to { %"struct.thrust::pair"*, i32* }* %6 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %5, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %6, align 8 %8 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %5, i32 0, i32 1 %9 = load i32*, i32** %8, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEC2ESH_(%"class.thrust::zip_iterator.221"* %retval, %"struct.thrust::pair"* %7, i32* %9) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.221", %"class.thrust::zip_iterator.221"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.223", %"class.thrust::tuple.223"* %coerce.dive, i32 0, i32 0 %10 = bitcast %"struct.thrust::detail::cons.224"* %coerce.dive1 to { %"struct.thrust::pair"*, i32* }* %11 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %10, align 8 ret { %"struct.thrust::pair"*, i32* } %11 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESI_SI_SI_SI_SI_SI_SI_E4typeERKSG_RKSH_(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1) #8 comdat { entry: %retval = alloca %"class.thrust::tuple.223", align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 store %"class.thrust::detail::normal_iterator.212"* %t0, %"class.thrust::detail::normal_iterator.212"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKSC_RKSE_(%"class.thrust::tuple.223"* %retval, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %1) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.223", %"class.thrust::tuple.223"* %retval, i32 0, i32 0 %2 = bitcast %"struct.thrust::detail::cons.224"* %coerce.dive to { %"struct.thrust::pair"*, i32* }* %3 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %2, align 8 ret { %"struct.thrust::pair"*, i32* } %3 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE(%"class.thrust::iterator_facade.222"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.221", align 8 %i.addr = alloca %"class.thrust::iterator_facade.222"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::zip_iterator.221", align 8 store %"class.thrust::iterator_facade.222"* %i, %"class.thrust::iterator_facade.222"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::zip_iterator.221"* %tmp to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.222"*, %"class.thrust::iterator_facade.222"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.222"* %1 to %"class.thrust::zip_iterator.221"* %3 = bitcast %"class.thrust::zip_iterator.221"* %tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.221"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 1, i1 false) %5 = bitcast %"class.thrust::zip_iterator.221"* %tmp to %"class.thrust::iterator_facade.222"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(16) %"class.thrust::zip_iterator.221"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEpLEl(%"class.thrust::iterator_facade.222"* %5, i64 %6) %7 = bitcast %"class.thrust::zip_iterator.221"* %retval to i8* %8 = bitcast %"class.thrust::zip_iterator.221"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 16, i32 8, i1 false) %9 = bitcast %"class.thrust::zip_iterator.221"* %tmp to i8* call void @llvm.lifetime.end(i64 16, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.221", %"class.thrust::zip_iterator.221"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.223", %"class.thrust::tuple.223"* %coerce.dive, i32 0, i32 0 %10 = bitcast %"struct.thrust::detail::cons.224"* %coerce.dive1 to { %"struct.thrust::pair"*, i32* }* %11 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %10, align 8 ret { %"struct.thrust::pair"*, i32* } %11 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS_12zip_iteratorIT_EESK_(%"struct.thrust::pair"* %t.coerce0, i32* %t.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.216", align 8 %t = alloca %"class.thrust::tuple.218", align 8 %agg.tmp = alloca %"class.thrust::tuple.218", align 8 %0 = bitcast %"class.thrust::tuple.218"* %t to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %t.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %t.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::tuple.218"* %agg.tmp to i8* %4 = bitcast %"class.thrust::tuple.218"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::tuple.218"* %agg.tmp to { %"struct.thrust::pair"*, i32* }* %6 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %5, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %6, align 8 %8 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %5, i32 0, i32 1 %9 = load i32*, i32** %8, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEC2ESI_(%"class.thrust::zip_iterator.216"* %retval, %"struct.thrust::pair"* %7, i32* %9) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive, i32 0, i32 0 %10 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive1 to { %"struct.thrust::pair"*, i32* }* %11 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %10, align 8 ret { %"struct.thrust::pair"*, i32* } %11 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_E4typeERKSH_RKSI_(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1) #8 comdat { entry: %retval = alloca %"class.thrust::tuple.218", align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 store %"class.thrust::detail::normal_iterator.66"* %t0, %"class.thrust::detail::normal_iterator.66"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EC2ERKS7_RKSF_(%"class.thrust::tuple.218"* %retval, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %1) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %retval, i32 0, i32 0 %2 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive to { %"struct.thrust::pair"*, i32* }* %3 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %2, align 8 ret { %"struct.thrust::pair"*, i32* } %3 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail22segmented_scan_functorINS_4pairIaaEEj9add_pairsEC2ES7_(%"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %this) unnamed_addr #1 comdat align 2 { entry: %_binary_op = alloca %struct.add_pairs, align 1 %this.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %this, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %this.addr, align 8 %binary_op = getelementptr inbounds %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %this1, i32 0, i32 0 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.206"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_array.206"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.212", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.212", align 8 store %"class.thrust::detail::temporary_array.206"* %this, %"class.thrust::detail::temporary_array.206"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_array.206"*, %"class.thrust::detail::temporary_array.206"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array.206"* %this1 to %"class.thrust::detail::contiguous_storage.207"* %1 = bitcast %"class.thrust::detail::temporary_array.206"* %this1 to %"class.thrust::detail::contiguous_storage.207"* %call = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.207"* %1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive4, align 8 %2 = bitcast %"class.thrust::detail::temporary_array.206"* %this1 to %"class.thrust::detail::contiguous_storage.207"* %call7 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE3endEv(%"class.thrust::detail::contiguous_storage.207"* %2) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %call7, %"struct.thrust::pair"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive14, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %agg.tmp5, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive18, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_(%"class.thrust::detail::contiguous_storage.207"* %0, %"struct.thrust::pair"* %3, %"struct.thrust::pair"* %4) to label %invoke.cont20 unwind label %lpad invoke.cont20: ; preds = %invoke.cont6 %5 = bitcast %"class.thrust::detail::temporary_array.206"* %this1 to %"class.thrust::detail::contiguous_storage.207"* call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.207"* %5) #5 ret void lpad: ; preds = %invoke.cont6, %invoke.cont, %entry %6 = landingpad { i8*, i32 } catch i8* null %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 %9 = bitcast %"class.thrust::detail::temporary_array.206"* %this1 to %"class.thrust::detail::contiguous_storage.207"* call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.207"* %9) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_array"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.199", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.199", align 8 store %"class.thrust::detail::temporary_array"* %this, %"class.thrust::detail::temporary_array"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_array"*, %"class.thrust::detail::temporary_array"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array"* %this1 to %"class.thrust::detail::contiguous_storage.198"* %1 = bitcast %"class.thrust::detail::temporary_array"* %this1 to %"class.thrust::detail::contiguous_storage.198"* %call = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 store i32* %call, i32** %coerce.dive4, align 8 %2 = bitcast %"class.thrust::detail::temporary_array"* %this1 to %"class.thrust::detail::contiguous_storage.198"* %call7 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE3endEv(%"class.thrust::detail::contiguous_storage.198"* %2) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive10, i32 0, i32 0 store i32* %call7, i32** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive14, i32 0, i32 0 %3 = load i32*, i32** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp5, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive18, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive19, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIjS7_NS_11use_defaultESD_EEEESF_(%"class.thrust::detail::contiguous_storage.198"* %0, i32* %3, i32* %4) to label %invoke.cont20 unwind label %lpad invoke.cont20: ; preds = %invoke.cont6 %5 = bitcast %"class.thrust::detail::temporary_array"* %this1 to %"class.thrust::detail::contiguous_storage.198"* call void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.198"* %5) #5 ret void lpad: ; preds = %invoke.cont6, %invoke.cont, %entry %6 = landingpad { i8*, i32 } catch i8* null %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 %9 = bitcast %"class.thrust::detail::temporary_array"* %this1 to %"class.thrust::detail::contiguous_storage.198"* call void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.198"* %9) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS5_EE(%"class.thrust::detail::temporary_allocator"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::temporary_allocator"* %this, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %system, %"struct.thrust::execution_policy.120"** %system.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator"*, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator"* %this1 to %"class.thrust::detail::tagged_allocator"* call void @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEEC2Ev(%"class.thrust::detail::tagged_allocator"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator", %"class.thrust::detail::temporary_allocator"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %call = invoke dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store %"struct.thrust::system::cuda::detail::tag"* %call, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 %6 = bitcast %"class.thrust::detail::temporary_allocator"* %this1 to %"class.thrust::detail::tagged_allocator"* call void @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev(%"class.thrust::detail::tagged_allocator"* %6) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEC2ERKS7_(%"struct.thrust::detail::no_throw_allocator"* %this, %"class.thrust::detail::temporary_allocator"* dereferenceable(8) %other) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator"*, align 8 store %"struct.thrust::detail::no_throw_allocator"* %this, %"struct.thrust::detail::no_throw_allocator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator"* %other, %"class.thrust::detail::temporary_allocator"** %other.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator"* %this1 to %"class.thrust::detail::temporary_allocator"* %1 = load %"class.thrust::detail::temporary_allocator"*, %"class.thrust::detail::temporary_allocator"** %other.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEEC2ERKS6_(%"class.thrust::detail::temporary_allocator"* %0, %"class.thrust::detail::temporary_allocator"* dereferenceable(8) %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEEC2EmRKS9_(%"class.thrust::detail::contiguous_storage.198"* %this, i64 %n, %"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.198"*, align 8 %n.addr = alloca i64, align 8 %alloc.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.198"* %this, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store %"struct.thrust::detail::no_throw_allocator"* %alloc, %"struct.thrust::detail::no_throw_allocator"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.198"*, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %alloc.addr, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEC2ERKS8_(%"struct.thrust::detail::no_throw_allocator"* %m_allocator, %"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %0) %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 1 invoke void @_ZN6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IjEEPT_(%"class.thrust::pointer.202"* %agg.tmp, i32* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 %1 = load i32*, i32** %coerce.dive2, align 8 invoke void @_ZN6thrust6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEC2ES8_(%"class.thrust::detail::normal_iterator.199"* %m_begin, i32* %1) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !188 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.198"* %this1, i64 %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont3 ret void lpad: ; preds = %invoke.cont3, %invoke.cont, %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator"*)* @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator"*)*)(%"struct.thrust::detail::no_throw_allocator"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev(%"class.thrust::detail::tagged_allocator"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator"*, align 8 store %"class.thrust::detail::tagged_allocator"* %this, %"class.thrust::detail::tagged_allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator"*, %"class.thrust::detail::tagged_allocator"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail22temporary_array_detail16construct_valuesIjNS0_15temporary_arrayIjNS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_(%"class.thrust::detail::temporary_array"* dereferenceable(24), i64) #1 comdat { entry: %.addr = alloca %"class.thrust::detail::temporary_array"*, align 8 %.addr1 = alloca i64, align 8 store %"class.thrust::detail::temporary_array"* %0, %"class.thrust::detail::temporary_array"** %.addr, align 8, !tbaa !7 store i64 %1, i64* %.addr1, align 8, !tbaa !13 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.198"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.198"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.198"* %this, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.198"*, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.198"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator"*)* @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator"*)*)(%"struct.thrust::detail::no_throw_allocator"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator"*)* @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator"*)*)(%"struct.thrust::detail::no_throw_allocator"* %m_allocator2) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEEC2Ev(%"class.thrust::detail::tagged_allocator"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator"*, align 8 store %"class.thrust::detail::tagged_allocator"* %this, %"class.thrust::detail::tagged_allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator"*, %"class.thrust::detail::tagged_allocator"** %this.addr, align 8 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEEC2ERKS6_(%"class.thrust::detail::temporary_allocator"* %this, %"class.thrust::detail::temporary_allocator"* dereferenceable(8) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator"*, align 8 store %"class.thrust::detail::temporary_allocator"* %this, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator"* %other, %"class.thrust::detail::temporary_allocator"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator"*, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator"* %this1 to %"class.thrust::detail::tagged_allocator"* call void @_ZN6thrust6detail16tagged_allocatorIjNS_6system4cuda6detail3tagENS_7pointerIjS5_NS_11use_defaultES7_EEEC2Ev(%"class.thrust::detail::tagged_allocator"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator", %"class.thrust::detail::temporary_allocator"* %this1, i32 0, i32 0 %1 = load %"class.thrust::detail::temporary_allocator"*, %"class.thrust::detail::temporary_allocator"** %other.addr, align 8 %m_system2 = getelementptr inbounds %"class.thrust::detail::temporary_allocator", %"class.thrust::detail::temporary_allocator"* %1, i32 0, i32 0 %ref = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %m_system2, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::tag"* %ref, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEC2ERKS8_(%"struct.thrust::detail::no_throw_allocator"* %this, %"struct.thrust::detail::no_throw_allocator"* dereferenceable(8)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 store %"struct.thrust::detail::no_throw_allocator"* %this, %"struct.thrust::detail::no_throw_allocator"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::no_throw_allocator"* %0, %"struct.thrust::detail::no_throw_allocator"** %.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %this.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator"* %this1 to %"class.thrust::detail::temporary_allocator"* %2 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %.addr, align 8 %3 = bitcast %"struct.thrust::detail::no_throw_allocator"* %2 to %"class.thrust::detail::temporary_allocator"* call void @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEEC2ERKS6_(%"class.thrust::detail::temporary_allocator"* %1, %"class.thrust::detail::temporary_allocator"* dereferenceable(8) %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IjEEPT_(%"class.thrust::pointer.202"* %this, i32* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.202"*, align 8 %other.addr = alloca i32*, align 8 store %"class.thrust::pointer.202"* %this, %"class.thrust::pointer.202"** %this.addr, align 8, !tbaa !1 store i32* %other, i32** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.202"* %this1 to %"class.thrust::iterator_adaptor.203"* call void @_ZN6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEC2ERKS8_(%"class.thrust::iterator_adaptor.203"* %0, i32** dereferenceable(8) %other.addr) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEC2ES8_(%"class.thrust::detail::normal_iterator.199"* %this, i32* %p.coerce) unnamed_addr #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.202", align 8 %this.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %p.coerce, i32** %coerce.dive1, align 8 store %"class.thrust::detail::normal_iterator.199"* %this, %"class.thrust::detail::normal_iterator.199"** %this.addr, align 8, !tbaa !1 %this2 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.199"* %this2 to %"class.thrust::iterator_adaptor.200"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::iterator_adaptor.200"* %0, %"class.thrust::pointer.202"* dereferenceable(8) %p) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.198"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.198"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %ref.tmp6 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp7 = alloca %"class.thrust::pointer.202", align 8 store %"class.thrust::detail::contiguous_storage.198"* %this, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.198"*, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i32* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE8allocateERS9_m(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %m_allocator, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %call, i32** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 %2 = load i32*, i32** %coerce.dive4, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEC2ES8_(%"class.thrust::detail::normal_iterator.199"* %ref.tmp, i32* %2) %3 = bitcast %"class.thrust::detail::normal_iterator.199"* %m_begin to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.199"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 2 store i64 %5, i64* %m_size, align 8, !tbaa !188 br label %if.end if.else: ; preds = %entry %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IjEEPT_(%"class.thrust::pointer.202"* %agg.tmp7, i32* null) %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive8, i32 0, i32 0 %6 = load i32*, i32** %coerce.dive9, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEC2ES8_(%"class.thrust::detail::normal_iterator.199"* %ref.tmp6, i32* %6) %7 = bitcast %"class.thrust::detail::normal_iterator.199"* %m_begin5 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.199"* %ref.tmp6 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %m_size10 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 2 store i64 0, i64* %m_size10, align 8, !tbaa !188 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEC2ERKS8_(%"class.thrust::iterator_adaptor.203"* %this, i32** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.203"*, align 8 %iter.addr = alloca i32**, align 8 store %"class.thrust::iterator_adaptor.203"* %this, %"class.thrust::iterator_adaptor.203"** %this.addr, align 8, !tbaa !1 store i32** %iter, i32*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.203"*, %"class.thrust::iterator_adaptor.203"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.203"* %this1 to %"class.thrust::iterator_facade.204"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %this1, i32 0, i32 0 %1 = load i32**, i32*** %iter.addr, align 8 %2 = load i32*, i32** %1, align 8, !tbaa !1 store i32* %2, i32** %m_iterator, align 8, !tbaa !192 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::iterator_adaptor.200"* %this, %"class.thrust::pointer.202"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.200"*, align 8 %iter.addr = alloca %"class.thrust::pointer.202"*, align 8 store %"class.thrust::iterator_adaptor.200"* %this, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.202"* %iter, %"class.thrust::pointer.202"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.200"*, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.200"* %this1 to %"class.thrust::iterator_facade.201"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %this1, i32 0, i32 0 %1 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %iter.addr, align 8 %2 = bitcast %"class.thrust::pointer.202"* %m_iterator to i8* %3 = bitcast %"class.thrust::pointer.202"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i32* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE8allocateERS9_m(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %a, i64 %n) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator"* %a, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i32* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE8allocateERS9_mEN19workaround_warnings8allocateESB_m(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %call, i32** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %2 = load i32*, i32** %coerce.dive3, align 8 ret i32* %2 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE8allocateERS9_mEN19workaround_warnings8allocateESB_m(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %a, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator"* %a, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator"* %0 to %"class.thrust::detail::temporary_allocator"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i32* @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator"* %1, i64 %2) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %call, i32** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %3 = load i32*, i32** %coerce.dive3, align 8 ret i32* %3 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator"* %this, i64 %cnt) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator"*, align 8 %cnt.addr = alloca i64, align 8 %result = alloca %"struct.thrust::pair.225", align 8 %ref.tmp = alloca %"struct.thrust::pair.226", align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %ref.tmp4 = alloca %"class.std::basic_string", align 8 %ref.tmp5 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 store %"class.thrust::detail::temporary_allocator"* %this, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::temporary_allocator"*, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8 %0 = bitcast %"struct.thrust::pair.225"* %result to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator"* %this1) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %2 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call2 = call { i32*, i64 } @_ZN6thrust20get_temporary_bufferIjNS_6system4cuda6detail3tagEEENS_4pairINS_7pointerIT_T0_NS_11use_defaultES9_EENSA_15difference_typeEEERKNS_6detail21execution_policy_baseIS8_EESB_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.226"* %ref.tmp to { i32*, i64 }* %4 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { i32*, i64 } %call2, 0 store i32* %5, i32** %4, align 8 %6 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { i32*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 call void @_ZN6thrust4pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEmEC2IS7_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.225"* %result, %"struct.thrust::pair.226"* dereferenceable(16) %ref.tmp) %second = getelementptr inbounds %"struct.thrust::pair.225", %"struct.thrust::pair.225"* %result, i32 0, i32 1 %8 = load i64, i64* %second, align 8, !tbaa !194 %9 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %cmp = icmp ult i64 %8, %9 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %first = getelementptr inbounds %"struct.thrust::pair.225", %"struct.thrust::pair.225"* %result, i32 0, i32 0 %10 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %11 = bitcast %"class.thrust::pointer.202"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 %13 = load i32*, i32** %coerce.dive3, align 8 call void @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE10deallocateENS_7pointerIjS5_NS_11use_defaultES8_EEm(%"class.thrust::detail::temporary_allocator"* %this1, i32* %13, i64 %12) %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %14 = bitcast i8* %exception to %"class.thrust::system::detail::bad_alloc"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp5) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp4, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.44, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp5) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then invoke void @_ZN6thrust6system6detail9bad_allocC2ERKSs(%"class.thrust::system::detail::bad_alloc"* %14, %"class.std::basic_string"* dereferenceable(8) %ref.tmp4) to label %invoke.cont7 unwind label %lpad6 invoke.cont7: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system6detail9bad_allocE to i8*), i8* bitcast (void (%"class.thrust::system::detail::bad_alloc"*)* @_ZN6thrust6system6detail9bad_allocD2Ev to i8*)) #15 to label %unreachable unwind label %lpad6 lpad: ; preds = %if.then %15 = landingpad { i8*, i32 } cleanup %16 = extractvalue { i8*, i32 } %15, 0 store i8* %16, i8** %exn.slot, align 8 %17 = extractvalue { i8*, i32 } %15, 1 store i32 %17, i32* %ehselector.slot, align 4 br label %ehcleanup lpad6: ; preds = %invoke.cont7, %invoke.cont %18 = landingpad { i8*, i32 } cleanup %19 = extractvalue { i8*, i32 } %18, 0 store i8* %19, i8** %exn.slot, align 8 %20 = extractvalue { i8*, i32 } %18, 1 store i32 %20, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp4) #5 br label %ehcleanup ehcleanup: ; preds = %lpad6, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp5) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup %21 = bitcast %"struct.thrust::pair.225"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %21) #5 br label %eh.resume if.end: ; preds = %entry %first9 = getelementptr inbounds %"struct.thrust::pair.225", %"struct.thrust::pair.225"* %result, i32 0, i32 0 %22 = bitcast %"class.thrust::pointer.202"* %retval to i8* %23 = bitcast %"class.thrust::pointer.202"* %first9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 8, i32 8, i1 false) %24 = bitcast %"struct.thrust::pair.225"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %24) #5 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive11, i32 0, i32 0 %25 = load i32*, i32** %coerce.dive12, align 8 ret i32* %25 eh.resume: ; preds = %cleanup.done %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val13 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val13 unreachable: ; preds = %invoke.cont7 unreachable } ; Function Attrs: uwtable define linkonce_odr { i32*, i64 } @_ZN6thrust20get_temporary_bufferIjNS_6system4cuda6detail3tagEEENS_4pairINS_7pointerIT_T0_NS_11use_defaultES9_EENSA_15difference_typeEEERKNS_6detail21execution_policy_baseIS8_EESB_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.226", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::pair.226", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call { i32*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferIjNS0_4cuda6detail3tagEEENS_4pairINS_7pointerIT_T0_NS_11use_defaultESB_EENSC_15difference_typeEEERNS_16execution_policyISA_EESD_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.226"* %agg.tmp to { i32*, i64 }* %4 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { i32*, i64 } %call2, 0 store i32* %5, i32** %4, align 8 %6 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { i32*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 %8 = bitcast %"struct.thrust::pair.226"* %agg.tmp to { i32*, i64 }* %9 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %8, i32 0, i32 0 %10 = load i32*, i32** %9, align 8 %11 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %8, i32 0, i32 1 %12 = load i64, i64* %11, align 8 %call3 = call { i32*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairIjNS_6system4cuda6detail3tagENS_4pairINS_7pointerIjS6_NS_11use_defaultES9_EElEEEENS7_INS8_IT_T0_S9_S9_EENSE_15difference_typeEEET1_(i32* %10, i64 %12) %13 = bitcast %"struct.thrust::pair.226"* %retval to { i32*, i64 }* %14 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %13, i32 0, i32 0 %15 = extractvalue { i32*, i64 } %call3, 0 store i32* %15, i32** %14, align 8 %16 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %13, i32 0, i32 1 %17 = extractvalue { i32*, i64 } %call3, 1 store i64 %17, i64* %16, align 8 %18 = bitcast %"struct.thrust::pair.226"* %retval to { i32*, i64 }* %19 = load { i32*, i64 }, { i32*, i64 }* %18, align 8 ret { i32*, i64 } %19 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator"*, align 8 store %"class.thrust::detail::temporary_allocator"* %this, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_allocator"*, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8 %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator", %"class.thrust::detail::temporary_allocator"* %this1, i32 0, i32 0 %ref = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret %"struct.thrust::system::cuda::detail::tag"* %ref } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEmEC2IS7_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.225"* %this, %"struct.thrust::pair.226"* dereferenceable(16) %p) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.225"*, align 8 %p.addr = alloca %"struct.thrust::pair.226"*, align 8 store %"struct.thrust::pair.225"* %this, %"struct.thrust::pair.225"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.226"* %p, %"struct.thrust::pair.226"** %p.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.225"*, %"struct.thrust::pair.225"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.225", %"struct.thrust::pair.225"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.226"*, %"struct.thrust::pair.226"** %p.addr, align 8 %first2 = getelementptr inbounds %"struct.thrust::pair.226", %"struct.thrust::pair.226"* %0, i32 0, i32 0 %1 = bitcast %"class.thrust::pointer.202"* %first to i8* %2 = bitcast %"class.thrust::pointer.202"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.225", %"struct.thrust::pair.225"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::pair.226"*, %"struct.thrust::pair.226"** %p.addr, align 8 %second3 = getelementptr inbounds %"struct.thrust::pair.226", %"struct.thrust::pair.226"* %3, i32 0, i32 1 %4 = load i64, i64* %second3, align 8, !tbaa !197 store i64 %4, i64* %second, align 8, !tbaa !194 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE10deallocateENS_7pointerIjS5_NS_11use_defaultES8_EEm(%"class.thrust::detail::temporary_allocator"* %this, i32* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.202", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %p.coerce, i32** %coerce.dive1, align 8 store %"class.thrust::detail::temporary_allocator"* %this, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::temporary_allocator"*, %"class.thrust::detail::temporary_allocator"** %this.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator"* %this2) %0 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %1 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.202"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 %3 = load i32*, i32** %coerce.dive4, align 8 call void @_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerIjS4_NS_11use_defaultES6_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0, i32* %3) ret void } ; Function Attrs: uwtable define linkonce_odr { i32*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairIjNS_6system4cuda6detail3tagENS_4pairINS_7pointerIjS6_NS_11use_defaultES9_EElEEEENS7_INS8_IT_T0_S9_S9_EENSE_15difference_typeEEET1_(i32* %p.coerce0, i64 %p.coerce1) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.226", align 8 %p = alloca %"struct.thrust::pair.226", align 8 %ptr = alloca %"class.thrust::pointer.202", align 8 %0 = bitcast %"struct.thrust::pair.226"* %p to { i32*, i64 }* %1 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %0, i32 0, i32 0 store i32* %p.coerce0, i32** %1, align 8 %2 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %0, i32 0, i32 1 store i64 %p.coerce1, i64* %2, align 8 %3 = bitcast %"class.thrust::pointer.202"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %first = getelementptr inbounds %"struct.thrust::pair.226", %"struct.thrust::pair.226"* %p, i32 0, i32 0 %call = call i32* @_ZN6thrust16raw_pointer_castINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_(%"class.thrust::pointer.202"* dereferenceable(8) %first) call void @_ZN6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IjEEPT_(%"class.thrust::pointer.202"* %ptr, i32* %call) %second = getelementptr inbounds %"struct.thrust::pair.226", %"struct.thrust::pair.226"* %p, i32 0, i32 1 call void @_ZN6thrust4pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EElEC2ERKS7_RKl(%"struct.thrust::pair.226"* %retval, %"class.thrust::pointer.202"* dereferenceable(8) %ptr, i64* dereferenceable(8) %second) %4 = bitcast %"class.thrust::pointer.202"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %4) #5 %5 = bitcast %"struct.thrust::pair.226"* %retval to { i32*, i64 }* %6 = load { i32*, i64 }, { i32*, i64 }* %5, align 8 ret { i32*, i64 } %6 } ; Function Attrs: uwtable define linkonce_odr { i32*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferIjNS0_4cuda6detail3tagEEENS_4pairINS_7pointerIT_T0_NS_11use_defaultESB_EENSC_15difference_typeEEERNS_16execution_policyISA_EESD_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.226", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %ptr = alloca %"class.thrust::pointer.202", align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.202"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i32* @_ZN6thrust6mallocIjNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %call, i32** %coerce.dive1, align 8 %call2 = call i32* @_ZNK6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.202"* %ptr) %tobool = icmp ne i32* %call2, null br i1 %tobool, label %if.end, label %if.then if.then: ; preds = %entry store i64 0, i64* %n.addr, align 8, !tbaa !13 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %5 = bitcast %"class.thrust::pointer.202"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 %7 = load i32*, i32** %coerce.dive4, align 8 %call5 = call { i32*, i64 } @_ZN6thrust9make_pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EElEENS_4pairIT_T0_EES9_SA_(i32* %7, i64 %6) %8 = bitcast %"struct.thrust::pair.226"* %retval to { i32*, i64 }* %9 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %8, i32 0, i32 0 %10 = extractvalue { i32*, i64 } %call5, 0 store i32* %10, i32** %9, align 8 %11 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %8, i32 0, i32 1 %12 = extractvalue { i32*, i64 } %call5, 1 store i64 %12, i64* %11, align 8 %13 = bitcast %"class.thrust::pointer.202"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.226"* %retval to { i32*, i64 }* %15 = load { i32*, i64 }, { i32*, i64 }* %14, align 8 ret { i32*, i64 } %15 } ; Function Attrs: inlinehint uwtable define linkonce_odr i32* @_ZN6thrust16raw_pointer_castINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_(%"class.thrust::pointer.202"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::pointer.202"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 store %"class.thrust::pointer.202"* %ptr, %"class.thrust::pointer.202"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.202"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 %3 = load i32*, i32** %coerce.dive1, align 8 %call = call i32* @_ZN6thrust6detail14pointer_traitsINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_(i32* %3) ret i32* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EElEC2ERKS7_RKl(%"struct.thrust::pair.226"* %this, %"class.thrust::pointer.202"* dereferenceable(8) %x, i64* dereferenceable(8) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.226"*, align 8 %x.addr = alloca %"class.thrust::pointer.202"*, align 8 %y.addr = alloca i64*, align 8 store %"struct.thrust::pair.226"* %this, %"struct.thrust::pair.226"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.202"* %x, %"class.thrust::pointer.202"** %x.addr, align 8, !tbaa !7 store i64* %y, i64** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.226"*, %"struct.thrust::pair.226"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.226", %"struct.thrust::pair.226"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %x.addr, align 8 %1 = bitcast %"class.thrust::pointer.202"* %first to i8* %2 = bitcast %"class.thrust::pointer.202"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.226", %"struct.thrust::pair.226"* %this1, i32 0, i32 1 %3 = load i64*, i64** %y.addr, align 8 %4 = load i64, i64* %3, align 8, !tbaa !13 store i64 %4, i64* %second, align 8, !tbaa !197 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i32* @_ZN6thrust6detail14pointer_traitsINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_(i32* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %ptr.coerce, i32** %coerce.dive1, align 8 %call = call i32* @_ZNK6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.202"* %ptr) ret i32* %call } ; Function Attrs: uwtable define linkonce_odr i32* @_ZNK6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.202"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.202"*, align 8 store %"class.thrust::pointer.202"* %this, %"class.thrust::pointer.202"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.202"* %this1 to %"class.thrust::iterator_adaptor.203"* %call = call dereferenceable(8) i32** @_ZNK6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE4baseEv(%"class.thrust::iterator_adaptor.203"* %0) %1 = load i32*, i32** %call, align 8, !tbaa !1 ret i32* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i32** @_ZNK6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE4baseEv(%"class.thrust::iterator_adaptor.203"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.203"*, align 8 store %"class.thrust::iterator_adaptor.203"* %this, %"class.thrust::iterator_adaptor.203"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.203"*, %"class.thrust::iterator_adaptor.203"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %this1, i32 0, i32 0 ret i32** %m_iterator } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6mallocIjNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %raw_ptr = alloca i32*, align 8 %ref.tmp = alloca %"class.thrust::pointer.202", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i32** %raw_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call i32* @_ZN6thrust6system6detail7generic6mallocIjNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %ref.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %call2, i32** %coerce.dive3, align 8 %call4 = call i32* @_ZN6thrust16raw_pointer_castINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_(%"class.thrust::pointer.202"* dereferenceable(8) %ref.tmp) store i32* %call4, i32** %raw_ptr, align 8, !tbaa !1 %4 = load i32*, i32** %raw_ptr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IjEEPT_(%"class.thrust::pointer.202"* %retval, i32* %4) %5 = bitcast i32** %raw_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive5, i32 0, i32 0 %6 = load i32*, i32** %coerce.dive6, align 8 ret i32* %6 } ; Function Attrs: inlinehint uwtable define linkonce_odr { i32*, i64 } @_ZN6thrust9make_pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EElEENS_4pairIT_T0_EES9_SA_(i32* %x.coerce, i64 %y) #8 comdat { entry: %retval = alloca %"struct.thrust::pair.226", align 8 %x = alloca %"class.thrust::pointer.202", align 8 %y.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %x, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %x.coerce, i32** %coerce.dive1, align 8 store i64 %y, i64* %y.addr, align 8, !tbaa !13 call void @_ZN6thrust4pairINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EElEC2ERKS7_RKl(%"struct.thrust::pair.226"* %retval, %"class.thrust::pointer.202"* dereferenceable(8) %x, i64* dereferenceable(8) %y.addr) %0 = bitcast %"struct.thrust::pair.226"* %retval to { i32*, i64 }* %1 = load { i32*, i64 }, { i32*, i64 }* %0, align 8 ret { i32*, i64 } %1 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6system6detail7generic6mallocIjNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %void_ptr = alloca %"class.thrust::pointer.129", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 4, %3 %call = call i8* @_ZN6thrust6mallocINS_6system4cuda6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %mul) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.129", %"class.thrust::pointer.129"* %void_ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.130", %"class.thrust::iterator_adaptor.130"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive1, align 8 %call2 = call i8* @_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.129"* %void_ptr) %4 = bitcast i8* %call2 to i32* call void @_ZN6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IjEEPT_(%"class.thrust::pointer.202"* %retval, i32* %4) %5 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 %6 = load i32*, i32** %coerce.dive4, align 8 ret i32* %6 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerIjS4_NS_11use_defaultES6_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i32* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.202", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %p.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::execution_policy.120"* %2 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.202"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive4, align 8 call void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerIjS6_NS_11use_defaultES8_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, i32* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerIjS6_NS_11use_defaultES8_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i32* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.202", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %p.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.120"* %0 to %"struct.thrust::detail::execution_policy_base.121"* %2 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.202"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive3, align 8 call void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerIjS4_NS_11use_defaultES6_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i32* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerIjS4_NS_11use_defaultES6_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i32* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::pointer.202", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %ptr.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.202"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive4, align 8 call void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerIjS4_NS_11use_defaultES6_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, i32* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerIjS4_NS_11use_defaultES6_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1), i32* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::pointer.202", align 8 %.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %ptr.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %0, %"struct.thrust::system::cuda::detail::execution_policy.119"** %.addr, align 8, !tbaa !7 %call = call i32* @_ZN6thrust16raw_pointer_castINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_(%"class.thrust::pointer.202"* dereferenceable(8) %ptr) %1 = bitcast i32* %call to i8* %call2 = call i32 @cudaFree(i8* %1) call void @_ZN6thrust6system4cuda6detail14throw_on_errorE9cudaErrorPKc(i32 %call2, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.24, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.198"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.198"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp6 = alloca %"class.thrust::pointer.202", align 8 store %"class.thrust::detail::contiguous_storage.198"* %this, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.198"*, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.198"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.199"* %m_begin to %"class.thrust::iterator_adaptor.200"* %call2 = call dereferenceable(8) %"class.thrust::pointer.202"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.200"* %0) %1 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.202"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.198"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 %3 = load i32*, i32** %coerce.dive4, align 8 call void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE10deallocateERS9_NS_7pointerIjS7_NS_11use_defaultESD_EEm(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %m_allocator, i32* %3, i64 %call3) %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IjEEPT_(%"class.thrust::pointer.202"* %agg.tmp6, i32* null) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive7, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive8, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEC2ES8_(%"class.thrust::detail::normal_iterator.199"* %ref.tmp, i32* %4) %5 = bitcast %"class.thrust::detail::normal_iterator.199"* %m_begin5 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.199"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !188 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.198"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.198"*, align 8 store %"class.thrust::detail::contiguous_storage.198"* %this, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.198"*, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !188 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE10deallocateERS9_NS_7pointerIjS7_NS_11use_defaultESD_EEm(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %a, i32* %p.coerce, i64 %n) #8 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.202", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %p.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator"* %a, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.202"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive3, align 8 call void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE10deallocateERS9_NS_7pointerIjS7_NS_11use_defaultESD_EEmEN19workaround_warnings10deallocateESB_SE_m(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %0, i32* %4, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.202"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.200"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.200"*, align 8 store %"class.thrust::iterator_adaptor.200"* %this, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.200"*, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %this1, i32 0, i32 0 ret %"class.thrust::pointer.202"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE10deallocateERS9_NS_7pointerIjS7_NS_11use_defaultESD_EEmEN19workaround_warnings10deallocateESB_SE_m(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %a, i32* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.202", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %p.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator"* %a, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.202"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive3, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIjS6_NS_11use_defaultESA_EEm(%"struct.thrust::detail::no_throw_allocator"* %0, i32* %4, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIjS6_NS_11use_defaultESA_EEm(%"struct.thrust::detail::no_throw_allocator"* %this, i32* %p.coerce, i64 %n) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %p = alloca %"class.thrust::pointer.202", align 8 %this.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %p.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator"* %this, %"struct.thrust::detail::no_throw_allocator"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator"* %this2 to %"class.thrust::detail::temporary_allocator"* %1 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.202"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive4, align 8 invoke void @_ZN6thrust6detail19temporary_allocatorIjNS_6system4cuda6detail3tagEE10deallocateENS_7pointerIjS5_NS_11use_defaultES8_EEm(%"class.thrust::detail::temporary_allocator"* %0, i32* %4, i64 %3) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry br label %try.cont lpad: ; preds = %entry %5 = landingpad { i8*, i32 } catch i8* null %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %8 = call i8* @__cxa_begin_catch(i8* %exn) #5 call void @__cxa_end_catch() br label %try.cont try.cont: ; preds = %catch, %invoke.cont ret void } ; Function Attrs: uwtable define linkonce_odr i32* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEixEl(%"class.thrust::iterator_facade.201"* %this, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.205", align 8 %this.addr = alloca %"class.thrust::iterator_facade.201"*, align 8 %n.addr = alloca i64, align 8 %coerce = alloca %"class.thrust::detail::normal_iterator.199", align 8 store %"class.thrust::iterator_facade.201"* %this, %"class.thrust::iterator_facade.201"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.201"*, %"class.thrust::iterator_facade.201"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.201"* %this1) %0 = bitcast %"class.thrust::detail::normal_iterator.199"* %call to %"class.thrust::iterator_facade.201"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call i32* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEET_RKNS_15iterator_facadeISE_T0_T1_T2_T3_T4_EENSE_15difference_typeE(%"class.thrust::iterator_facade.201"* dereferenceable(1) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %coerce, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive4, i32 0, i32 0 store i32* %call2, i32** %coerce.dive5, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.199"* %coerce to %"class.thrust::iterator_facade.201"* %call6 = call i32* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEdeEv(%"class.thrust::iterator_facade.201"* %2) %coerce.dive7 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive8, i32 0, i32 0 store i32* %call6, i32** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive11, i32 0, i32 0 %3 = load i32*, i32** %coerce.dive12, align 8 ret i32* %3 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.201"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.201"*, align 8 store %"class.thrust::iterator_facade.201"* %this, %"class.thrust::iterator_facade.201"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.201"*, %"class.thrust::iterator_facade.201"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.201"* %this1 to %"class.thrust::detail::normal_iterator.199"* ret %"class.thrust::detail::normal_iterator.199"* %0 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEdeEv(%"class.thrust::iterator_facade.201"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.205", align 8 %this.addr = alloca %"class.thrust::iterator_facade.201"*, align 8 store %"class.thrust::iterator_facade.201"* %this, %"class.thrust::iterator_facade.201"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.201"*, %"class.thrust::iterator_facade.201"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.201"* %this1) %call2 = call i32* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEEENT_9referenceERKSC_(%"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 store i32* %call2, i32** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive6, i32 0, i32 0 %0 = load i32*, i32** %coerce.dive7, align 8 ret i32* %0 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEEENT_9referenceERKSC_(%"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.205", align 8 %f.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 store %"class.thrust::detail::normal_iterator.199"* %f, %"class.thrust::detail::normal_iterator.199"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.199"* %0 to %"class.thrust::iterator_adaptor.200"* %call = call i32* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E11dereferenceEv(%"class.thrust::iterator_adaptor.200"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive1, i32 0, i32 0 store i32* %call, i32** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive4, i32 0, i32 0 %2 = load i32*, i32** %coerce.dive5, align 8 ret i32* %2 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E11dereferenceEv(%"class.thrust::iterator_adaptor.200"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.205", align 8 %this.addr = alloca %"class.thrust::iterator_adaptor.200"*, align 8 store %"class.thrust::iterator_adaptor.200"* %this, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.200"*, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.202"* %m_iterator to %"class.thrust::iterator_facade.204"* %call = call i32* @_ZNK6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEdeEv(%"class.thrust::iterator_facade.204"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 store i32* %call, i32** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive5, i32 0, i32 0 %1 = load i32*, i32** %coerce.dive6, align 8 ret i32* %1 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZNK6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEdeEv(%"class.thrust::iterator_facade.204"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.205", align 8 %this.addr = alloca %"class.thrust::iterator_facade.204"*, align 8 store %"class.thrust::iterator_facade.204"* %this, %"class.thrust::iterator_facade.204"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.204"*, %"class.thrust::iterator_facade.204"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.202"* @_ZNK6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7derivedEv(%"class.thrust::iterator_facade.204"* %this1) %call2 = call i32* @_ZN6thrust20iterator_core_access11dereferenceINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEENT_9referenceERKS9_(%"class.thrust::pointer.202"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 store i32* %call2, i32** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive6, i32 0, i32 0 %0 = load i32*, i32** %coerce.dive7, align 8 ret i32* %0 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust20iterator_core_access11dereferenceINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEENT_9referenceERKS9_(%"class.thrust::pointer.202"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.205", align 8 %f.addr = alloca %"class.thrust::pointer.202"*, align 8 store %"class.thrust::pointer.202"* %f, %"class.thrust::pointer.202"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %f.addr, align 8 %call = call i32* @_ZNK6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_E11dereferenceEv(%"class.thrust::pointer.202"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive1, i32 0, i32 0 store i32* %call, i32** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive4, i32 0, i32 0 %1 = load i32*, i32** %coerce.dive5, align 8 ret i32* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.202"* @_ZNK6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7derivedEv(%"class.thrust::iterator_facade.204"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.204"*, align 8 store %"class.thrust::iterator_facade.204"* %this, %"class.thrust::iterator_facade.204"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.204"*, %"class.thrust::iterator_facade.204"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.204"* %this1 to %"class.thrust::pointer.202"* ret %"class.thrust::pointer.202"* %0 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZNK6thrust7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES5_E11dereferenceEv(%"class.thrust::pointer.202"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.205", align 8 %this.addr = alloca %"class.thrust::pointer.202"*, align 8 store %"class.thrust::pointer.202"* %this, %"class.thrust::pointer.202"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %this.addr, align 8 call void @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EC2ERKS7_(%"class.thrust::reference.205"* %retval, %"class.thrust::pointer.202"* dereferenceable(8) %this1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %0 = load i32*, i32** %coerce.dive3, align 8 ret i32* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EC2ERKS7_(%"class.thrust::reference.205"* %this, %"class.thrust::pointer.202"* dereferenceable(8) %ptr) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.205"*, align 8 %ptr.addr = alloca %"class.thrust::pointer.202"*, align 8 store %"class.thrust::reference.205"* %this, %"class.thrust::reference.205"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.202"* %ptr, %"class.thrust::pointer.202"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.205"*, %"class.thrust::reference.205"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.202"* %m_ptr to i8* %2 = bitcast %"class.thrust::pointer.202"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_E11assign_fromIPKjEEvT_(%"class.thrust::reference.205"* %this, i32* %src) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.205"*, align 8 %src.addr = alloca i32*, align 8 %system1 = alloca %"struct.thrust::system::cuda::detail::tag"*, align 8 %system2 = alloca %"struct.thrust::system::cpp::detail::tag"*, align 8 store %"class.thrust::reference.205"* %this, %"class.thrust::reference.205"** %this.addr, align 8, !tbaa !1 store i32* %src, i32** %src.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.205"*, %"class.thrust::reference.205"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::tag"** %system1 to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 store %"struct.thrust::system::cuda::detail::tag"* null, %"struct.thrust::system::cuda::detail::tag"** %system1, align 8, !tbaa !1 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"** %system2 to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 store %"struct.thrust::system::cpp::detail::tag"* null, %"struct.thrust::system::cpp::detail::tag"** %system2, align 8, !tbaa !1 %2 = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %system1, align 8, !tbaa !1 %3 = load %"struct.thrust::system::cpp::detail::tag"*, %"struct.thrust::system::cpp::detail::tag"** %system2, align 8, !tbaa !1 %4 = load i32*, i32** %src.addr, align 8, !tbaa !1 call void @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_E11assign_fromIS5_NS2_3cpp6detail3tagEPKjEEvPT_PT0_T1_(%"class.thrust::reference.205"* %this1, %"struct.thrust::system::cuda::detail::tag"* %2, %"struct.thrust::system::cpp::detail::tag"* %3, i32* %4) %5 = bitcast %"struct.thrust::system::cpp::detail::tag"** %system2 to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %6 = bitcast %"struct.thrust::system::cuda::detail::tag"** %system1 to i8* call void @llvm.lifetime.end(i64 8, i8* %6) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_E11assign_fromIS5_NS2_3cpp6detail3tagEPKjEEvPT_PT0_T1_(%"class.thrust::reference.205"* %this, %"struct.thrust::system::cuda::detail::tag"* %system1, %"struct.thrust::system::cpp::detail::tag"* %system2, i32* %src) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.205"*, align 8 %system1.addr = alloca %"struct.thrust::system::cuda::detail::tag"*, align 8 %system2.addr = alloca %"struct.thrust::system::cpp::detail::tag"*, align 8 %src.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 store %"class.thrust::reference.205"* %this, %"class.thrust::reference.205"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::tag"* %system1, %"struct.thrust::system::cuda::detail::tag"** %system1.addr, align 8, !tbaa !1 store %"struct.thrust::system::cpp::detail::tag"* %system2, %"struct.thrust::system::cpp::detail::tag"** %system2.addr, align 8, !tbaa !1 store i32* %src, i32** %src.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.205"*, %"class.thrust::reference.205"** %this.addr, align 8 %0 = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %system1.addr, align 8, !tbaa !1 %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %0 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = load %"struct.thrust::system::cpp::detail::tag"*, %"struct.thrust::system::cpp::detail::tag"** %system2.addr, align 8, !tbaa !1 %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %2 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %call = call { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } @_ZN6thrust6system4cuda6detail13select_systemINS2_3tagENS0_3cpp6detail3tagEEENS2_12cross_systemIT_T0_EERKNS2_16execution_policyIS9_EERKNS6_16execution_policyISA_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %3) %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %ref.tmp to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %5 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %4, i32 0, i32 0 %6 = extractvalue { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } %call, 0 store %"struct.thrust::execution_policy.120"* %6, %"struct.thrust::execution_policy.120"** %5, align 8 %7 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %4, i32 0, i32 1 %8 = extractvalue { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } %call, 1 store %"struct.thrust::execution_policy.88"* %8, %"struct.thrust::execution_policy.88"** %7, align 8 %9 = load i32*, i32** %src.addr, align 8, !tbaa !1 call void @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_E24strip_const_assign_valueINS4_12cross_systemIS5_NS2_3cpp6detail3tagEEEPKjEEvRKT_T0_(%"class.thrust::reference.205"* %this1, %"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %ref.tmp, i32* %9) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_E24strip_const_assign_valueINS4_12cross_systemIS5_NS2_3cpp6detail3tagEEEPKjEEvRKT_T0_(%"class.thrust::reference.205"* %this, %"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %system, i32* %src) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.205"*, align 8 %system.addr = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %src.addr = alloca i32*, align 8 %non_const_system = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 store %"class.thrust::reference.205"* %this, %"class.thrust::reference.205"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::cross_system.227"* %system, %"struct.thrust::system::cuda::detail::cross_system.227"** %system.addr, align 8, !tbaa !7 store i32* %src, i32** %src.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.205"*, %"class.thrust::reference.205"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"** %non_const_system to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %system.addr, align 8 store %"struct.thrust::system::cuda::detail::cross_system.227"* %1, %"struct.thrust::system::cuda::detail::cross_system.227"** %non_const_system, align 8, !tbaa !7 %2 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %non_const_system, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %2 to %"struct.thrust::detail::execution_policy_base.229"* %call = call dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system.227"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS4_3tagENS2_3cpp6detail3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.229"* dereferenceable(1) %3) %m_ptr = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %this1, i32 0, i32 0 %4 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %5 = bitcast %"class.thrust::pointer.202"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i32*, i32** %src.addr, align 8, !tbaa !1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 %7 = load i32*, i32** %coerce.dive2, align 8 call void @_ZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerIjS4_NS_11use_defaultES9_EEPKjEEvRNS2_12cross_systemIT_T0_EET1_T2_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %call, i32* %7, i32* %6) %8 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"** %non_const_system to i8* call void @llvm.lifetime.end(i64 8, i8* %8) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } @_ZN6thrust6system4cuda6detail13select_systemINS2_3tagENS0_3cpp6detail3tagEEENS2_12cross_systemIT_T0_EERKNS2_16execution_policyIS9_EERKNS6_16execution_policyISA_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %system1, %"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %system2) #8 comdat { entry: %retval = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %system1.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %system2.addr = alloca %"struct.thrust::system::cpp::detail::execution_policy.86"*, align 8 %non_const_system1 = alloca %"struct.thrust::execution_policy.120"*, align 8 %non_const_system2 = alloca %"struct.thrust::system::cpp::detail::execution_policy.86"*, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %system1, %"struct.thrust::system::cuda::detail::execution_policy.119"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::system::cpp::detail::execution_policy.86"* %system2, %"struct.thrust::system::cpp::detail::execution_policy.86"** %system2.addr, align 8, !tbaa !7 %0 = bitcast %"struct.thrust::execution_policy.120"** %non_const_system1 to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %system1.addr, align 8 %2 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %1 to %"struct.thrust::execution_policy.120"* store %"struct.thrust::execution_policy.120"* %2, %"struct.thrust::execution_policy.120"** %non_const_system1, align 8, !tbaa !7 %3 = bitcast %"struct.thrust::system::cpp::detail::execution_policy.86"** %non_const_system2 to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load %"struct.thrust::system::cpp::detail::execution_policy.86"*, %"struct.thrust::system::cpp::detail::execution_policy.86"** %system2.addr, align 8 store %"struct.thrust::system::cpp::detail::execution_policy.86"* %4, %"struct.thrust::system::cpp::detail::execution_policy.86"** %non_const_system2, align 8, !tbaa !7 %5 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %non_const_system1, align 8 %6 = load %"struct.thrust::system::cpp::detail::execution_policy.86"*, %"struct.thrust::system::cpp::detail::execution_policy.86"** %non_const_system2, align 8 %7 = bitcast %"struct.thrust::system::cpp::detail::execution_policy.86"* %6 to %"struct.thrust::execution_policy.88"* call void @_ZN6thrust6system4cuda6detail12cross_systemINS2_3tagENS0_3cpp6detail3tagEEC2ERNS_16execution_policyIS4_EERNS9_IS7_EE(%"struct.thrust::system::cuda::detail::cross_system.227"* %retval, %"struct.thrust::execution_policy.120"* dereferenceable(1) %5, %"struct.thrust::execution_policy.88"* dereferenceable(1) %7) %8 = bitcast %"struct.thrust::system::cpp::detail::execution_policy.86"** %non_const_system2 to i8* call void @llvm.lifetime.end(i64 8, i8* %8) #5 %9 = bitcast %"struct.thrust::execution_policy.120"** %non_const_system1 to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %10 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %retval to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %11 = load { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %10, align 8 ret { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } %11 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerIjS4_NS_11use_defaultES9_EEPKjEEvRNS2_12cross_systemIT_T0_EET1_T2_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %systems, i32* %dst.coerce, i32* %src) #8 comdat { entry: %dst = alloca %"class.thrust::pointer.202", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %src.addr = alloca i32*, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %dst, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %dst.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::cross_system.227"* %systems, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8, !tbaa !7 store i32* %src, i32** %src.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8 %1 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.202"* %dst to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i32*, i32** %src.addr, align 8, !tbaa !1 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive3, align 8 call void @_ZZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerIjS4_NS_11use_defaultES9_EEPKjEEvRNS2_12cross_systemIT_T0_EET1_T2_EN17war_nvbugs_8816319host_pathERNSD_IS4_S7_EESA_SC_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %0, i32* %4, i32* %3) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system.227"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS4_3tagENS2_3cpp6detail3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.229"* dereferenceable(1) %x) #9 comdat { entry: %x.addr = alloca %"struct.thrust::detail::execution_policy_base.229"*, align 8 store %"struct.thrust::detail::execution_policy_base.229"* %x, %"struct.thrust::detail::execution_policy_base.229"** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.229"*, %"struct.thrust::detail::execution_policy_base.229"** %x.addr, align 8 %1 = bitcast %"struct.thrust::detail::execution_policy_base.229"* %0 to %"struct.thrust::system::cuda::detail::cross_system.227"* ret %"struct.thrust::system::cuda::detail::cross_system.227"* %1 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerIjS4_NS_11use_defaultES9_EEPKjEEvRNS2_12cross_systemIT_T0_EET1_T2_EN17war_nvbugs_8816319host_pathERNSD_IS4_S7_EESA_SC_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %systems, i32* %dst.coerce, i32* %src) #8 comdat align 2 { entry: %dst = alloca %"class.thrust::pointer.202", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %src.addr = alloca i32*, align 8 %rotated_systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %dst, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %dst.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::cross_system.227"* %systems, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8, !tbaa !7 store i32* %src, i32** %src.addr, align 8, !tbaa !1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %rotated_systems to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8 %call = call { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } @_ZNK6thrust6system4cuda6detail12cross_systemINS2_3tagENS0_3cpp6detail3tagEE6rotateEv(%"struct.thrust::system::cuda::detail::cross_system.227"* %1) %2 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %rotated_systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %2, i32 0, i32 0 %4 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call, 0 store %"struct.thrust::execution_policy.88"* %4, %"struct.thrust::execution_policy.88"** %3, align 8 %5 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %2, i32 0, i32 1 %6 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call, 1 store %"struct.thrust::execution_policy.120"* %6, %"struct.thrust::execution_policy.120"** %5, align 8 %7 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %rotated_systems to %"struct.thrust::detail::execution_policy_base.132"* %8 = load i32*, i32** %src.addr, align 8, !tbaa !1 %9 = load i32*, i32** %src.addr, align 8, !tbaa !1 %add.ptr = getelementptr inbounds i32, i32* %9, i64 1 %10 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %11 = bitcast %"class.thrust::pointer.202"* %dst to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %12 = load i32*, i32** %coerce.dive3, align 8 %call4 = call i32* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEEPKjNS_7pointerIjS8_NS_11use_defaultESD_EEEET1_RKNS_6detail21execution_policy_baseIT_EET0_SM_SF_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %7, i32* %8, i32* %add.ptr, i32* %12) %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive5, i32 0, i32 0 store i32* %call4, i32** %coerce.dive6, align 8 %13 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %rotated_systems to i8* call void @llvm.lifetime.end(i64 16, i8* %13) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } @_ZNK6thrust6system4cuda6detail12cross_systemINS2_3tagENS0_3cpp6detail3tagEE6rotateEv(%"struct.thrust::system::cuda::detail::cross_system.227"* %this) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %this.addr = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 store %"struct.thrust::system::cuda::detail::cross_system.227"* %this, %"struct.thrust::system::cuda::detail::cross_system.227"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %this.addr, align 8 %system2 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system.227", %"struct.thrust::system::cuda::detail::cross_system.227"* %this1, i32 0, i32 1 %ref = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2, align 8, !tbaa !7 %system1 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system.227", %"struct.thrust::system::cuda::detail::cross_system.227"* %this1, i32 0, i32 0 %ref2 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system1, align 8, !tbaa !7 call void @_ZN6thrust6system4cuda6detail12cross_systemINS0_3cpp6detail3tagENS2_3tagEEC2ERNS_16execution_policyIS6_EERNS9_IS7_EE(%"struct.thrust::system::cuda::detail::cross_system"* %retval, %"struct.thrust::execution_policy.88"* dereferenceable(1) %ref, %"struct.thrust::execution_policy.120"* dereferenceable(1) %ref2) %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %retval to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = load { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, align 8 ret { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %1 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEEPKjNS_7pointerIjS8_NS_11use_defaultESD_EEEET1_RKNS_6detail21execution_policy_baseIT_EET0_SM_SF_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %exec, i32* %first, i32* %last, i32* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %result = alloca %"class.thrust::pointer.202", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.132"*, align 8 %first.addr = alloca i32*, align 8 %last.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp3 = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.132"* %exec, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8, !tbaa !7 store i32* %first, i32** %first.addr, align 8, !tbaa !1 store i32* %last, i32** %last.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::detail::execution_policy_base.132"*, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.132"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %0) %call2 = call dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = load i32*, i32** %first.addr, align 8, !tbaa !1 %4 = load i32*, i32** %last.addr, align 8, !tbaa !1 %5 = bitcast %"class.thrust::pointer.202"* %agg.tmp3 to i8* %6 = bitcast %"class.thrust::pointer.202"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %8 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %7, i32 0, i32 0 %9 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %8, align 8 %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %7, i32 0, i32 1 %11 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %10, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive4, i32 0, i32 0 %12 = load i32*, i32** %coerce.dive5, align 8 %call6 = call i32* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_(%"struct.thrust::execution_policy.88"* %9, %"struct.thrust::execution_policy.120"* %11, i32* %3, i32* %4, i32* %12) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive7, i32 0, i32 0 store i32* %call6, i32** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive9, i32 0, i32 0 %13 = load i32*, i32** %coerce.dive10, align 8 ret i32* %13 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i32* %first, i32* %last, i32* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %result = alloca %"class.thrust::pointer.202", align 8 %first.addr = alloca i32*, align 8 %last.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp2 = alloca %"class.thrust::pointer.202", align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive1, align 8 store i32* %first, i32** %first.addr, align 8, !tbaa !1 store i32* %last, i32** %last.addr, align 8, !tbaa !1 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = load i32*, i32** %first.addr, align 8, !tbaa !1 %6 = load i32*, i32** %last.addr, align 8, !tbaa !1 %7 = bitcast %"class.thrust::pointer.202"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::pointer.202"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 %14 = load i32*, i32** %coerce.dive4, align 8 %call = call i32* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, i32* %5, i32* %6, i32* %14) %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive5, i32 0, i32 0 store i32* %call, i32** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive7, i32 0, i32 0 %15 = load i32*, i32** %coerce.dive8, align 8 ret i32* %15 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i32* %begin, i32* %end, i32* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %result = alloca %"class.thrust::pointer.202", align 8 %begin.addr = alloca i32*, align 8 %end.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp2 = alloca %"class.thrust::pointer.202", align 8 %agg.tmp3 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp4 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive1, align 8 store i32* %begin, i32** %begin.addr, align 8, !tbaa !1 store i32* %end, i32** %end.addr, align 8, !tbaa !1 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = load i32*, i32** %begin.addr, align 8, !tbaa !1 %6 = load i32*, i32** %end.addr, align 8, !tbaa !1 %7 = bitcast %"class.thrust::pointer.202"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::pointer.202"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp2, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive5, i32 0, i32 0 %14 = load i32*, i32** %coerce.dive6, align 8 %call = call i32* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_NS_27random_access_traversal_tagESJ_(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, i32* %5, i32* %6, i32* %14) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive7, i32 0, i32 0 store i32* %call, i32** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive9, i32 0, i32 0 %15 = load i32*, i32** %coerce.dive10, align 8 ret i32* %15 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_NS_27random_access_traversal_tagESJ_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i32* %begin, i32* %end, i32* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %result = alloca %"class.thrust::pointer.202", align 8 %input_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %output_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %begin.addr = alloca i32*, align 8 %end.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp3 = alloca %"class.thrust::pointer.202", align 8 %agg.tmp4 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp5 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp6 = alloca %"struct.thrust::detail::integral_constant", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive1, align 8 store i32* %begin, i32** %begin.addr, align 8, !tbaa !1 store i32* %end, i32** %end.addr, align 8, !tbaa !1 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = load i32*, i32** %begin.addr, align 8, !tbaa !1 %6 = load i32*, i32** %end.addr, align 8, !tbaa !1 %7 = bitcast %"class.thrust::pointer.202"* %agg.tmp3 to i8* %8 = bitcast %"class.thrust::pointer.202"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp3, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive7, i32 0, i32 0 %14 = load i32*, i32** %coerce.dive8, align 8 %call = call i32* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_NS_27random_access_traversal_tagESJ_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, i32* %5, i32* %6, i32* %14) %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive9, i32 0, i32 0 store i32* %call, i32** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive11, i32 0, i32 0 %15 = load i32*, i32** %coerce.dive12, align 8 ret i32* %15 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKjNS_7pointerIjS7_NS_11use_defaultESB_EEEET2_NS2_12cross_systemIT_T0_EET1_SI_SD_NS_27random_access_traversal_tagESJ_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i32* %begin, i32* %end, i32* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %result = alloca %"class.thrust::pointer.202", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %2 = alloca %"struct.thrust::detail::integral_constant", align 1 %begin.addr = alloca i32*, align 8 %end.addr = alloca i32*, align 8 %n = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %4 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %5, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive1, align 8 store i32* %begin, i32** %begin.addr, align 8, !tbaa !1 store i32* %end, i32** %end.addr, align 8, !tbaa !1 %6 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %6) #5 %7 = load i32*, i32** %end.addr, align 8, !tbaa !1 %8 = load i32*, i32** %begin.addr, align 8, !tbaa !1 %sub.ptr.lhs.cast = ptrtoint i32* %7 to i64 %sub.ptr.rhs.cast = ptrtoint i32* %8 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 4 store i64 %sub.ptr.div, i64* %n, align 8, !tbaa !13 %9 = load i32*, i32** %begin.addr, align 8, !tbaa !1 %10 = load i64, i64* %n, align 8, !tbaa !13 %11 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %12 = bitcast %"class.thrust::pointer.202"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive4, i32 0, i32 0 %13 = load i32*, i32** %coerce.dive5, align 8 call void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagEPKjlNS_7pointerIjS7_NS_11use_defaultESB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, i32* %9, i64 %10, i32* %13) %14 = bitcast %"class.thrust::pointer.202"* %result to %"class.thrust::iterator_facade.204"* %15 = load i64, i64* %n, align 8, !tbaa !13 %call = call i32* @_ZN6thrustplINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEET_RKNS_15iterator_facadeISB_T0_T1_T2_T3_T4_EENSB_15difference_typeE(%"class.thrust::iterator_facade.204"* dereferenceable(1) %14, i64 %15) %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive6, i32 0, i32 0 store i32* %call, i32** %coerce.dive7, align 8 %16 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive8, i32 0, i32 0 %17 = load i32*, i32** %coerce.dive9, align 8 ret i32* %17 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagEPKjlNS_7pointerIjS7_NS_11use_defaultESB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, i32* %first, i64 %n, i32* %result.coerce) #0 comdat { entry: %result = alloca %"class.thrust::pointer.202", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system"*, align 8 %first.addr = alloca i32*, align 8 %n.addr = alloca i64, align 8 %dst = alloca i8*, align 8 %ref.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce = alloca %"class.thrust::reference.205", align 8 %src = alloca i8*, align 8 %ref.tmp9 = alloca i32*, align 8 %kind = alloca i32, align 4 %s = alloca %struct.CUstream_st*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::cross_system"* %systems, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8, !tbaa !7 store i32* %first, i32** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %dst to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = bitcast %"class.thrust::pointer.202"* %result to %"class.thrust::iterator_facade.204"* %call = call i32* @_ZNK6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEdeEv(%"class.thrust::iterator_facade.204"* %1) %coerce.dive2 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %coerce, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive3, i32 0, i32 0 store i32* %call, i32** %coerce.dive4, align 8 %call5 = call i32* @_ZNK6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EadEv(%"class.thrust::reference.205"* %coerce) %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %ref.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive6, i32 0, i32 0 store i32* %call5, i32** %coerce.dive7, align 8 %call8 = call i32* @_ZN6thrust16raw_pointer_castINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_(%"class.thrust::pointer.202"* dereferenceable(8) %ref.tmp) %2 = bitcast i32* %call8 to i8* store i8* %2, i8** %dst, align 8, !tbaa !1 %3 = bitcast i8** %src to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load i32*, i32** %first.addr, align 8, !tbaa !1 store i32* %4, i32** %ref.tmp9, align 8, !tbaa !1 %call10 = call i32* @_ZN6thrust16raw_pointer_castIPKjEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(i32** dereferenceable(8) %ref.tmp9) %5 = bitcast i32* %call10 to i8* store i8* %5, i8** %src, align 8, !tbaa !1 %6 = bitcast i32* %kind to i8* call void @llvm.lifetime.start(i64 4, i8* %6) #5 %7 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system1 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %7, i32 0, i32 0 %ref = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1, align 8, !tbaa !7 %8 = bitcast %"struct.thrust::execution_policy.88"* %ref to %"struct.thrust::detail::execution_policy_base.85"* %call11 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %8) %9 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call11 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %10 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system2 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %10, i32 0, i32 1 %ref12 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2, align 8, !tbaa !7 %11 = bitcast %"struct.thrust::execution_policy.120"* %ref12 to %"struct.thrust::detail::execution_policy_base.121"* %call13 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %11) %12 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call13 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call14 = call i32 @_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS0_3cpp6detail3tagENS2_3tagEEE14cudaMemcpyKindRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %9, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %12) store i32 %call14, i32* %kind, align 4, !tbaa !97 %13 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %13) #5 %14 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system115 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %14, i32 0, i32 0 %ref16 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system115, align 8, !tbaa !7 %15 = bitcast %"struct.thrust::execution_policy.88"* %ref16 to %"struct.thrust::detail::execution_policy_base.85"* %call17 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %15) %16 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call17 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %17 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system218 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %17, i32 0, i32 1 %ref19 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system218, align 8, !tbaa !7 %18 = bitcast %"struct.thrust::execution_policy.120"* %ref19 to %"struct.thrust::detail::execution_policy_base.121"* %call20 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %18) %19 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call20 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call21 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS0_3cpp6detail3tagENS2_3tagEEEP11CUstream_stRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %16, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %19) store %struct.CUstream_st* %call21, %struct.CUstream_st** %s, align 8, !tbaa !1 %20 = load i8*, i8** %dst, align 8, !tbaa !1 %21 = load i8*, i8** %src, align 8, !tbaa !1 %22 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 %22, 4 %23 = load i32, i32* %kind, align 4, !tbaa !97 %24 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail19trivial_copy_detail23checked_cudaMemcpyAsyncEPvPKvm14cudaMemcpyKindP11CUstream_st(i8* %20, i8* %21, i64 %mul, i32 %23, %struct.CUstream_st* %24) %25 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail11synchronizeEP11CUstream_stPKc(%struct.CUstream_st* %25, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.30, i32 0, i32 0)) %26 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %26) #5 %27 = bitcast i32* %kind to i8* call void @llvm.lifetime.end(i64 4, i8* %27) #5 %28 = bitcast i8** %src to i8* call void @llvm.lifetime.end(i64 8, i8* %28) #5 %29 = bitcast i8** %dst to i8* call void @llvm.lifetime.end(i64 8, i8* %29) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i32* @_ZN6thrustplINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEET_RKNS_15iterator_facadeISB_T0_T1_T2_T3_T4_EENSB_15difference_typeE(%"class.thrust::iterator_facade.204"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %i.addr = alloca %"class.thrust::iterator_facade.204"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::pointer.202", align 8 store %"class.thrust::iterator_facade.204"* %i, %"class.thrust::iterator_facade.204"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.202"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.204"*, %"class.thrust::iterator_facade.204"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.204"* %1 to %"class.thrust::pointer.202"* %3 = bitcast %"class.thrust::pointer.202"* %tmp to i8* %4 = bitcast %"class.thrust::pointer.202"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::pointer.202"* %tmp to %"class.thrust::iterator_facade.204"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::pointer.202"* @_ZN6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEpLEl(%"class.thrust::iterator_facade.204"* %5, i64 %6) %7 = bitcast %"class.thrust::pointer.202"* %retval to i8* %8 = bitcast %"class.thrust::pointer.202"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::pointer.202"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 %10 = load i32*, i32** %coerce.dive1, align 8 ret i32* %10 } ; Function Attrs: nounwind uwtable define linkonce_odr i32* @_ZNK6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EadEv(%"class.thrust::reference.205"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.202", align 8 %this.addr = alloca %"class.thrust::reference.205"*, align 8 store %"class.thrust::reference.205"* %this, %"class.thrust::reference.205"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.205"*, %"class.thrust::reference.205"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.202"* %retval to i8* %1 = bitcast %"class.thrust::pointer.202"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 %2 = load i32*, i32** %coerce.dive2, align 8 ret i32* %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i32* @_ZN6thrust16raw_pointer_castIPKjEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(i32** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca i32**, align 8 store i32** %ptr, i32*** %ptr.addr, align 8, !tbaa !7 %0 = load i32**, i32*** %ptr.addr, align 8 %1 = load i32*, i32** %0, align 8, !tbaa !1 %call = call i32* @_ZN6thrust6detail14pointer_traitsIPKjE3getES3_(i32* %1) ret i32* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32* @_ZN6thrust6detail14pointer_traitsIPKjE3getES3_(i32* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca i32*, align 8 store i32* %ptr, i32** %ptr.addr, align 8, !tbaa !1 %0 = load i32*, i32** %ptr.addr, align 8, !tbaa !1 ret i32* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.202"* @_ZN6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEpLEl(%"class.thrust::iterator_facade.204"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.204"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.204"* %this, %"class.thrust::iterator_facade.204"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.204"*, %"class.thrust::iterator_facade.204"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.202"* @_ZN6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7derivedEv(%"class.thrust::iterator_facade.204"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEEvRT_NS9_15difference_typeE(%"class.thrust::pointer.202"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::pointer.202"* @_ZN6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7derivedEv(%"class.thrust::iterator_facade.204"* %this1) ret %"class.thrust::pointer.202"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EEEEvRT_NS9_15difference_typeE(%"class.thrust::pointer.202"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::pointer.202"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::pointer.202"* %f, %"class.thrust::pointer.202"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %f.addr, align 8 %1 = bitcast %"class.thrust::pointer.202"* %0 to %"class.thrust::iterator_adaptor.203"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7advanceEl(%"class.thrust::iterator_adaptor.203"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.202"* @_ZN6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7derivedEv(%"class.thrust::iterator_facade.204"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.204"*, align 8 store %"class.thrust::iterator_facade.204"* %this, %"class.thrust::iterator_facade.204"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.204"*, %"class.thrust::iterator_facade.204"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.204"* %this1 to %"class.thrust::pointer.202"* ret %"class.thrust::pointer.202"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE7advanceEl(%"class.thrust::iterator_adaptor.203"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.203"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.203"* %this, %"class.thrust::iterator_adaptor.203"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.203"*, %"class.thrust::iterator_adaptor.203"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %this1, i32 0, i32 0 %1 = load i32*, i32** %m_iterator, align 8, !tbaa !192 %add.ptr = getelementptr inbounds i32, i32* %1, i64 %0 store i32* %add.ptr, i32** %m_iterator, align 8, !tbaa !192 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail12cross_systemINS2_3tagENS0_3cpp6detail3tagEEC2ERNS_16execution_policyIS4_EERNS9_IS7_EE(%"struct.thrust::system::cuda::detail::cross_system.227"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system2) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %system1.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 store %"struct.thrust::system::cuda::detail::cross_system.227"* %this, %"struct.thrust::system::cuda::detail::cross_system.227"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %system1, %"struct.thrust::execution_policy.120"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %system2, %"struct.thrust::execution_policy.88"** %system2.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %this1 to %"struct.thrust::execution_policy.228"* %system12 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system.227", %"struct.thrust::system::cuda::detail::cross_system.227"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system1.addr, align 8 store %"struct.thrust::execution_policy.120"* %1, %"struct.thrust::execution_policy.120"** %system12, align 8, !tbaa !7 %system23 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system.227", %"struct.thrust::system::cuda::detail::cross_system.227"* %this1, i32 0, i32 1 %2 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2.addr, align 8 store %"struct.thrust::execution_policy.88"* %2, %"struct.thrust::execution_policy.88"** %system23, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS6_NS_11use_defaultESD_EEEENS7_13binary_negateINS_8equal_toIaEEEEEET2_RNS_16execution_policyIT_EET0_SP_T1_SK_T3_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i8* %first1.coerce, i8* %last1.coerce, i8* %first2.coerce, i32* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.199", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.56", align 8 %result = alloca %"class.thrust::detail::normal_iterator.199", align 8 %op = alloca %"struct.thrust::detail::binary_negate", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %zipped_result = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp19 = alloca %"class.thrust::tuple.232", align 8 %agg.tmp20 = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp21 = alloca %"class.thrust::tuple.232", align 8 %agg.tmp22 = alloca %"struct.thrust::detail::binary_transform_functor.235", align 1 %agg.tmp23 = alloca %"struct.thrust::detail::binary_negate", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive3, i32 0, i32 0 store i8* %first1.coerce, i8** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive8, i32 0, i32 0 store i8* %last1.coerce, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.56", %"class.thrust::detail::normal_iterator.56"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.57", %"class.thrust::iterator_adaptor.57"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr", %"class.thrust::device_ptr"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer", %"class.thrust::pointer"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.59", %"class.thrust::iterator_adaptor.59"* %coerce.dive13, i32 0, i32 0 store i8* %first2.coerce, i8** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive17, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive18, align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %0 = bitcast %"class.thrust::zip_iterator.230"* %zipped_result to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESI_SI_SI_SI_SI_SI_E4typeERKSF_RKSG_RKSH_(%"class.thrust::tuple.232"* sret %agg.tmp19, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %first1, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS_12zip_iteratorIT_EESI_(%"class.thrust::zip_iterator.230"* sret %agg.tmp, %"class.thrust::tuple.232"* byval align 8 %agg.tmp19) call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESI_SI_SI_SI_SI_SI_E4typeERKSF_RKSG_RKSH_(%"class.thrust::tuple.232"* sret %agg.tmp21, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %last1, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS_12zip_iteratorIT_EESI_(%"class.thrust::zip_iterator.230"* sret %agg.tmp20, %"class.thrust::tuple.232"* byval align 8 %agg.tmp21) %3 = bitcast %"struct.thrust::detail::binary_negate"* %agg.tmp23 to i8* %4 = bitcast %"struct.thrust::detail::binary_negate"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6detail24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEC2ES5_(%"struct.thrust::detail::binary_transform_functor.235"* %agg.tmp22) call void @_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RKNS7_21execution_policy_baseIT_EESP_SP_T1_(%"class.thrust::zip_iterator.230"* sret %zipped_result, %"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp20) %call = call dereferenceable(24) %"class.thrust::tuple.232"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.230"* %zipped_result) %5 = bitcast %"class.thrust::tuple.232"* %call to %"struct.thrust::detail::cons.233"* %call24 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.233"* dereferenceable(24) %5) %6 = bitcast %"class.thrust::detail::normal_iterator.199"* %retval to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.199"* %call24 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::zip_iterator.230"* %zipped_result to i8* call void @llvm.lifetime.end(i64 24, i8* %8) #5 %coerce.dive25 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive27, i32 0, i32 0 %9 = load i32*, i32** %coerce.dive28, align 8 ret i32* %9 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RKNS7_21execution_policy_baseIT_EESP_SP_T1_(%"class.thrust::zip_iterator.230"* noalias sret %agg.result, %"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.230"* byval align 8 %first, %"class.thrust::zip_iterator.230"* byval align 8 %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.235", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor.235", align 1 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp to i8* %3 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %4 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp2 to i8* %5 = bitcast %"class.thrust::zip_iterator.230"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 8, i1 false) %6 = bitcast %"struct.thrust::detail::binary_transform_functor.235"* %agg.tmp3 to i8* %7 = bitcast %"struct.thrust::detail::binary_transform_functor.235"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RNS2_16execution_policyIT_EESP_SP_T1_(%"class.thrust::zip_iterator.230"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS_12zip_iteratorIT_EESI_(%"class.thrust::zip_iterator.230"* noalias sret %agg.result, %"class.thrust::tuple.232"* byval align 8 %t) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::tuple.232", align 8 %0 = bitcast %"class.thrust::tuple.232"* %agg.tmp to i8* %1 = bitcast %"class.thrust::tuple.232"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEC2ESG_(%"class.thrust::zip_iterator.230"* %agg.result, %"class.thrust::tuple.232"* byval align 8 %agg.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESI_SI_SI_SI_SI_SI_E4typeERKSF_RKSG_RKSH_(%"class.thrust::tuple.232"* noalias sret %agg.result, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t2) #8 comdat { entry: %t0.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 store %"class.thrust::detail::normal_iterator.56"* %t0, %"class.thrust::detail::normal_iterator.56"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.56"* %t1, %"class.thrust::detail::normal_iterator.56"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t2, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %t1.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeESE_SE_SE_SE_SE_SE_EC2ERKS5_SH_RKSD_(%"class.thrust::tuple.232"* %agg.result, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEC2ES5_(%"struct.thrust::detail::binary_transform_functor.235"* %this) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::detail::binary_negate", align 1 %this.addr = alloca %"struct.thrust::detail::binary_transform_functor.235"*, align 8 store %"struct.thrust::detail::binary_transform_functor.235"* %this, %"struct.thrust::detail::binary_transform_functor.235"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::binary_transform_functor.235"*, %"struct.thrust::detail::binary_transform_functor.235"** %this.addr, align 8 %f2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.235", %"struct.thrust::detail::binary_transform_functor.235"* %this1, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::binary_negate"* %f2 to i8* %1 = bitcast %"struct.thrust::detail::binary_negate"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.233"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.233"*, align 8 store %"struct.thrust::detail::cons.233"* %c, %"struct.thrust::detail::cons.233"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.233"*, %"struct.thrust::detail::cons.233"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIaEEEENS0_4consISH_NSI_ISC_NS_9null_typeEEEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.233"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.199"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::tuple.232"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.230"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 store %"class.thrust::zip_iterator.230"* %this, %"class.thrust::zip_iterator.230"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.230", %"class.thrust::zip_iterator.230"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.232"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RNS2_16execution_policyIT_EESP_SP_T1_(%"class.thrust::zip_iterator.230"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.230"* byval align 8 %first, %"class.thrust::zip_iterator.230"* byval align 8 %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.235", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor.235", align 1 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp to i8* %2 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %3 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp1 to i8* %4 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false) %5 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp2 to i8* %6 = bitcast %"class.thrust::zip_iterator.230"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEEEENS_15iterator_traitsIT_E15difference_typeESK_SK_(%"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp1, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp2) %7 = bitcast %"struct.thrust::detail::binary_transform_functor.235"* %agg.tmp3 to i8* %8 = bitcast %"struct.thrust::detail::binary_transform_functor.235"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_(%"class.thrust::zip_iterator.230"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %0, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp, i64 %call) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_(%"class.thrust::zip_iterator.230"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.230"* byval align 8 %first, i64 %n) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.235", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp1 = alloca %"struct.thrust::detail::binary_transform_functor.235", align 1 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp to i8* %2 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::binary_transform_functor.235"* %agg.tmp1 to i8* %5 = bitcast %"struct.thrust::detail::binary_transform_functor.235"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_EN10workaround13parallel_pathERNSQ_IS4_EESI_lSO_(%"class.thrust::zip_iterator.230"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %0, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEEEENS_15iterator_traitsIT_E15difference_typeESK_SK_(%"class.thrust::zip_iterator.230"* byval align 8 %first, %"class.thrust::zip_iterator.230"* byval align 8 %last) #8 comdat { entry: %agg.tmp = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.230", align 8 %0 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp to i8* %1 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) %2 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp1 to i8* %3 = bitcast %"class.thrust::zip_iterator.230"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESA_NS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EEEEEENS_15iterator_traitsIT_E15difference_typeESM_SM_(%"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIaEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_EN10workaround13parallel_pathERNSQ_IS4_EESI_lSO_(%"class.thrust::zip_iterator.230"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.230"* byval align 8 %first, i64 %n) #0 comdat align 2 { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.235", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.236", align 1 %narrow_n = alloca i32, align 4 %narrow_num_groups = alloca i32, align 4 %narrow_group_size = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.147", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp2 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp3 = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp4 = alloca %"struct.thrust::detail::wrapped_function.236", align 1 %num_groups = alloca i64, align 8 %group_size = alloca i64, align 8 %coerce9 = alloca %"class.thrust::tuple.152", align 8 %ref.tmp11 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp12 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp13 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp14 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp15 = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp16 = alloca %"struct.thrust::detail::wrapped_function.236", align 1 %ref.tmp19 = alloca i64, align 8 %agg.tmp.ensured = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp22 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp25 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp26 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp27 = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp28 = alloca %"struct.thrust::detail::wrapped_function.236", align 1 %ref.tmp29 = alloca i32, align 4 %agg.tmp.ensured32 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp33 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp38 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp39 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp40 = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp41 = alloca %"struct.thrust::detail::wrapped_function.236", align 1 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::detail::wrapped_function.236"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEC2ERKS7_(%"struct.thrust::detail::wrapped_function.236"* %wrapped_f, %"struct.thrust::detail::binary_transform_functor.235"* dereferenceable(1) %f) %1 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.start(i64 4, i8* %1) #5 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %conv = trunc i64 %2 to i32 store i32 %conv, i32* %narrow_n, align 4, !tbaa !11 %3 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %narrow_num_groups, align 4, !tbaa !11 %4 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %narrow_group_size, align 4, !tbaa !11 %call = call { i32*, i32* } @_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %narrow_group_size) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.147", %"class.thrust::tuple.147"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.148"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call, 1 store i32* %9, i32** %8, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, i64 2147483647, i64 2147483647, i64 2147483647) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %11 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp3 to i8* %12 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 24, i32 8, i1 false) %13 = bitcast %"struct.thrust::detail::wrapped_function.236"* %agg.tmp4 to i8* %14 = bitcast %"struct.thrust::detail::wrapped_function.236"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 1, i32 1, i1 false), !tbaa.struct !41 %15 = load i32, i32* %narrow_n, align 4, !tbaa !11 %call5 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp3, i32 %15) %16 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call5, i64* %16, align 4 %call6 = call dereferenceable(16) %"class.thrust::tuple.147"* @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.147"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %17 = load i64, i64* %n.addr, align 8, !tbaa !13 %18 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %19 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %mul = mul i32 %18, %19 %call7 = call zeroext i1 @_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j(i64 %17, i32 %mul) br i1 %call7, label %if.then, label %if.else if.then: ; preds = %entry %20 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.start(i64 8, i8* %20) #5 store i64 0, i64* %num_groups, align 8, !tbaa !13 %21 = bitcast i64* %group_size to i8* call void @llvm.lifetime.start(i64 8, i8* %21) #5 store i64 0, i64* %group_size, align 8, !tbaa !13 %call8 = call { i64*, i64* } @_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %group_size) %coerce.dive10 = getelementptr inbounds %"class.thrust::tuple.152", %"class.thrust::tuple.152"* %coerce9, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.153"* %coerce.dive10 to { i64*, i64* }* %23 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %22, i32 0, i32 0 %24 = extractvalue { i64*, i64* } %call8, 0 store i64* %24, i64** %23, align 8 %25 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %22, i32 0, i32 1 %26 = extractvalue { i64*, i64* } %call8, 1 store i64* %26, i64** %25, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp12, i64 2147483647, i64 2147483647, i64 2147483647) %27 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp14 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %27, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %28 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp15 to i8* %29 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %28, i8* %29, i64 24, i32 8, i1 false) %30 = bitcast %"struct.thrust::detail::wrapped_function.236"* %agg.tmp16 to i8* %31 = bitcast %"struct.thrust::detail::wrapped_function.236"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %31, i64 1, i32 1, i1 false), !tbaa.struct !41 %32 = load i64, i64* %n.addr, align 8, !tbaa !13 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp12, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp15, i64 %32) %33 = bitcast %"struct.thrust::pair.82"* %ref.tmp11 to i64* store i64 %call17, i64* %33, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.152"* @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.152"* %coerce9, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp11) %34 = load i64, i64* %n.addr, align 8, !tbaa !13 %35 = load i64, i64* %group_size, align 8, !tbaa !13 %call20 = call i64 @_ZN6thrust6detail4util9divide_riIllEET_S3_T0_(i64 %34, i64 %35) store i64 %call20, i64* %ref.tmp19, align 8, !tbaa !13 %call21 = call i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %ref.tmp19) store i64 %call21, i64* %num_groups, align 8, !tbaa !13 %36 = load i64, i64* %num_groups, align 8, !tbaa !13 %37 = load i64, i64* %group_size, align 8, !tbaa !13 %38 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %39 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %38 to %"struct.thrust::detail::execution_policy_base.121"* %call23 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %39) %40 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call23 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call24 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %40) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp22, i64 %36, i64 %37, i64 0, %struct.CUstream_st* %call24) %41 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp26 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %41, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %42 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp27 to i8* %43 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %42, i8* %43, i64 24, i32 8, i1 false) %44 = bitcast %"struct.thrust::detail::wrapped_function.236"* %agg.tmp28 to i8* %45 = bitcast %"struct.thrust::detail::wrapped_function.236"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %44, i8* %45, i64 1, i32 1, i1 false), !tbaa.struct !41 %46 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp22, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp27, i64 %46) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured) #5 %47 = bitcast i64* %group_size to i8* call void @llvm.lifetime.end(i64 8, i8* %47) #5 %48 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %48) #5 br label %if.end if.else: ; preds = %entry %49 = load i32, i32* %narrow_n, align 4, !tbaa !11 %50 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %call30 = call i32 @_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_(i32 %49, i32 %50) store i32 %call30, i32* %ref.tmp29, align 4, !tbaa !11 %call31 = call i32 @_ZN6thrust3minIjEET_RKS1_S3_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %ref.tmp29) store i32 %call31, i32* %narrow_num_groups, align 4, !tbaa !11 %51 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %conv34 = zext i32 %51 to i64 %52 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %conv35 = zext i32 %52 to i64 %53 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %54 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %53 to %"struct.thrust::detail::execution_policy_base.121"* %call36 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %54) %55 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call36 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call37 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %55) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp33, i64 %conv34, i64 %conv35, i64 0, %struct.CUstream_st* %call37) %56 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp39 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %56, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %57 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp40 to i8* %58 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %57, i8* %58, i64 24, i32 8, i1 false) %59 = bitcast %"struct.thrust::detail::wrapped_function.236"* %agg.tmp41 to i8* %60 = bitcast %"struct.thrust::detail::wrapped_function.236"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %59, i8* %60, i64 1, i32 1, i1 false), !tbaa.struct !41 %61 = load i32, i32* %narrow_n, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured32, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp33, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp40, i32 %61) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured32) #5 br label %if.end if.end: ; preds = %if.else, %if.then %62 = bitcast %"class.thrust::zip_iterator.230"* %first to %"class.thrust::iterator_facade.231"* %63 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE(%"class.thrust::zip_iterator.230"* sret %agg.result, %"class.thrust::iterator_facade.231"* dereferenceable(1) %62, i64 %63) %64 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %64) #5 %65 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %65) #5 %66 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.end(i64 4, i8* %66) #5 %67 = bitcast %"struct.thrust::detail::wrapped_function.236"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %67) #5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEC2ERKS7_(%"struct.thrust::detail::wrapped_function.236"* %this, %"struct.thrust::detail::binary_transform_functor.235"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %f.addr = alloca %"struct.thrust::detail::binary_transform_functor.235"*, align 8 store %"struct.thrust::detail::wrapped_function.236"* %this, %"struct.thrust::detail::wrapped_function.236"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::binary_transform_functor.235"* %f, %"struct.thrust::detail::binary_transform_functor.235"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.236", %"struct.thrust::detail::wrapped_function.236"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::binary_transform_functor.235"*, %"struct.thrust::detail::binary_transform_functor.235"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::binary_transform_functor.235"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::binary_transform_functor.235"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::zip_iterator.230"* byval align 8 %arg2, i32 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.236", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp3 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* sret %agg.tmp3, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIaEEEEEEvEEjSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %agg.tmp3) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::zip_iterator.230"* byval align 8 %arg2, i64 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.236", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp3 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* sret %agg.tmp3, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIaEEEEEEvEElSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %agg.tmp3) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::zip_iterator.230"* byval align 8 %arg2, i64 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.236", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp3 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* sret %agg.tmp3, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %agg.tmp3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::zip_iterator.230"* byval align 8 %arg2, i32 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.236", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp3 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* sret %agg.tmp3, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %agg.tmp3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE(%"class.thrust::zip_iterator.230"* noalias sret %agg.result, %"class.thrust::iterator_facade.231"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %i.addr = alloca %"class.thrust::iterator_facade.231"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::zip_iterator.230", align 8 store %"class.thrust::iterator_facade.231"* %i, %"class.thrust::iterator_facade.231"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::zip_iterator.230"* %tmp to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.231"*, %"class.thrust::iterator_facade.231"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.231"* %1 to %"class.thrust::zip_iterator.230"* %3 = bitcast %"class.thrust::zip_iterator.230"* %tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.230"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 1, i1 false) %5 = bitcast %"class.thrust::zip_iterator.230"* %tmp to %"class.thrust::iterator_facade.231"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(24) %"class.thrust::zip_iterator.230"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEpLEl(%"class.thrust::iterator_facade.231"* %5, i64 %6) %7 = bitcast %"class.thrust::zip_iterator.230"* %agg.result to i8* %8 = bitcast %"class.thrust::zip_iterator.230"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 24, i32 8, i1 false) %9 = bitcast %"class.thrust::zip_iterator.230"* %tmp to i8* call void @llvm.lifetime.end(i64 24, i8* %9) #5 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIaEEEEEEvEEjSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %a2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %a3, i32* dereferenceable(4) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %a4.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.238", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %a2, %"class.thrust::zip_iterator.230"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %a3, %"struct.thrust::detail::wrapped_function.236"** %a3.addr, align 8, !tbaa !7 store i32* %a4, i32** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %a3.addr, align 8 %3 = load i32*, i32** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIaEEEEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_(%"class.thrust::tuple.238"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.230"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %2, i32* dereferenceable(4) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %agg.result, %"class.thrust::tuple.238"* dereferenceable(40) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIaEEEEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_(%"class.thrust::tuple.238"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.230"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t3.addr = alloca i32*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %t1, %"class.thrust::zip_iterator.230"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %t2, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8 %3 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIaEEEEEEvEEjSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKj(%"class.thrust::tuple.238"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.230"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %2, i32* dereferenceable(4) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEEjSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %this, %"class.thrust::tuple.238"* dereferenceable(40) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"*, align 8 %args.addr = alloca %"class.thrust::tuple.238"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.238"* %args, %"class.thrust::tuple.238"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.238"*, %"class.thrust::tuple.238"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.238"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.238"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 40, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIaEEEEEEvEEjSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKj(%"class.thrust::tuple.238"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.230"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.238"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t3.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.238"* %this, %"class.thrust::tuple.238"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %t1, %"class.thrust::zip_iterator.230"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %t2, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.238"*, %"class.thrust::tuple.238"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.238"* %this1 to %"struct.thrust::detail::cons.239"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IjSK_EEEEEEEC2IKS8_KSM_KSU_KjKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.239"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IjSK_EEEEEEEC2IKS8_KSM_KSU_KjKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.239"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %t2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t3, i32* dereferenceable(4) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.239"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t4.addr = alloca i32*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.239"* %this, %"struct.thrust::detail::cons.239"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %t2, %"class.thrust::zip_iterator.230"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %t3, %"struct.thrust::detail::wrapped_function.236"** %t3.addr, align 8, !tbaa !7 store i32* %t4, i32** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.239"*, %"struct.thrust::detail::cons.239"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.239", %"struct.thrust::detail::cons.239"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.239", %"struct.thrust::detail::cons.239"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t3.addr, align 8 %5 = load i32*, i32** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IjSG_EEEEEC2IKSI_KSQ_KjKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.240"* %tail, %"class.thrust::zip_iterator.230"* dereferenceable(24) %3, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %4, i32* dereferenceable(4) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IjSG_EEEEEC2IKSI_KSQ_KjKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.240"* %this, %"class.thrust::zip_iterator.230"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.240"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t3.addr = alloca i32*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.240"* %this, %"struct.thrust::detail::cons.240"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.230"* %t1, %"class.thrust::zip_iterator.230"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %t2, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.240"*, %"struct.thrust::detail::cons.240"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.240", %"struct.thrust::detail::cons.240"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.230"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.230"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.240", %"struct.thrust::detail::cons.240"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IjNS_9null_typeEEEEC2IKS9_KjKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.241"* %tail, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IjNS_9null_typeEEEEC2IKS9_KjKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.241"* %this, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t1, i32* dereferenceable(4) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.241"*, align 8 %t1.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t2.addr = alloca i32*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.241"* %this, %"struct.thrust::detail::cons.241"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::wrapped_function.236"* %t1, %"struct.thrust::detail::wrapped_function.236"** %t1.addr, align 8, !tbaa !7 store i32* %t2, i32** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.241"*, %"struct.thrust::detail::cons.241"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.241", %"struct.thrust::detail::cons.241"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::detail::wrapped_function.236"* %head to i8* %2 = bitcast %"struct.thrust::detail::wrapped_function.236"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.241", %"struct.thrust::detail::cons.241"* %this1, i32 0, i32 1 %3 = load i32*, i32** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIjNS_9null_typeEEC2IKjEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.159"* %tail, i32* dereferenceable(4) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIaEEEEEEvEElSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %a2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %a3, i64* dereferenceable(8) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %a4.addr = alloca i64*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.250", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %a2, %"class.thrust::zip_iterator.230"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %a3, %"struct.thrust::detail::wrapped_function.236"** %a3.addr, align 8, !tbaa !7 store i64* %a4, i64** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %a3.addr, align 8 %3 = load i64*, i64** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIaEEEEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_(%"class.thrust::tuple.250"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.230"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %2, i64* dereferenceable(8) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %agg.result, %"class.thrust::tuple.250"* dereferenceable(48) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIaEEEEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_(%"class.thrust::tuple.250"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.230"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t3.addr = alloca i64*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %t1, %"class.thrust::zip_iterator.230"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %t2, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8 %3 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIaEEEEEEvEElSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKl(%"class.thrust::tuple.250"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.230"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %2, i64* dereferenceable(8) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIaEEEEEEvEElSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %this, %"class.thrust::tuple.250"* dereferenceable(48) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"*, align 8 %args.addr = alloca %"class.thrust::tuple.250"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.250"* %args, %"class.thrust::tuple.250"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.250"*, %"class.thrust::tuple.250"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.250"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.250"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 48, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIaEEEEEEvEElSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKl(%"class.thrust::tuple.250"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.230"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.250"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t3.addr = alloca i64*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.250"* %this, %"class.thrust::tuple.250"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %t1, %"class.thrust::zip_iterator.230"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %t2, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.250"*, %"class.thrust::tuple.250"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.250"* %this1 to %"struct.thrust::detail::cons.251"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IlSK_EEEEEEEC2IKS8_KSM_KSU_KlKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.251"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IlSK_EEEEEEEC2IKS8_KSM_KSU_KlKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.251"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %t2, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t3, i64* dereferenceable(8) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.251"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t4.addr = alloca i64*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.251"* %this, %"struct.thrust::detail::cons.251"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %t2, %"class.thrust::zip_iterator.230"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %t3, %"struct.thrust::detail::wrapped_function.236"** %t3.addr, align 8, !tbaa !7 store i64* %t4, i64** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.251"*, %"struct.thrust::detail::cons.251"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.251", %"struct.thrust::detail::cons.251"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.251", %"struct.thrust::detail::cons.251"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t3.addr, align 8 %5 = load i64*, i64** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IlSG_EEEEEC2IKSI_KSQ_KlKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.252"* %tail, %"class.thrust::zip_iterator.230"* dereferenceable(24) %3, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %4, i64* dereferenceable(8) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IlSG_EEEEEC2IKSI_KSQ_KlKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.252"* %this, %"class.thrust::zip_iterator.230"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.252"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t3.addr = alloca i64*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.252"* %this, %"struct.thrust::detail::cons.252"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.230"* %t1, %"class.thrust::zip_iterator.230"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.236"* %t2, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.252"*, %"struct.thrust::detail::cons.252"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.252", %"struct.thrust::detail::cons.252"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.230"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.230"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.252", %"struct.thrust::detail::cons.252"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IlNS_9null_typeEEEEC2IKS9_KlKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.253"* %tail, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIaEEEEEEvEENS1_IlNS_9null_typeEEEEC2IKS9_KlKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.253"* %this, %"struct.thrust::detail::wrapped_function.236"* dereferenceable(1) %t1, i64* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.253"*, align 8 %t1.addr = alloca %"struct.thrust::detail::wrapped_function.236"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.253"* %this, %"struct.thrust::detail::cons.253"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::wrapped_function.236"* %t1, %"struct.thrust::detail::wrapped_function.236"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.253"*, %"struct.thrust::detail::cons.253"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.253", %"struct.thrust::detail::cons.253"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::wrapped_function.236"*, %"struct.thrust::detail::wrapped_function.236"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::detail::wrapped_function.236"* %head to i8* %2 = bitcast %"struct.thrust::detail::wrapped_function.236"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.253", %"struct.thrust::detail::cons.253"* %this1, i32 0, i32 1 %3 = load i64*, i64** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIlNS_9null_typeEEC2IKlEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.165"* %tail, i64* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 56, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 56, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 56, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 56, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %task to i8* call void @llvm.lifetime.start(i64 88, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 56, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 88, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %task to i8* call void @llvm.lifetime.end(i64 88, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.254"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.249", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 56, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !199 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 88, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.255"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.249"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 56, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.259"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.256"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 88, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 88, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIaEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIaEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIaEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 88, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIaEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIaEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.258"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 48, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 48, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 48, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %task to i8* call void @llvm.lifetime.start(i64 80, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 48, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 80, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %task to i8* call void @llvm.lifetime.end(i64 80, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.242"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.237", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !201 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 80, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.243"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIaEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.237"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.247"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.244"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 80, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 80, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIaEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIaEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIaEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIaEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 80, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIaEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIaEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.246"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.230"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEpLEl(%"class.thrust::iterator_facade.231"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.231"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.231"* %this, %"class.thrust::iterator_facade.231"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.231"*, %"class.thrust::iterator_facade.231"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::zip_iterator.230"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElE7derivedEv(%"class.thrust::iterator_facade.231"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEEEEvRT_NSK_15difference_typeE(%"class.thrust::zip_iterator.230"* dereferenceable(24) %call, i64 %0) %call2 = call dereferenceable(24) %"class.thrust::zip_iterator.230"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElE7derivedEv(%"class.thrust::iterator_facade.231"* %this1) ret %"class.thrust::zip_iterator.230"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEEEEvRT_NSK_15difference_typeE(%"class.thrust::zip_iterator.230"* dereferenceable(24) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::zip_iterator.230"* %f, %"class.thrust::zip_iterator.230"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %f.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE7advanceEl(%"class.thrust::zip_iterator.230"* %0, i64 %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.230"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElE7derivedEv(%"class.thrust::iterator_facade.231"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.231"*, align 8 store %"class.thrust::iterator_facade.231"* %this, %"class.thrust::iterator_facade.231"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.231"*, %"class.thrust::iterator_facade.231"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.231"* %this1 to %"class.thrust::zip_iterator.230"* ret %"class.thrust::zip_iterator.230"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE7advanceEl(%"class.thrust::zip_iterator.230"* %this, i64 %n) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce = alloca %"class.thrust::detail::advance_iterator", align 8 store %"class.thrust::zip_iterator.230"* %this, %"class.thrust::zip_iterator.230"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.230", %"class.thrust::zip_iterator.230"* %this1, i32 0, i32 0 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail16advance_iteratorIlEC2El(%"class.thrust::detail::advance_iterator"* %agg.tmp, i64 %0) %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %1 = load i64, i64* %coerce.dive, align 8 %call = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EENS0_16advance_iteratorIlEEEET0_RT_SK_(%"class.thrust::tuple.232"* dereferenceable(24) %m_iterator_tuple, i64 %1) %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %coerce, i32 0, i32 0 store i64 %call, i64* %coerce.dive2, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EENS0_16advance_iteratorIlEEEET0_RT_SK_(%"class.thrust::tuple.232"* dereferenceable(24) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"class.thrust::tuple.232"*, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"class.thrust::tuple.232"* %t, %"class.thrust::tuple.232"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.232"*, %"class.thrust::tuple.232"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.232"* %0 to %"struct.thrust::detail::cons.233"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.233"* %1) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrIaEEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.232"*, %"class.thrust::tuple.232"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.232"* %2 to %"struct.thrust::detail::cons.233"* %call1 = call dereferenceable(16) %"struct.thrust::detail::cons.234"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.233"* %3) %4 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp to i8* %5 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %6 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS3_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SL_(%"struct.thrust::detail::cons.234"* dereferenceable(16) %call1, i64 %6) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %7 = load i64, i64* %coerce.dive5, align 8 ret i64 %7 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16advance_iteratorIlEC2El(%"class.thrust::detail::advance_iterator"* %this, i64 %step) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::advance_iterator"*, align 8 %step.addr = alloca i64, align 8 store %"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::advance_iterator"** %this.addr, align 8, !tbaa !1 store i64 %step, i64* %step.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::advance_iterator"*, %"class.thrust::detail::advance_iterator"** %this.addr, align 8 %m_step = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %this1, i32 0, i32 0 %0 = load i64, i64* %step.addr, align 8, !tbaa !13 store i64 %0, i64* %m_step, align 8, !tbaa !204 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrIaEEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::advance_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 store %"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::advance_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.56"* %it, %"class.thrust::detail::normal_iterator.56"** %it.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::advance_iterator"*, %"class.thrust::detail::advance_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.56"* %0 to %"class.thrust::iterator_facade.58"* %m_step = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %this1, i32 0, i32 0 %2 = load i64, i64* %m_step, align 8, !tbaa !204 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEpLEl(%"class.thrust::iterator_facade.58"* %1, i64 %2) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.233"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.233"*, align 8 store %"struct.thrust::detail::cons.233"* %this, %"struct.thrust::detail::cons.233"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.233"*, %"struct.thrust::detail::cons.233"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.233", %"struct.thrust::detail::cons.233"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.56"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS3_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SL_(%"struct.thrust::detail::cons.234"* dereferenceable(16) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"struct.thrust::detail::cons.234"*, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"struct.thrust::detail::cons.234"* %t, %"struct.thrust::detail::cons.234"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.234"*, %"struct.thrust::detail::cons.234"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.234"* %0) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrIaEEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.234"*, %"struct.thrust::detail::cons.234"** %t.addr, align 8 %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.220"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.234"* %1) %2 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %4 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SH_(%"struct.thrust::detail::cons.220"* dereferenceable(8) %call1, i64 %4) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %5 = load i64, i64* %coerce.dive5, align 8 ret i64 %5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"struct.thrust::detail::cons.234"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.233"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.233"*, align 8 store %"struct.thrust::detail::cons.233"* %this, %"struct.thrust::detail::cons.233"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.233"*, %"struct.thrust::detail::cons.233"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.233", %"struct.thrust::detail::cons.233"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.234"* %tail } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.234"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.234"*, align 8 store %"struct.thrust::detail::cons.234"* %this, %"struct.thrust::detail::cons.234"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.234"*, %"struct.thrust::detail::cons.234"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.234", %"struct.thrust::detail::cons.234"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.56"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SH_(%"struct.thrust::detail::cons.220"* dereferenceable(8) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"struct.thrust::detail::cons.220"*, align 8 %agg.tmp = alloca %"struct.thrust::null_type", align 1 %undef.agg.tmp = alloca %"struct.thrust::null_type", align 1 %agg.tmp1 = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"struct.thrust::detail::cons.220"* %t, %"struct.thrust::detail::cons.220"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.220"*, %"struct.thrust::detail::cons.220"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.220"* %0) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.220"*, %"struct.thrust::detail::cons.220"** %t.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.220"* %1) %2 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp1 to i8* %3 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp1, i32 0, i32 0 %4 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_16advance_iteratorIlEEEET_NS_9null_typeES5_(i64 %4) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %5 = load i64, i64* %coerce.dive5, align 8 ret i64 %5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.220"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.234"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.234"*, align 8 store %"struct.thrust::detail::cons.234"* %this, %"struct.thrust::detail::cons.234"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.234"*, %"struct.thrust::detail::cons.234"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.234", %"struct.thrust::detail::cons.234"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.220"* %tail } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::advance_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 store %"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::advance_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.199"* %it, %"class.thrust::detail::normal_iterator.199"** %it.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::advance_iterator"*, %"class.thrust::detail::advance_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.199"* %0 to %"class.thrust::iterator_facade.201"* %m_step = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %this1, i32 0, i32 0 %2 = load i64, i64* %m_step, align 8, !tbaa !204 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEpLEl(%"class.thrust::iterator_facade.201"* %1, i64 %2) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.220"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.220"*, align 8 store %"struct.thrust::detail::cons.220"* %this, %"struct.thrust::detail::cons.220"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.220"*, %"struct.thrust::detail::cons.220"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.220", %"struct.thrust::detail::cons.220"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.199"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_16advance_iteratorIlEEEET_NS_9null_typeES5_(i64 %f.coerce) #9 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %0 = alloca %"struct.thrust::null_type", align 1 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 %1 = bitcast %"class.thrust::detail::advance_iterator"* %retval to i8* %2 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive1 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %3 = load i64, i64* %coerce.dive1, align 8 ret i64 %3 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.220"* %this) #9 comdat align 2 { entry: %retval = alloca %"struct.thrust::null_type", align 1 %this.addr = alloca %"struct.thrust::detail::cons.220"*, align 8 store %"struct.thrust::detail::cons.220"* %this, %"struct.thrust::detail::cons.220"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.220"*, %"struct.thrust::detail::cons.220"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEpLEl(%"class.thrust::iterator_facade.201"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.201"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.201"* %this, %"class.thrust::iterator_facade.201"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.201"*, %"class.thrust::iterator_facade.201"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.201"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEEEvRT_NSC_15difference_typeE(%"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.201"* %this1) ret %"class.thrust::detail::normal_iterator.199"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEEEvRT_NSC_15difference_typeE(%"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.199"* %f, %"class.thrust::detail::normal_iterator.199"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.199"* %0 to %"class.thrust::iterator_adaptor.200"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.200"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.201"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.201"*, align 8 store %"class.thrust::iterator_facade.201"* %this, %"class.thrust::iterator_facade.201"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.201"*, %"class.thrust::iterator_facade.201"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.201"* %this1 to %"class.thrust::detail::normal_iterator.199"* ret %"class.thrust::detail::normal_iterator.199"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.200"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.200"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.200"* %this, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.200"*, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.202"* %m_iterator to %"class.thrust::iterator_facade.204"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::pointer.202"* @_ZN6thrust15iterator_facadeINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElEpLEl(%"class.thrust::iterator_facade.204"* %0, i64 %1) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESA_NS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EEEEEENS_15iterator_traitsIT_E15difference_typeESM_SM_(%"class.thrust::zip_iterator.230"* byval align 8 %first, %"class.thrust::zip_iterator.230"* byval align 8 %last) #8 comdat { entry: %agg.tmp = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.230", align 8 %agg.tmp2 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp to i8* %1 = bitcast %"class.thrust::zip_iterator.230"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) %2 = bitcast %"class.thrust::zip_iterator.230"* %agg.tmp1 to i8* %3 = bitcast %"class.thrust::zip_iterator.230"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEEEENS_15iterator_traitsIT_E15difference_typeESN_SN_NS_27random_access_traversal_tagE(%"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.230"* byval align 8 %agg.tmp1) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEESB_NS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEEEENS_15iterator_traitsIT_E15difference_typeESN_SN_NS_27random_access_traversal_tagE(%"class.thrust::zip_iterator.230"* byval align 8 %first, %"class.thrust::zip_iterator.230"* byval align 8 %last) #8 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = bitcast %"class.thrust::zip_iterator.230"* %last to %"class.thrust::iterator_facade.231"* %2 = bitcast %"class.thrust::zip_iterator.230"* %first to %"class.thrust::iterator_facade.231"* %call = call i64 @_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElSI_SJ_SC_SK_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_(%"class.thrust::iterator_facade.231"* dereferenceable(1) %1, %"class.thrust::iterator_facade.231"* dereferenceable(1) %2) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IaajSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIaEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElSI_SJ_SC_SK_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_(%"class.thrust::iterator_facade.231"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.231"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.231"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.231"*, align 8 store %"class.thrust::iterator_facade.231"* %lhs, %"class.thrust::iterator_facade.231"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.231"* %rhs, %"class.thrust::iterator_facade.231"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.231"*, %"class.thrust::iterator_facade.231"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.231"* %0 to %"class.thrust::zip_iterator.230"* %2 = load %"class.thrust::iterator_facade.231"*, %"class.thrust::iterator_facade.231"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.231"* %2 to %"class.thrust::zip_iterator.230"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENS4_20distance_from_resultIT_T0_E4typeERKSL_RKSM_(%"class.thrust::zip_iterator.230"* dereferenceable(24) %1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENS4_20distance_from_resultIT_T0_E4typeERKSL_RKSM_(%"class.thrust::zip_iterator.230"* dereferenceable(24) %f1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::zip_iterator.230"* %f1, %"class.thrust::zip_iterator.230"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %f2, %"class.thrust::zip_iterator.230"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENT_15difference_typeERKSK_RKT0_NS4_17integral_constantIbLb1EEE(%"class.thrust::zip_iterator.230"* dereferenceable(24) %0, %"class.thrust::zip_iterator.230"* dereferenceable(24) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENT_15difference_typeERKSK_RKT0_NS4_17integral_constantIbLb1EEE(%"class.thrust::zip_iterator.230"* dereferenceable(24) %f1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 store %"class.thrust::zip_iterator.230"* %f1, %"class.thrust::zip_iterator.230"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.230"* %f2, %"class.thrust::zip_iterator.230"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %f1.addr, align 8 %2 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %f2.addr, align 8 %call = call i64 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE11distance_toISG_EElRKNS0_IT_EE(%"class.thrust::zip_iterator.230"* %1, %"class.thrust::zip_iterator.230"* dereferenceable(24) %2) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE11distance_toISG_EElRKNS0_IT_EE(%"class.thrust::zip_iterator.230"* %this, %"class.thrust::zip_iterator.230"* dereferenceable(24) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 store %"class.thrust::zip_iterator.230"* %this, %"class.thrust::zip_iterator.230"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.230"* %other, %"class.thrust::zip_iterator.230"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %this.addr, align 8 %0 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %other.addr, align 8 %call = call dereferenceable(24) %"class.thrust::tuple.232"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.230"* %0) %1 = bitcast %"class.thrust::tuple.232"* %call to %"struct.thrust::detail::cons.233"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.233"* dereferenceable(24) %1) %2 = bitcast %"class.thrust::detail::normal_iterator.56"* %call2 to %"class.thrust::iterator_facade.58"* %call3 = call dereferenceable(24) %"class.thrust::tuple.232"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.230"* %this1) %3 = bitcast %"class.thrust::tuple.232"* %call3 to %"struct.thrust::detail::cons.233"* %call4 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.233"* dereferenceable(24) %3) %4 = bitcast %"class.thrust::detail::normal_iterator.56"* %call4 to %"class.thrust::iterator_facade.58"* %call5 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElS5_aS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.58"* dereferenceable(1) %2, %"class.thrust::iterator_facade.58"* dereferenceable(1) %4) ret i64 %call5 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrIaEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.233"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.233"*, align 8 store %"struct.thrust::detail::cons.233"* %c, %"struct.thrust::detail::cons.233"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.233"*, %"struct.thrust::detail::cons.233"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS0_4consIS7_NSA_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeEEEEEEET_RKNSA_IT0_T1_EE(%"struct.thrust::detail::cons.233"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.56"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrIaEEEES7_NS0_4consIS7_NSA_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeEEEEEEET_RKNSA_IT0_T1_EE(%"struct.thrust::detail::cons.233"* dereferenceable(24) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.233"*, align 8 store %"struct.thrust::detail::cons.233"* %t, %"struct.thrust::detail::cons.233"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.233"*, %"struct.thrust::detail::cons.233"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.233", %"struct.thrust::detail::cons.233"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.56"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEC2ESG_(%"class.thrust::zip_iterator.230"* %this, %"class.thrust::tuple.232"* byval align 8 %iterator_tuple) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.230"*, align 8 store %"class.thrust::zip_iterator.230"* %this, %"class.thrust::zip_iterator.230"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.230"*, %"class.thrust::zip_iterator.230"** %this.addr, align 8 %0 = bitcast %"class.thrust::zip_iterator.230"* %this1 to %"class.thrust::iterator_facade.231"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.230", %"class.thrust::zip_iterator.230"* %this1, i32 0, i32 0 %1 = bitcast %"class.thrust::tuple.232"* %m_iterator_tuple to i8* %2 = bitcast %"class.thrust::tuple.232"* %iterator_tuple to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrIaEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeESE_SE_SE_SE_SE_SE_EC2ERKS5_SH_RKSD_(%"class.thrust::tuple.232"* %this, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t2) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.232"*, align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.232"* %this, %"class.thrust::tuple.232"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.56"* %t0, %"class.thrust::detail::normal_iterator.56"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.56"* %t1, %"class.thrust::detail::normal_iterator.56"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t2, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.232"*, %"class.thrust::tuple.232"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.232"* %this1 to %"struct.thrust::detail::cons.233"* %1 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %t1.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEEC2IKS5_SJ_KSD_KSE_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.233"* %0, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %2, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEEC2IKS5_SJ_KSD_KSE_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.233"* %this, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %t2, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.233"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.233"* %this, %"struct.thrust::detail::cons.233"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.56"* %t1, %"class.thrust::detail::normal_iterator.56"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.56"* %t2, %"class.thrust::detail::normal_iterator.56"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t3, %"class.thrust::detail::normal_iterator.199"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.233"*, %"struct.thrust::detail::cons.233"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.233", %"struct.thrust::detail::cons.233"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.56"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.56"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.233", %"struct.thrust::detail::cons.233"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEC2IKS5_KSD_KSE_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.234"* %tail, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %3, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIaEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEC2IKS5_KSD_KSE_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.234"* %this, %"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.234"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.56"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.234"* %this, %"struct.thrust::detail::cons.234"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.56"* %t1, %"class.thrust::detail::normal_iterator.56"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t2, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.234"*, %"struct.thrust::detail::cons.234"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.234", %"struct.thrust::detail::cons.234"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.56"*, %"class.thrust::detail::normal_iterator.56"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.56"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.56"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.234", %"struct.thrust::detail::cons.234"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_(%"struct.thrust::detail::cons.220"* %tail, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_(%"struct.thrust::detail::cons.220"* %this, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.220"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.220"* %this, %"struct.thrust::detail::cons.220"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.220"*, %"struct.thrust::detail::cons.220"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.220", %"struct.thrust::detail::cons.220"* %this9, i32 0, i32 0 %9 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 %10 = bitcast %"class.thrust::detail::normal_iterator.199"* %head to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.199"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIaEEEENS0_4consISH_NSI_ISC_NS_9null_typeEEEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.233"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.233"*, align 8 store %"struct.thrust::detail::cons.233"* %t, %"struct.thrust::detail::cons.233"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.233"*, %"struct.thrust::detail::cons.233"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.233", %"struct.thrust::detail::cons.233"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIaEEEENS0_4consISC_NS_9null_typeEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.234"* dereferenceable(16) %tail) ret %"class.thrust::detail::normal_iterator.199"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIaEEEENS0_4consISC_NS_9null_typeEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.234"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.234"*, align 8 store %"struct.thrust::detail::cons.234"* %t, %"struct.thrust::detail::cons.234"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.234"*, %"struct.thrust::detail::cons.234"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.234", %"struct.thrust::detail::cons.234"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESC_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.220"* dereferenceable(8) %tail) ret %"class.thrust::detail::normal_iterator.199"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESC_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.220"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.220"*, align 8 store %"struct.thrust::detail::cons.220"* %t, %"struct.thrust::detail::cons.220"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.220"*, %"struct.thrust::detail::cons.220"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.220", %"struct.thrust::detail::cons.220"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.199"* %head } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.58"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.58"*, align 8 store %"class.thrust::iterator_facade.58"* %this, %"class.thrust::iterator_facade.58"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.58"*, %"class.thrust::iterator_facade.58"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.58"* %this1 to %"class.thrust::detail::normal_iterator.56"* ret %"class.thrust::detail::normal_iterator.56"* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElEmIEl(%"class.thrust::iterator_facade.58"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.58"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.58"* %this, %"class.thrust::iterator_facade.58"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.58"*, %"class.thrust::iterator_facade.58"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.58"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %sub = sub nsw i64 0, %0 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIaEEEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.56"* dereferenceable(8) %call, i64 %sub) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.56"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIaEEEEaNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIaEElE7derivedEv(%"class.thrust::iterator_facade.58"* %this1) ret %"class.thrust::detail::normal_iterator.56"* %call2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail13binary_negateINS_8equal_toIaEEEC2ERKS3_(%"struct.thrust::detail::binary_negate"* %this, %"struct.thrust::equal_to"* dereferenceable(1) %pred) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::binary_negate"*, align 8 %pred.addr = alloca %"struct.thrust::equal_to"*, align 8 store %"struct.thrust::detail::binary_negate"* %this, %"struct.thrust::detail::binary_negate"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::equal_to"* %pred, %"struct.thrust::equal_to"** %pred.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::binary_negate"*, %"struct.thrust::detail::binary_negate"** %this.addr, align 8 %pred2 = getelementptr inbounds %"struct.thrust::detail::binary_negate", %"struct.thrust::detail::binary_negate"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::equal_to"*, %"struct.thrust::equal_to"** %pred.addr, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EE(%"class.thrust::detail::temporary_allocator.209"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.209"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::temporary_allocator.209"* %this, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %system, %"struct.thrust::execution_policy.120"** %system.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator.209"*, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator.209"* %this1 to %"class.thrust::detail::tagged_allocator.210"* call void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev(%"class.thrust::detail::tagged_allocator.210"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.209", %"class.thrust::detail::temporary_allocator.209"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %call = invoke dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store %"struct.thrust::system::cuda::detail::tag"* %call, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 %6 = bitcast %"class.thrust::detail::temporary_allocator.209"* %this1 to %"class.thrust::detail::tagged_allocator.210"* call void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev(%"class.thrust::detail::tagged_allocator.210"* %6) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEC2ERKS9_(%"struct.thrust::detail::no_throw_allocator.208"* %this, %"class.thrust::detail::temporary_allocator.209"* dereferenceable(8) %other) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator.209"*, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %this, %"struct.thrust::detail::no_throw_allocator.208"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator.209"* %other, %"class.thrust::detail::temporary_allocator.209"** %other.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator.208"* %this1 to %"class.thrust::detail::temporary_allocator.209"* %1 = load %"class.thrust::detail::temporary_allocator.209"*, %"class.thrust::detail::temporary_allocator.209"** %other.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERKS8_(%"class.thrust::detail::temporary_allocator.209"* %0, %"class.thrust::detail::temporary_allocator.209"* dereferenceable(8) %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEC2EmRKSB_(%"class.thrust::detail::contiguous_storage.207"* %this, i64 %n, %"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.207"*, align 8 %n.addr = alloca i64, align 8 %alloc.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.207"* %this, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store %"struct.thrust::detail::no_throw_allocator.208"* %alloc, %"struct.thrust::detail::no_throw_allocator.208"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.207"*, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %alloc.addr, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEC2ERKSA_(%"struct.thrust::detail::no_throw_allocator.208"* %m_allocator, %"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %0) %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 1 invoke void @_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.141"* %agg.tmp, %"struct.thrust::pair"* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 invoke void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.212"* %m_begin, %"struct.thrust::pair"* %1) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !206 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.207"* %this1, i64 %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont3 ret void lpad: ; preds = %invoke.cont3, %invoke.cont, %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator.210"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.208"*)*)(%"struct.thrust::detail::no_throw_allocator.208"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev(%"class.thrust::detail::tagged_allocator.210"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator.210"*, align 8 store %"class.thrust::detail::tagged_allocator.210"* %this, %"class.thrust::detail::tagged_allocator.210"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator.210"*, %"class.thrust::detail::tagged_allocator.210"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_4pairIaaEENS0_15temporary_arrayIS4_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_(%"class.thrust::detail::temporary_array.206"* dereferenceable(24), i64) #1 comdat { entry: %.addr = alloca %"class.thrust::detail::temporary_array.206"*, align 8 %.addr1 = alloca i64, align 8 store %"class.thrust::detail::temporary_array.206"* %0, %"class.thrust::detail::temporary_array.206"** %.addr, align 8, !tbaa !7 store i64 %1, i64* %.addr1, align 8, !tbaa !13 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.207"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.207"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.207"* %this, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.207"*, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.207"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator.210"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.208"*)*)(%"struct.thrust::detail::no_throw_allocator.208"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator.210"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.208"*)*)(%"struct.thrust::detail::no_throw_allocator.208"* %m_allocator2) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev(%"class.thrust::detail::tagged_allocator.210"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator.210"*, align 8 store %"class.thrust::detail::tagged_allocator.210"* %this, %"class.thrust::detail::tagged_allocator.210"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator.210"*, %"class.thrust::detail::tagged_allocator.210"** %this.addr, align 8 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERKS8_(%"class.thrust::detail::temporary_allocator.209"* %this, %"class.thrust::detail::temporary_allocator.209"* dereferenceable(8) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.209"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator.209"*, align 8 store %"class.thrust::detail::temporary_allocator.209"* %this, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator.209"* %other, %"class.thrust::detail::temporary_allocator.209"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator.209"*, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator.209"* %this1 to %"class.thrust::detail::tagged_allocator.210"* call void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev(%"class.thrust::detail::tagged_allocator.210"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.209", %"class.thrust::detail::temporary_allocator.209"* %this1, i32 0, i32 0 %1 = load %"class.thrust::detail::temporary_allocator.209"*, %"class.thrust::detail::temporary_allocator.209"** %other.addr, align 8 %m_system2 = getelementptr inbounds %"class.thrust::detail::temporary_allocator.209", %"class.thrust::detail::temporary_allocator.209"* %1, i32 0, i32 0 %ref = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %m_system2, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::tag"* %ref, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEC2ERKSA_(%"struct.thrust::detail::no_throw_allocator.208"* %this, %"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %this, %"struct.thrust::detail::no_throw_allocator.208"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::no_throw_allocator.208"* %0, %"struct.thrust::detail::no_throw_allocator.208"** %.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %this.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.208"* %this1 to %"class.thrust::detail::temporary_allocator.209"* %2 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %.addr, align 8 %3 = bitcast %"struct.thrust::detail::no_throw_allocator.208"* %2 to %"class.thrust::detail::temporary_allocator.209"* call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEC2ERKS8_(%"class.thrust::detail::temporary_allocator.209"* %1, %"class.thrust::detail::temporary_allocator.209"* dereferenceable(8) %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.212"* %this, %"struct.thrust::pair"* %p.coerce) unnamed_addr #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.141", align 8 %this.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"class.thrust::detail::normal_iterator.212"* %this, %"class.thrust::detail::normal_iterator.212"** %this.addr, align 8, !tbaa !1 %this2 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.212"* %this2 to %"class.thrust::iterator_adaptor.213"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_(%"class.thrust::iterator_adaptor.213"* %0, %"class.thrust::pointer.141"* dereferenceable(8) %p) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.207"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.207"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.212", align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %ref.tmp6 = alloca %"class.thrust::detail::normal_iterator.212", align 8 %agg.tmp7 = alloca %"class.thrust::pointer.141", align 8 store %"class.thrust::detail::contiguous_storage.207"* %this, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.207"*, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_m(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %m_allocator, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.212"* %ref.tmp, %"struct.thrust::pair"* %2) %3 = bitcast %"class.thrust::detail::normal_iterator.212"* %m_begin to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.212"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 2 store i64 %5, i64* %m_size, align 8, !tbaa !206 br label %if.end if.else: ; preds = %entry %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.141"* %agg.tmp7, %"struct.thrust::pair"* null) %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive8, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.212"* %ref.tmp6, %"struct.thrust::pair"* %6) %7 = bitcast %"class.thrust::detail::normal_iterator.212"* %m_begin5 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.212"* %ref.tmp6 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %m_size10 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 2 store i64 0, i64* %m_size10, align 8, !tbaa !206 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_(%"class.thrust::iterator_adaptor.213"* %this, %"class.thrust::pointer.141"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.213"*, align 8 %iter.addr = alloca %"class.thrust::pointer.141"*, align 8 store %"class.thrust::iterator_adaptor.213"* %this, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.141"* %iter, %"class.thrust::pointer.141"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.213"*, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.213"* %this1 to %"class.thrust::iterator_facade.214"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %this1, i32 0, i32 0 %1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %iter.addr, align 8 %2 = bitcast %"class.thrust::pointer.141"* %m_iterator to i8* %3 = bitcast %"class.thrust::pointer.141"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_m(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %a, i64 %n) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %a, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %a, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %a, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.208"* %0 to %"class.thrust::detail::temporary_allocator.209"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator.209"* %1, i64 %2) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %3 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator.209"* %this, i64 %cnt) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator.209"*, align 8 %cnt.addr = alloca i64, align 8 %result = alloca %"struct.thrust::pair.261", align 8 %ref.tmp = alloca %"struct.thrust::pair.262", align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %ref.tmp4 = alloca %"class.std::basic_string", align 8 %ref.tmp5 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 store %"class.thrust::detail::temporary_allocator.209"* %this, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::temporary_allocator.209"*, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8 %0 = bitcast %"struct.thrust::pair.261"* %result to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.209"* %this1) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %2 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call2 = call { %"struct.thrust::pair"*, i64 } @_ZN6thrust20get_temporary_bufferINS_4pairIaaEENS_6system4cuda6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.262"* %ref.tmp to { %"struct.thrust::pair"*, i64 }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { %"struct.thrust::pair"*, i64 } %call2, 0 store %"struct.thrust::pair"* %5, %"struct.thrust::pair"** %4, align 8 %6 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { %"struct.thrust::pair"*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 call void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.261"* %result, %"struct.thrust::pair.262"* dereferenceable(16) %ref.tmp) %second = getelementptr inbounds %"struct.thrust::pair.261", %"struct.thrust::pair.261"* %result, i32 0, i32 1 %8 = load i64, i64* %second, align 8, !tbaa !210 %9 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %cmp = icmp ult i64 %8, %9 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %first = getelementptr inbounds %"struct.thrust::pair.261", %"struct.thrust::pair.261"* %result, i32 0, i32 0 %10 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %11 = bitcast %"class.thrust::pointer.141"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 %13 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm(%"class.thrust::detail::temporary_allocator.209"* %this1, %"struct.thrust::pair"* %13, i64 %12) %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %14 = bitcast i8* %exception to %"class.thrust::system::detail::bad_alloc"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp5) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp4, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.44, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp5) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then invoke void @_ZN6thrust6system6detail9bad_allocC2ERKSs(%"class.thrust::system::detail::bad_alloc"* %14, %"class.std::basic_string"* dereferenceable(8) %ref.tmp4) to label %invoke.cont7 unwind label %lpad6 invoke.cont7: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system6detail9bad_allocE to i8*), i8* bitcast (void (%"class.thrust::system::detail::bad_alloc"*)* @_ZN6thrust6system6detail9bad_allocD2Ev to i8*)) #15 to label %unreachable unwind label %lpad6 lpad: ; preds = %if.then %15 = landingpad { i8*, i32 } cleanup %16 = extractvalue { i8*, i32 } %15, 0 store i8* %16, i8** %exn.slot, align 8 %17 = extractvalue { i8*, i32 } %15, 1 store i32 %17, i32* %ehselector.slot, align 4 br label %ehcleanup lpad6: ; preds = %invoke.cont7, %invoke.cont %18 = landingpad { i8*, i32 } cleanup %19 = extractvalue { i8*, i32 } %18, 0 store i8* %19, i8** %exn.slot, align 8 %20 = extractvalue { i8*, i32 } %18, 1 store i32 %20, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp4) #5 br label %ehcleanup ehcleanup: ; preds = %lpad6, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp5) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup %21 = bitcast %"struct.thrust::pair.261"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %21) #5 br label %eh.resume if.end: ; preds = %entry %first9 = getelementptr inbounds %"struct.thrust::pair.261", %"struct.thrust::pair.261"* %result, i32 0, i32 0 %22 = bitcast %"class.thrust::pointer.141"* %retval to i8* %23 = bitcast %"class.thrust::pointer.141"* %first9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 8, i32 8, i1 false) %24 = bitcast %"struct.thrust::pair.261"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %24) #5 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive11, i32 0, i32 0 %25 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive12, align 8 ret %"struct.thrust::pair"* %25 eh.resume: ; preds = %cleanup.done %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val13 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val13 unreachable: ; preds = %invoke.cont7 unreachable } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i64 } @_ZN6thrust20get_temporary_bufferINS_4pairIaaEENS_6system4cuda6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.262", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::pair.262", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call { %"struct.thrust::pair"*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIaaEENS0_4cuda6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.262"* %agg.tmp to { %"struct.thrust::pair"*, i64 }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { %"struct.thrust::pair"*, i64 } %call2, 0 store %"struct.thrust::pair"* %5, %"struct.thrust::pair"** %4, align 8 %6 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { %"struct.thrust::pair"*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 %8 = bitcast %"struct.thrust::pair.262"* %agg.tmp to { %"struct.thrust::pair"*, i64 }* %9 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %8, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %9, align 8 %11 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %8, i32 0, i32 1 %12 = load i64, i64* %11, align 8 %call3 = call { %"struct.thrust::pair"*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIaaEENS_6system4cuda6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_(%"struct.thrust::pair"* %10, i64 %12) %13 = bitcast %"struct.thrust::pair.262"* %retval to { %"struct.thrust::pair"*, i64 }* %14 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %13, i32 0, i32 0 %15 = extractvalue { %"struct.thrust::pair"*, i64 } %call3, 0 store %"struct.thrust::pair"* %15, %"struct.thrust::pair"** %14, align 8 %16 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %13, i32 0, i32 1 %17 = extractvalue { %"struct.thrust::pair"*, i64 } %call3, 1 store i64 %17, i64* %16, align 8 %18 = bitcast %"struct.thrust::pair.262"* %retval to { %"struct.thrust::pair"*, i64 }* %19 = load { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %18, align 8 ret { %"struct.thrust::pair"*, i64 } %19 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.209"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.209"*, align 8 store %"class.thrust::detail::temporary_allocator.209"* %this, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_allocator.209"*, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8 %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.209", %"class.thrust::detail::temporary_allocator.209"* %this1, i32 0, i32 0 %ref = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret %"struct.thrust::system::cuda::detail::tag"* %ref } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.261"* %this, %"struct.thrust::pair.262"* dereferenceable(16) %p) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.261"*, align 8 %p.addr = alloca %"struct.thrust::pair.262"*, align 8 store %"struct.thrust::pair.261"* %this, %"struct.thrust::pair.261"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.262"* %p, %"struct.thrust::pair.262"** %p.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.261"*, %"struct.thrust::pair.261"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.261", %"struct.thrust::pair.261"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.262"*, %"struct.thrust::pair.262"** %p.addr, align 8 %first2 = getelementptr inbounds %"struct.thrust::pair.262", %"struct.thrust::pair.262"* %0, i32 0, i32 0 %1 = bitcast %"class.thrust::pointer.141"* %first to i8* %2 = bitcast %"class.thrust::pointer.141"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.261", %"struct.thrust::pair.261"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::pair.262"*, %"struct.thrust::pair.262"** %p.addr, align 8 %second3 = getelementptr inbounds %"struct.thrust::pair.262", %"struct.thrust::pair.262"* %3, i32 0, i32 1 %4 = load i64, i64* %second3, align 8, !tbaa !213 store i64 %4, i64* %second, align 8, !tbaa !210 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm(%"class.thrust::detail::temporary_allocator.209"* %this, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.141", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator.209"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"class.thrust::detail::temporary_allocator.209"* %this, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::temporary_allocator.209"*, %"class.thrust::detail::temporary_allocator.209"** %this.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.209"* %this2) %0 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0, %"struct.thrust::pair"* %3) ret void } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIaaEENS_6system4cuda6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_(%"struct.thrust::pair"* %p.coerce0, i64 %p.coerce1) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.262", align 8 %p = alloca %"struct.thrust::pair.262", align 8 %ptr = alloca %"class.thrust::pointer.141", align 8 %0 = bitcast %"struct.thrust::pair.262"* %p to { %"struct.thrust::pair"*, i64 }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %0, i32 0, i32 1 store i64 %p.coerce1, i64* %2, align 8 %3 = bitcast %"class.thrust::pointer.141"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %first = getelementptr inbounds %"struct.thrust::pair.262", %"struct.thrust::pair.262"* %p, i32 0, i32 0 %call = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.141"* dereferenceable(8) %first) call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.141"* %ptr, %"struct.thrust::pair"* %call) %second = getelementptr inbounds %"struct.thrust::pair.262", %"struct.thrust::pair.262"* %p, i32 0, i32 1 call void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl(%"struct.thrust::pair.262"* %retval, %"class.thrust::pointer.141"* dereferenceable(8) %ptr, i64* dereferenceable(8) %second) %4 = bitcast %"class.thrust::pointer.141"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %4) #5 %5 = bitcast %"struct.thrust::pair.262"* %retval to { %"struct.thrust::pair"*, i64 }* %6 = load { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %5, align 8 ret { %"struct.thrust::pair"*, i64 } %6 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIaaEENS0_4cuda6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.262", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %ptr = alloca %"class.thrust::pointer.141", align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.141"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust6mallocINS_4pairIaaEENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive1, align 8 %call2 = call %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.141"* %ptr) %tobool = icmp ne %"struct.thrust::pair"* %call2, null br i1 %tobool, label %if.end, label %if.then if.then: ; preds = %entry store i64 0, i64* %n.addr, align 8, !tbaa !13 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %5 = bitcast %"class.thrust::pointer.141"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 %call5 = call { %"struct.thrust::pair"*, i64 } @_ZN6thrust9make_pairINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_(%"struct.thrust::pair"* %7, i64 %6) %8 = bitcast %"struct.thrust::pair.262"* %retval to { %"struct.thrust::pair"*, i64 }* %9 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %8, i32 0, i32 0 %10 = extractvalue { %"struct.thrust::pair"*, i64 } %call5, 0 store %"struct.thrust::pair"* %10, %"struct.thrust::pair"** %9, align 8 %11 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %8, i32 0, i32 1 %12 = extractvalue { %"struct.thrust::pair"*, i64 } %call5, 1 store i64 %12, i64* %11, align 8 %13 = bitcast %"class.thrust::pointer.141"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.262"* %retval to { %"struct.thrust::pair"*, i64 }* %15 = load { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %14, align 8 ret { %"struct.thrust::pair"*, i64 } %15 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl(%"struct.thrust::pair.262"* %this, %"class.thrust::pointer.141"* dereferenceable(8) %x, i64* dereferenceable(8) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.262"*, align 8 %x.addr = alloca %"class.thrust::pointer.141"*, align 8 %y.addr = alloca i64*, align 8 store %"struct.thrust::pair.262"* %this, %"struct.thrust::pair.262"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.141"* %x, %"class.thrust::pointer.141"** %x.addr, align 8, !tbaa !7 store i64* %y, i64** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.262"*, %"struct.thrust::pair.262"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.262", %"struct.thrust::pair.262"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %x.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %first to i8* %2 = bitcast %"class.thrust::pointer.141"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.262", %"struct.thrust::pair.262"* %this1, i32 0, i32 1 %3 = load i64*, i64** %y.addr, align 8 %4 = load i64, i64* %3, align 8, !tbaa !13 store i64 %4, i64* %second, align 8, !tbaa !213 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair"*, i64 } @_ZN6thrust9make_pairINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_(%"struct.thrust::pair"* %x.coerce, i64 %y) #8 comdat { entry: %retval = alloca %"struct.thrust::pair.262", align 8 %x = alloca %"class.thrust::pointer.141", align 8 %y.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %x, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %x.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store i64 %y, i64* %y.addr, align 8, !tbaa !13 call void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl(%"struct.thrust::pair.262"* %retval, %"class.thrust::pointer.141"* dereferenceable(8) %x, i64* dereferenceable(8) %y.addr) %0 = bitcast %"struct.thrust::pair.262"* %retval to { %"struct.thrust::pair"*, i64 }* %1 = load { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %0, align 8 ret { %"struct.thrust::pair"*, i64 } %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair"* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.141", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::execution_policy.120"* %2 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.141"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, %"struct.thrust::pair"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, %"struct.thrust::pair"* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.141", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.120"* %0 to %"struct.thrust::detail::execution_policy_base.121"* %2 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.141"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, %"struct.thrust::pair"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair"* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::pointer.141", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %ptr.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.141"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"struct.thrust::pair"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1), %"struct.thrust::pair"* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::pointer.141", align 8 %.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %ptr.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %0, %"struct.thrust::system::cuda::detail::execution_policy.119"** %.addr, align 8, !tbaa !7 %call = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.141"* dereferenceable(8) %ptr) %1 = bitcast %"struct.thrust::pair"* %call to i8* %call2 = call i32 @cudaFree(i8* %1) call void @_ZN6thrust6system4cuda6detail14throw_on_errorE9cudaErrorPKc(i32 %call2, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.24, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.207"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.207"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.212", align 8 %agg.tmp6 = alloca %"class.thrust::pointer.141", align 8 store %"class.thrust::detail::contiguous_storage.207"* %this, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.207"*, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.207"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.212"* %m_begin to %"class.thrust::iterator_adaptor.213"* %call2 = call dereferenceable(8) %"class.thrust::pointer.141"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.213"* %0) %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.207"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %m_allocator, %"struct.thrust::pair"* %3, i64 %call3) %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.141"* %agg.tmp6, %"struct.thrust::pair"* null) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive7, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive8, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.212"* %ref.tmp, %"struct.thrust::pair"* %4) %5 = bitcast %"class.thrust::detail::normal_iterator.212"* %m_begin5 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.212"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !206 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.207"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.207"*, align 8 store %"class.thrust::detail::contiguous_storage.207"* %this, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.207"*, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !206 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #8 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.141", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %a, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %0, %"struct.thrust::pair"* %4, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.141"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.213"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.213"*, align 8 store %"class.thrust::iterator_adaptor.213"* %this, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.213"*, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %this1, i32 0, i32 0 ret %"class.thrust::pointer.141"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.141", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %a, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm(%"struct.thrust::detail::no_throw_allocator.208"* %0, %"struct.thrust::pair"* %4, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm(%"struct.thrust::detail::no_throw_allocator.208"* %this, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %p = alloca %"class.thrust::pointer.141", align 8 %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %this, %"struct.thrust::detail::no_throw_allocator.208"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator.208"* %this2 to %"class.thrust::detail::temporary_allocator.209"* %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 invoke void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm(%"class.thrust::detail::temporary_allocator.209"* %0, %"struct.thrust::pair"* %4, i64 %3) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry br label %try.cont lpad: ; preds = %entry %5 = landingpad { i8*, i32 } catch i8* null %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %8 = call i8* @__cxa_begin_catch(i8* %exn) #5 call void @__cxa_end_catch() br label %try.cont try.cont: ; preds = %catch, %invoke.cont ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic15replace_copy_ifINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS_6negateIjEESB_EET2_RNS_16execution_policyIT_EET0_SR_T1_SM_T3_RKT4_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, i32* %stencil.coerce, %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"* dereferenceable(2) %new_value) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.212", align 8 %first = alloca %"class.thrust::detail::normal_iterator.66", align 8 %last = alloca %"class.thrust::detail::normal_iterator.66", align 8 %stencil = alloca %"class.thrust::detail::normal_iterator.199", align 8 %result = alloca %"class.thrust::detail::normal_iterator.212", align 8 %pred = alloca %"struct.thrust::negate", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %new_value.addr = alloca %"struct.thrust::pair"*, align 8 %op = alloca %"struct.thrust::system::detail::generic::detail::new_value_if", align 1 %agg.tmp = alloca %"struct.thrust::negate", align 1 %agg.tmp18 = alloca %"struct.thrust::pair", align 1 %agg.tmp19 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp20 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp22 = alloca %"class.thrust::detail::normal_iterator.212", align 8 %agg.tmp23 = alloca %"struct.thrust::system::detail::generic::detail::new_value_if", align 1 %tmp = alloca i24, align 4 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %stencil, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive12, i32 0, i32 0 store i32* %stencil.coerce, i32** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %result, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive16, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive17, align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %new_value, %"struct.thrust::pair"** %new_value.addr, align 8, !tbaa !7 %0 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %op to i8* call void @llvm.lifetime.start(i64 3, i8* %0) #5 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %new_value.addr, align 8 %2 = bitcast %"struct.thrust::pair"* %agg.tmp18 to i8* %3 = bitcast %"struct.thrust::pair"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 2, i32 1, i1 false), !tbaa.struct !23 %4 = bitcast %"struct.thrust::pair"* %agg.tmp18 to i16* %5 = load i16, i16* %4, align 1 call void @_ZN6thrust6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEES8_EC2ES6_S8_(%"struct.thrust::system::detail::generic::detail::new_value_if"* %op, i16 %5) %6 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %7 = bitcast %"struct.thrust::execution_policy.120"* %6 to %"struct.thrust::detail::execution_policy_base.121"* %8 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp19 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.66"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp20 to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.66"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = bitcast %"class.thrust::detail::normal_iterator.199"* %agg.tmp21 to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.199"* %stencil to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.212"* %agg.tmp22 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.212"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %agg.tmp23 to i8* %17 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 3, i32 1, i1 false), !tbaa.struct !215 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp19, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive27, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp20, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive31, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive32, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive33, align 8 %coerce.dive34 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp21, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive35, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive36, i32 0, i32 0 %20 = load i32*, i32** %coerce.dive37, align 8 %coerce.dive38 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %agg.tmp22, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive40, i32 0, i32 0 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive41, align 8 %22 = bitcast i24* %tmp to i8* %23 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %agg.tmp23 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 3, i32 1, i1 false) %24 = load i24, i24* %tmp, align 4 %call = call %"struct.thrust::pair"* @_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS1_6detail7generic6detail12new_value_ifINS_6negateIjEES9_S9_EEEET2_RKNS5_21execution_policy_baseIT_EET0_SV_T1_SP_T3_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %7, %"struct.thrust::pair"* %18, %"struct.thrust::pair"* %19, i32* %20, %"struct.thrust::pair"* %21, i24 %24) %coerce.dive42 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive42, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive44, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive45, align 8 %25 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %op to i8* call void @llvm.lifetime.end(i64 3, i8* %25) #5 %coerce.dive46 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive48, i32 0, i32 0 %26 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive49, align 8 ret %"struct.thrust::pair"* %26 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEES8_EC2ES6_S8_(%"struct.thrust::system::detail::generic::detail::new_value_if"* %this, i16 %nv.coerce) unnamed_addr #1 comdat align 2 { entry: %p = alloca %"struct.thrust::negate", align 1 %nv = alloca %"struct.thrust::pair", align 1 %this.addr = alloca %"struct.thrust::system::detail::generic::detail::new_value_if"*, align 8 %0 = bitcast %"struct.thrust::pair"* %nv to i16* store i16 %nv.coerce, i16* %0, align 1 store %"struct.thrust::system::detail::generic::detail::new_value_if"* %this, %"struct.thrust::system::detail::generic::detail::new_value_if"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::detail::generic::detail::new_value_if"*, %"struct.thrust::system::detail::generic::detail::new_value_if"** %this.addr, align 8 %pred = getelementptr inbounds %"struct.thrust::system::detail::generic::detail::new_value_if", %"struct.thrust::system::detail::generic::detail::new_value_if"* %this1, i32 0, i32 0 %new_value = getelementptr inbounds %"struct.thrust::system::detail::generic::detail::new_value_if", %"struct.thrust::system::detail::generic::detail::new_value_if"* %this1, i32 0, i32 1 %1 = bitcast %"struct.thrust::pair"* %new_value to i8* %2 = bitcast %"struct.thrust::pair"* %nv to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 2, i32 1, i1 false), !tbaa.struct !23 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS1_6detail7generic6detail12new_value_ifINS_6negateIjEES9_S9_EEEET2_RKNS5_21execution_policy_baseIT_EET0_SV_T1_SP_T3_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, i32* %first2.coerce, %"struct.thrust::pair"* %result.coerce, i24 %op.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.212", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %result = alloca %"class.thrust::detail::normal_iterator.212", align 8 %op = alloca %"struct.thrust::system::detail::generic::detail::new_value_if", align 1 %tmp = alloca i24, align 4 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp19 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %agg.tmp20 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.212", align 8 %agg.tmp22 = alloca %"struct.thrust::system::detail::generic::detail::new_value_if", align 1 %tmp41 = alloca i24, align 4 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive12, i32 0, i32 0 store i32* %first2.coerce, i32** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %result, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive16, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive17, align 8 store i24 %op.coerce, i24* %tmp, align 4 %0 = bitcast i24* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %2 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2) %call18 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call18 to %"struct.thrust::execution_policy.120"* %4 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.66"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.66"* %agg.tmp19 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.66"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::detail::normal_iterator.199"* %agg.tmp20 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.199"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"class.thrust::detail::normal_iterator.212"* %agg.tmp21 to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.212"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %agg.tmp22 to i8* %13 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 3, i32 1, i1 false), !tbaa.struct !215 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive26, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %agg.tmp19, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive31, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp20, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive35, i32 0, i32 0 %16 = load i32*, i32** %coerce.dive36, align 8 %coerce.dive37 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %agg.tmp21, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive37, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive39, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive40, align 8 %18 = bitcast i24* %tmp41 to i8* %19 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %agg.tmp22 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %18, i8* %19, i64 3, i32 1, i1 false) %20 = load i24, i24* %tmp41, align 4 %call42 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS2_6detail12new_value_ifINS_6negateIjEESB_SB_EEEET2_RNS_16execution_policyIT_EET0_SU_T1_SP_T3_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %3, %"struct.thrust::pair"* %14, %"struct.thrust::pair"* %15, i32* %16, %"struct.thrust::pair"* %17, i24 %20) %coerce.dive43 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive45, i32 0, i32 0 store %"struct.thrust::pair"* %call42, %"struct.thrust::pair"** %coerce.dive46, align 8 %coerce.dive47 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive49, i32 0, i32 0 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive50, align 8 ret %"struct.thrust::pair"* %21 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS2_6detail12new_value_ifINS_6negateIjEESB_SB_EEEET2_RNS_16execution_policyIT_EET0_SU_T1_SP_T3_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, i32* %first2.coerce, %"struct.thrust::pair"* %result.coerce, i24 %op.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.212", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.66", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %result = alloca %"class.thrust::detail::normal_iterator.212", align 8 %op = alloca %"struct.thrust::system::detail::generic::detail::new_value_if", align 1 %tmp = alloca i24, align 4 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %zipped_result = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp19 = alloca %"class.thrust::tuple.265", align 8 %agg.tmp20 = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp21 = alloca %"class.thrust::tuple.265", align 8 %agg.tmp22 = alloca %"struct.thrust::detail::binary_transform_functor.269", align 1 %agg.tmp23 = alloca %"struct.thrust::system::detail::generic::detail::new_value_if", align 1 %tmp24 = alloca i24, align 4 %tmp26 = alloca i24, align 4 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive12, i32 0, i32 0 store i32* %first2.coerce, i32** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %result, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive16, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive17, align 8 store i24 %op.coerce, i24* %tmp, align 4 %0 = bitcast i24* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %2 = bitcast %"class.thrust::zip_iterator.263"* %zipped_result to i8* call void @llvm.lifetime.start(i64 24, i8* %2) #5 %3 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %4 = bitcast %"struct.thrust::execution_policy.120"* %3 to %"struct.thrust::detail::execution_policy_base.121"* call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESM_SM_SM_SM_SM_SM_E4typeERKSJ_RKSK_RKSL_(%"class.thrust::tuple.265"* sret %agg.tmp19, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %first1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_(%"class.thrust::zip_iterator.263"* sret %agg.tmp, %"class.thrust::tuple.265"* byval align 8 %agg.tmp19) call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESM_SM_SM_SM_SM_SM_E4typeERKSJ_RKSK_RKSL_(%"class.thrust::tuple.265"* sret %agg.tmp21, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %last1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_(%"class.thrust::zip_iterator.263"* sret %agg.tmp20, %"class.thrust::tuple.265"* byval align 8 %agg.tmp21) %5 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %agg.tmp23 to i8* %6 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 3, i32 1, i1 false), !tbaa.struct !215 %7 = bitcast i24* %tmp24 to i8* %8 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %agg.tmp23 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 3, i32 1, i1 false) %9 = load i24, i24* %tmp24, align 4 call void @_ZN6thrust6detail24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESA_EEEC2ESB_(%"struct.thrust::detail::binary_transform_functor.269"* %agg.tmp22, i24 %9) %coerce.dive25 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %agg.tmp22, i32 0, i32 0 %10 = bitcast i24* %tmp26 to i8* %11 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive25 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 3, i32 1, i1 false) %12 = load i24, i24* %tmp26, align 4 call void @_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESW_SW_T1_(%"class.thrust::zip_iterator.263"* sret %zipped_result, %"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %4, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp20, i24 %12) %call = call dereferenceable(24) %"class.thrust::tuple.265"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.263"* %zipped_result) %13 = bitcast %"class.thrust::tuple.265"* %call to %"struct.thrust::detail::cons.266"* %call27 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_(%"struct.thrust::detail::cons.266"* dereferenceable(24) %13) %14 = bitcast %"class.thrust::detail::normal_iterator.212"* %retval to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.212"* %call27 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::zip_iterator.263"* %zipped_result to i8* call void @llvm.lifetime.end(i64 24, i8* %16) #5 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive30, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive31, align 8 ret %"struct.thrust::pair"* %17 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESW_SW_T1_(%"class.thrust::zip_iterator.263"* noalias sret %agg.result, %"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.263"* byval align 8 %first, %"class.thrust::zip_iterator.263"* byval align 8 %last, i24 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.269", align 1 %tmp = alloca i24, align 4 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor.269", align 1 %tmp5 = alloca i24, align 4 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %f, i32 0, i32 0 store i24 %f.coerce, i24* %tmp, align 4 %0 = bitcast i24* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %2 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %4 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp to i8* %5 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 8, i1 false) %6 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp2 to i8* %7 = bitcast %"class.thrust::zip_iterator.263"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 24, i32 8, i1 false) %8 = bitcast %"struct.thrust::detail::binary_transform_functor.269"* %agg.tmp3 to i8* %9 = bitcast %"struct.thrust::detail::binary_transform_functor.269"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 3, i32 1, i1 false), !tbaa.struct !215 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %agg.tmp3, i32 0, i32 0 %10 = bitcast i24* %tmp5 to i8* %11 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 3, i32 1, i1 false) %12 = load i24, i24* %tmp5, align 4 call void @_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_SW_T1_(%"class.thrust::zip_iterator.263"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %3, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp2, i24 %12) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_(%"class.thrust::zip_iterator.263"* noalias sret %agg.result, %"class.thrust::tuple.265"* byval align 8 %t) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::tuple.265", align 8 %0 = bitcast %"class.thrust::tuple.265"* %agg.tmp to i8* %1 = bitcast %"class.thrust::tuple.265"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_(%"class.thrust::zip_iterator.263"* %agg.result, %"class.thrust::tuple.265"* byval align 8 %agg.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESM_SM_SM_SM_SM_SM_E4typeERKSJ_RKSK_RKSL_(%"class.thrust::tuple.265"* noalias sret %agg.result, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %t2) #8 comdat { entry: %t0.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 store %"class.thrust::detail::normal_iterator.66"* %t0, %"class.thrust::detail::normal_iterator.66"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.212"* %t2, %"class.thrust::detail::normal_iterator.212"** %t2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %t2.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EC2ERKS7_RKSF_RKSH_(%"class.thrust::tuple.265"* %agg.result, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESA_EEEC2ESB_(%"struct.thrust::detail::binary_transform_functor.269"* %this, i24 %f.coerce) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::detail::generic::detail::new_value_if", align 1 %tmp = alloca i24, align 4 %this.addr = alloca %"struct.thrust::detail::binary_transform_functor.269"*, align 8 store i24 %f.coerce, i24* %tmp, align 4 %0 = bitcast i24* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store %"struct.thrust::detail::binary_transform_functor.269"* %this, %"struct.thrust::detail::binary_transform_functor.269"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::binary_transform_functor.269"*, %"struct.thrust::detail::binary_transform_functor.269"** %this.addr, align 8 %f2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %this1, i32 0, i32 0 %2 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %f2 to i8* %3 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 3, i32 1, i1 false), !tbaa.struct !215 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_(%"struct.thrust::detail::cons.266"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.266"*, align 8 store %"struct.thrust::detail::cons.266"* %c, %"struct.thrust::detail::cons.266"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.266"*, %"struct.thrust::detail::cons.266"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS_10device_ptrIS7_EEEENS0_4consINS4_INS5_IjSB_SC_SC_EEEENSK_ISE_NS_9null_typeEEEEEEET_RKNSK_IT0_T1_EE(%"struct.thrust::detail::cons.266"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.212"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::tuple.265"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.263"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 store %"class.thrust::zip_iterator.263"* %this, %"class.thrust::zip_iterator.263"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.263", %"class.thrust::zip_iterator.263"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.265"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_SW_T1_(%"class.thrust::zip_iterator.263"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.263"* byval align 8 %first, %"class.thrust::zip_iterator.263"* byval align 8 %last, i24 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.269", align 1 %tmp = alloca i24, align 4 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor.269", align 1 %tmp5 = alloca i24, align 4 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %f, i32 0, i32 0 store i24 %f.coerce, i24* %tmp, align 4 %0 = bitcast i24* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 %2 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false) %5 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp1 to i8* %6 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 8, i1 false) %7 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::zip_iterator.263"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEEEENS_15iterator_traitsIT_E15difference_typeESO_SO_(%"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp1, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp2) %9 = bitcast %"struct.thrust::detail::binary_transform_functor.269"* %agg.tmp3 to i8* %10 = bitcast %"struct.thrust::detail::binary_transform_functor.269"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 3, i32 1, i1 false), !tbaa.struct !215 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %agg.tmp3, i32 0, i32 0 %11 = bitcast i24* %tmp5 to i8* %12 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 3, i32 1, i1 false) %13 = load i24, i24* %tmp5, align 4 call void @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_(%"class.thrust::zip_iterator.263"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %2, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp, i64 %call, i24 %13) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_(%"class.thrust::zip_iterator.263"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.263"* byval align 8 %first, i64 %n, i24 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.269", align 1 %tmp = alloca i24, align 4 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp1 = alloca %"struct.thrust::detail::binary_transform_functor.269", align 1 %tmp3 = alloca i24, align 4 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %f, i32 0, i32 0 store i24 %f.coerce, i24* %tmp, align 4 %0 = bitcast i24* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %2 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %6 = bitcast %"struct.thrust::detail::binary_transform_functor.269"* %agg.tmp1 to i8* %7 = bitcast %"struct.thrust::detail::binary_transform_functor.269"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 3, i32 1, i1 false), !tbaa.struct !215 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %agg.tmp1, i32 0, i32 0 %8 = bitcast i24* %tmp3 to i8* %9 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 3, i32 1, i1 false) %10 = load i24, i24* %tmp3, align 4 call void @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_EN10workaround13parallel_pathERNSX_IS4_EESM_lSV_(%"class.thrust::zip_iterator.263"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %2, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp, i64 %5, i24 %10) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEEEENS_15iterator_traitsIT_E15difference_typeESO_SO_(%"class.thrust::zip_iterator.263"* byval align 8 %first, %"class.thrust::zip_iterator.263"* byval align 8 %last) #8 comdat { entry: %agg.tmp = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.263", align 8 %0 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp to i8* %1 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) %2 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp1 to i8* %3 = bitcast %"class.thrust::zip_iterator.263"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESH_EEEENS7_INSD_ISA_SG_SH_SH_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEEEENS_15iterator_traitsIT_E15difference_typeESQ_SQ_(%"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_EN10workaround13parallel_pathERNSX_IS4_EESM_lSV_(%"class.thrust::zip_iterator.263"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.263"* byval align 8 %first, i64 %n, i24 %f.coerce) #0 comdat align 2 { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.269", align 1 %tmp = alloca i24, align 4 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.270", align 1 %narrow_n = alloca i32, align 4 %narrow_num_groups = alloca i32, align 4 %narrow_group_size = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.147", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp7 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp8 = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp9 = alloca %"struct.thrust::detail::wrapped_function.270", align 1 %tmp12 = alloca i24, align 4 %num_groups = alloca i64, align 8 %group_size = alloca i64, align 8 %coerce19 = alloca %"class.thrust::tuple.152", align 8 %ref.tmp21 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp22 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp23 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp24 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp25 = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp26 = alloca %"struct.thrust::detail::wrapped_function.270", align 1 %tmp29 = alloca i24, align 4 %ref.tmp32 = alloca i64, align 8 %agg.tmp.ensured = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp35 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp38 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp39 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp40 = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp41 = alloca %"struct.thrust::detail::wrapped_function.270", align 1 %tmp44 = alloca i24, align 4 %ref.tmp45 = alloca i32, align 4 %agg.tmp.ensured48 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp49 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp54 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp55 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp56 = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp57 = alloca %"struct.thrust::detail::wrapped_function.270", align 1 %tmp60 = alloca i24, align 4 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %f, i32 0, i32 0 store i24 %f.coerce, i24* %tmp, align 4 %0 = bitcast i24* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %2 = bitcast %"struct.thrust::detail::wrapped_function.270"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 3, i8* %2) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESB_EEEEvEC2ERKSD_(%"struct.thrust::detail::wrapped_function.270"* %wrapped_f, %"struct.thrust::detail::binary_transform_functor.269"* dereferenceable(3) %f) %3 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %conv = trunc i64 %4 to i32 store i32 %conv, i32* %narrow_n, align 4, !tbaa !11 %5 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 store i32 0, i32* %narrow_num_groups, align 4, !tbaa !11 %6 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %6) #5 store i32 0, i32* %narrow_group_size, align 4, !tbaa !11 %call = call { i32*, i32* } @_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %narrow_group_size) %coerce.dive5 = getelementptr inbounds %"class.thrust::tuple.147", %"class.thrust::tuple.147"* %coerce, i32 0, i32 0 %7 = bitcast %"struct.thrust::detail::cons.148"* %coerce.dive5 to { i32*, i32* }* %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %7, i32 0, i32 0 %9 = extractvalue { i32*, i32* } %call, 0 store i32* %9, i32** %8, align 8 %10 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %7, i32 0, i32 1 %11 = extractvalue { i32*, i32* } %call, 1 store i32* %11, i32** %10, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, i64 2147483647, i64 2147483647, i64 2147483647) %12 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %13 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp8 to i8* %14 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 24, i32 8, i1 false) %15 = bitcast %"struct.thrust::detail::wrapped_function.270"* %agg.tmp9 to i8* %16 = bitcast %"struct.thrust::detail::wrapped_function.270"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %16, i64 3, i32 1, i1 false), !tbaa.struct !215 %17 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive10 = getelementptr inbounds %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::wrapped_function.270"* %agg.tmp9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %coerce.dive10, i32 0, i32 0 %18 = bitcast i24* %tmp12 to i8* %19 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive11 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %18, i8* %19, i64 3, i32 1, i1 false) %20 = load i24, i24* %tmp12, align 4 %call13 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp8, i24 %20, i32 %17) %21 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call13, i64* %21, align 4 %call14 = call dereferenceable(16) %"class.thrust::tuple.147"* @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.147"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %22 = load i64, i64* %n.addr, align 8, !tbaa !13 %23 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %24 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %mul = mul i32 %23, %24 %call15 = call zeroext i1 @_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j(i64 %22, i32 %mul) br i1 %call15, label %if.then, label %if.else if.then: ; preds = %entry %25 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.start(i64 8, i8* %25) #5 store i64 0, i64* %num_groups, align 8, !tbaa !13 %26 = bitcast i64* %group_size to i8* call void @llvm.lifetime.start(i64 8, i8* %26) #5 store i64 0, i64* %group_size, align 8, !tbaa !13 %call18 = call { i64*, i64* } @_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %group_size) %coerce.dive20 = getelementptr inbounds %"class.thrust::tuple.152", %"class.thrust::tuple.152"* %coerce19, i32 0, i32 0 %27 = bitcast %"struct.thrust::detail::cons.153"* %coerce.dive20 to { i64*, i64* }* %28 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %27, i32 0, i32 0 %29 = extractvalue { i64*, i64* } %call18, 0 store i64* %29, i64** %28, align 8 %30 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %27, i32 0, i32 1 %31 = extractvalue { i64*, i64* } %call18, 1 store i64* %31, i64** %30, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp22, i64 2147483647, i64 2147483647, i64 2147483647) %32 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp24 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %32, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %33 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp25 to i8* %34 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 24, i32 8, i1 false) %35 = bitcast %"struct.thrust::detail::wrapped_function.270"* %agg.tmp26 to i8* %36 = bitcast %"struct.thrust::detail::wrapped_function.270"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %35, i8* %36, i64 3, i32 1, i1 false), !tbaa.struct !215 %37 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive27 = getelementptr inbounds %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::wrapped_function.270"* %agg.tmp26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %coerce.dive27, i32 0, i32 0 %38 = bitcast i24* %tmp29 to i8* %39 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive28 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %38, i8* %39, i64 3, i32 1, i1 false) %40 = load i24, i24* %tmp29, align 4 %call30 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp22, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp25, i24 %40, i64 %37) %41 = bitcast %"struct.thrust::pair.82"* %ref.tmp21 to i64* store i64 %call30, i64* %41, align 4 %call31 = call dereferenceable(16) %"class.thrust::tuple.152"* @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.152"* %coerce19, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp21) %42 = load i64, i64* %n.addr, align 8, !tbaa !13 %43 = load i64, i64* %group_size, align 8, !tbaa !13 %call33 = call i64 @_ZN6thrust6detail4util9divide_riIllEET_S3_T0_(i64 %42, i64 %43) store i64 %call33, i64* %ref.tmp32, align 8, !tbaa !13 %call34 = call i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %ref.tmp32) store i64 %call34, i64* %num_groups, align 8, !tbaa !13 %44 = load i64, i64* %num_groups, align 8, !tbaa !13 %45 = load i64, i64* %group_size, align 8, !tbaa !13 %46 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %47 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %46 to %"struct.thrust::detail::execution_policy_base.121"* %call36 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %47) %48 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call36 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call37 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %48) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp35, i64 %44, i64 %45, i64 0, %struct.CUstream_st* %call37) %49 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp39 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %49, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %50 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp40 to i8* %51 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %50, i8* %51, i64 24, i32 8, i1 false) %52 = bitcast %"struct.thrust::detail::wrapped_function.270"* %agg.tmp41 to i8* %53 = bitcast %"struct.thrust::detail::wrapped_function.270"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %52, i8* %53, i64 3, i32 1, i1 false), !tbaa.struct !215 %54 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive42 = getelementptr inbounds %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::wrapped_function.270"* %agg.tmp41, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %coerce.dive42, i32 0, i32 0 %55 = bitcast i24* %tmp44 to i8* %56 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive43 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %55, i8* %56, i64 3, i32 1, i1 false) %57 = load i24, i24* %tmp44, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp35, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp40, i24 %57, i64 %54) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured) #5 %58 = bitcast i64* %group_size to i8* call void @llvm.lifetime.end(i64 8, i8* %58) #5 %59 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %59) #5 br label %if.end if.else: ; preds = %entry %60 = load i32, i32* %narrow_n, align 4, !tbaa !11 %61 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %call46 = call i32 @_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_(i32 %60, i32 %61) store i32 %call46, i32* %ref.tmp45, align 4, !tbaa !11 %call47 = call i32 @_ZN6thrust3minIjEET_RKS1_S3_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %ref.tmp45) store i32 %call47, i32* %narrow_num_groups, align 4, !tbaa !11 %62 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %conv50 = zext i32 %62 to i64 %63 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %conv51 = zext i32 %63 to i64 %64 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %65 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %64 to %"struct.thrust::detail::execution_policy_base.121"* %call52 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %65) %66 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call52 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call53 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %66) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp49, i64 %conv50, i64 %conv51, i64 0, %struct.CUstream_st* %call53) %67 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp55 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %67, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %68 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp56 to i8* %69 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %68, i8* %69, i64 24, i32 8, i1 false) %70 = bitcast %"struct.thrust::detail::wrapped_function.270"* %agg.tmp57 to i8* %71 = bitcast %"struct.thrust::detail::wrapped_function.270"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %70, i8* %71, i64 3, i32 1, i1 false), !tbaa.struct !215 %72 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive58 = getelementptr inbounds %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::wrapped_function.270"* %agg.tmp57, i32 0, i32 0 %coerce.dive59 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %coerce.dive58, i32 0, i32 0 %73 = bitcast i24* %tmp60 to i8* %74 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive59 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %73, i8* %74, i64 3, i32 1, i1 false) %75 = load i24, i24* %tmp60, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured48, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp49, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp56, i24 %75, i32 %72) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured48) #5 br label %if.end if.end: ; preds = %if.else, %if.then %76 = bitcast %"class.thrust::zip_iterator.263"* %first to %"class.thrust::iterator_facade.264"* %77 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEET_RKNS_15iterator_facadeISW_T0_T1_T2_T3_T4_EENSW_15difference_typeE(%"class.thrust::zip_iterator.263"* sret %agg.result, %"class.thrust::iterator_facade.264"* dereferenceable(1) %76, i64 %77) %78 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %78) #5 %79 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %79) #5 %80 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.end(i64 4, i8* %80) #5 %81 = bitcast %"struct.thrust::detail::wrapped_function.270"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 3, i8* %81) #5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESB_EEEEvEC2ERKSD_(%"struct.thrust::detail::wrapped_function.270"* %this, %"struct.thrust::detail::binary_transform_functor.269"* dereferenceable(3) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %f.addr = alloca %"struct.thrust::detail::binary_transform_functor.269"*, align 8 store %"struct.thrust::detail::wrapped_function.270"* %this, %"struct.thrust::detail::wrapped_function.270"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::binary_transform_functor.269"* %f, %"struct.thrust::detail::binary_transform_functor.269"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::wrapped_function.270"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::binary_transform_functor.269"*, %"struct.thrust::detail::binary_transform_functor.269"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::binary_transform_functor.269"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::binary_transform_functor.269"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 3, i32 1, i1 false), !tbaa.struct !215 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::zip_iterator.263"* byval align 8 %arg2, i24 %arg3.coerce, i32 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.270", align 1 %tmp3 = alloca i24, align 4 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::wrapped_function.270"* %arg3, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %coerce.dive, i32 0, i32 0 store i24 %arg3.coerce, i24* %tmp3, align 4 %0 = bitcast i24* %tmp3 to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %arg3, i32* dereferenceable(4) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEEjSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %agg.tmp4) %4 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %4, align 4 %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* %6 = load i64, i64* %5, align 4 ret i64 %6 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::zip_iterator.263"* byval align 8 %arg2, i24 %arg3.coerce, i64 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.270", align 1 %tmp3 = alloca i24, align 4 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::wrapped_function.270"* %arg3, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %coerce.dive, i32 0, i32 0 store i24 %arg3.coerce, i24* %tmp3, align 4 %0 = bitcast i24* %tmp3 to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %arg3, i64* dereferenceable(8) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEElSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %agg.tmp4) %4 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %4, align 4 %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* %6 = load i64, i64* %5, align 4 ret i64 %6 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::zip_iterator.263"* byval align 8 %arg2, i24 %arg3.coerce, i64 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.270", align 1 %tmp3 = alloca i24, align 4 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::wrapped_function.270"* %arg3, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %coerce.dive, i32 0, i32 0 store i24 %arg3.coerce, i24* %tmp3, align 4 %0 = bitcast i24* %tmp3 to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %arg3, i64* dereferenceable(8) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %agg.tmp4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::zip_iterator.263"* byval align 8 %arg2, i24 %arg3.coerce, i32 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.270", align 1 %tmp3 = alloca i24, align 4 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::wrapped_function.270", %"struct.thrust::detail::wrapped_function.270"* %arg3, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.269", %"struct.thrust::detail::binary_transform_functor.269"* %coerce.dive, i32 0, i32 0 store i24 %arg3.coerce, i24* %tmp3, align 4 %0 = bitcast i24* %tmp3 to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 3, i32 1, i1 false) store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %arg3, i32* dereferenceable(4) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %agg.tmp4) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEET_RKNS_15iterator_facadeISW_T0_T1_T2_T3_T4_EENSW_15difference_typeE(%"class.thrust::zip_iterator.263"* noalias sret %agg.result, %"class.thrust::iterator_facade.264"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %i.addr = alloca %"class.thrust::iterator_facade.264"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::zip_iterator.263", align 8 store %"class.thrust::iterator_facade.264"* %i, %"class.thrust::iterator_facade.264"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::zip_iterator.263"* %tmp to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.264"*, %"class.thrust::iterator_facade.264"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.264"* %1 to %"class.thrust::zip_iterator.263"* %3 = bitcast %"class.thrust::zip_iterator.263"* %tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.263"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 1, i1 false) %5 = bitcast %"class.thrust::zip_iterator.263"* %tmp to %"class.thrust::iterator_facade.264"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(24) %"class.thrust::zip_iterator.263"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEpLEl(%"class.thrust::iterator_facade.264"* %5, i64 %6) %7 = bitcast %"class.thrust::zip_iterator.263"* %agg.result to i8* %8 = bitcast %"class.thrust::zip_iterator.263"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 24, i32 8, i1 false) %9 = bitcast %"class.thrust::zip_iterator.263"* %tmp to i8* call void @llvm.lifetime.end(i64 24, i8* %9) #5 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEEjSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %a2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %a3, i32* dereferenceable(4) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %a4.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.272", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %a2, %"class.thrust::zip_iterator.263"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %a3, %"struct.thrust::detail::wrapped_function.270"** %a3.addr, align 8, !tbaa !7 store i32* %a4, i32** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %a3.addr, align 8 %3 = load i32*, i32** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_(%"class.thrust::tuple.272"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.263"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %2, i32* dereferenceable(4) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %agg.result, %"class.thrust::tuple.272"* dereferenceable(40) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_(%"class.thrust::tuple.272"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.263"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t2, i32* dereferenceable(4) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t3.addr = alloca i32*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %t1, %"class.thrust::zip_iterator.263"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %t2, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8 %3 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEEjSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKj(%"class.thrust::tuple.272"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.263"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %2, i32* dereferenceable(4) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %this, %"class.thrust::tuple.272"* dereferenceable(40) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"*, align 8 %args.addr = alloca %"class.thrust::tuple.272"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.272"* %args, %"class.thrust::tuple.272"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.272"*, %"class.thrust::tuple.272"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.272"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.272"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 40, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEEjSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKj(%"class.thrust::tuple.272"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.263"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t2, i32* dereferenceable(4) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.272"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t3.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.272"* %this, %"class.thrust::tuple.272"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %t1, %"class.thrust::zip_iterator.263"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %t2, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.272"*, %"class.thrust::tuple.272"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.272"* %this1 to %"struct.thrust::detail::cons.273"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IjSO_EEEEEEEC2IKS8_KSQ_KS11_KjKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.273"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IjSO_EEEEEEEC2IKS8_KSQ_KS11_KjKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.273"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %t2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t3, i32* dereferenceable(4) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.273"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t4.addr = alloca i32*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.273"* %this, %"struct.thrust::detail::cons.273"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %t2, %"class.thrust::zip_iterator.263"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %t3, %"struct.thrust::detail::wrapped_function.270"** %t3.addr, align 8, !tbaa !7 store i32* %t4, i32** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.273"*, %"struct.thrust::detail::cons.273"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.273", %"struct.thrust::detail::cons.273"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.273", %"struct.thrust::detail::cons.273"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t3.addr, align 8 %5 = load i32*, i32** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IjSK_EEEEEC2IKSM_KSX_KjKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.274"* %tail, %"class.thrust::zip_iterator.263"* dereferenceable(24) %3, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %4, i32* dereferenceable(4) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IjSK_EEEEEC2IKSM_KSX_KjKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.274"* %this, %"class.thrust::zip_iterator.263"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t2, i32* dereferenceable(4) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.274"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t3.addr = alloca i32*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.274"* %this, %"struct.thrust::detail::cons.274"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.263"* %t1, %"class.thrust::zip_iterator.263"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %t2, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.274"*, %"struct.thrust::detail::cons.274"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.274", %"struct.thrust::detail::cons.274"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.263"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.263"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.274", %"struct.thrust::detail::cons.274"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESC_EEEEvEENS1_IjNS_9null_typeEEEEC2IKSF_KjKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.275"* %tail, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESC_EEEEvEENS1_IjNS_9null_typeEEEEC2IKSF_KjKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.275"* %this, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t1, i32* dereferenceable(4) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.275"*, align 8 %t1.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t2.addr = alloca i32*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.275"* %this, %"struct.thrust::detail::cons.275"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::wrapped_function.270"* %t1, %"struct.thrust::detail::wrapped_function.270"** %t1.addr, align 8, !tbaa !7 store i32* %t2, i32** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.275"*, %"struct.thrust::detail::cons.275"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.275", %"struct.thrust::detail::cons.275"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::detail::wrapped_function.270"* %head to i8* %2 = bitcast %"struct.thrust::detail::wrapped_function.270"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 3, i32 1, i1 false), !tbaa.struct !215 %tail = getelementptr inbounds %"struct.thrust::detail::cons.275", %"struct.thrust::detail::cons.275"* %this1, i32 0, i32 1 %3 = load i32*, i32** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIjNS_9null_typeEEC2IKjEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.159"* %tail, i32* dereferenceable(4) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEElSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %a2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %a3, i64* dereferenceable(8) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %a4.addr = alloca i64*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.284", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %a2, %"class.thrust::zip_iterator.263"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %a3, %"struct.thrust::detail::wrapped_function.270"** %a3.addr, align 8, !tbaa !7 store i64* %a4, i64** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %a3.addr, align 8 %3 = load i64*, i64** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_(%"class.thrust::tuple.284"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.263"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %2, i64* dereferenceable(8) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %agg.result, %"class.thrust::tuple.284"* dereferenceable(48) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_(%"class.thrust::tuple.284"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.263"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t2, i64* dereferenceable(8) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t3.addr = alloca i64*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %t1, %"class.thrust::zip_iterator.263"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %t2, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8 %3 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEElSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKl(%"class.thrust::tuple.284"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.263"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %2, i64* dereferenceable(8) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %this, %"class.thrust::tuple.284"* dereferenceable(48) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"*, align 8 %args.addr = alloca %"class.thrust::tuple.284"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.284"* %args, %"class.thrust::tuple.284"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.284"*, %"class.thrust::tuple.284"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.284"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.284"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 48, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEElSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKl(%"class.thrust::tuple.284"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.263"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t2, i64* dereferenceable(8) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.284"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t3.addr = alloca i64*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.284"* %this, %"class.thrust::tuple.284"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %t1, %"class.thrust::zip_iterator.263"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %t2, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.284"*, %"class.thrust::tuple.284"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.284"* %this1 to %"struct.thrust::detail::cons.285"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IlSO_EEEEEEEC2IKS8_KSQ_KS11_KlKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.285"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IlSO_EEEEEEEC2IKS8_KSQ_KS11_KlKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.285"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %t2, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t3, i64* dereferenceable(8) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.285"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t4.addr = alloca i64*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.285"* %this, %"struct.thrust::detail::cons.285"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %t2, %"class.thrust::zip_iterator.263"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %t3, %"struct.thrust::detail::wrapped_function.270"** %t3.addr, align 8, !tbaa !7 store i64* %t4, i64** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.285"*, %"struct.thrust::detail::cons.285"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.285", %"struct.thrust::detail::cons.285"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.285", %"struct.thrust::detail::cons.285"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t3.addr, align 8 %5 = load i64*, i64** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IlSK_EEEEEC2IKSM_KSX_KlKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.286"* %tail, %"class.thrust::zip_iterator.263"* dereferenceable(24) %3, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %4, i64* dereferenceable(8) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IlSK_EEEEEC2IKSM_KSX_KlKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.286"* %this, %"class.thrust::zip_iterator.263"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t2, i64* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.286"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t3.addr = alloca i64*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.286"* %this, %"struct.thrust::detail::cons.286"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.263"* %t1, %"class.thrust::zip_iterator.263"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.270"* %t2, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.286"*, %"struct.thrust::detail::cons.286"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.286", %"struct.thrust::detail::cons.286"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.263"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.263"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.286", %"struct.thrust::detail::cons.286"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESC_EEEEvEENS1_IlNS_9null_typeEEEEC2IKSF_KlKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.287"* %tail, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIaaEESC_EEEEvEENS1_IlNS_9null_typeEEEEC2IKSF_KlKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.287"* %this, %"struct.thrust::detail::wrapped_function.270"* dereferenceable(3) %t1, i64* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.287"*, align 8 %t1.addr = alloca %"struct.thrust::detail::wrapped_function.270"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.287"* %this, %"struct.thrust::detail::cons.287"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::wrapped_function.270"* %t1, %"struct.thrust::detail::wrapped_function.270"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.287"*, %"struct.thrust::detail::cons.287"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.287", %"struct.thrust::detail::cons.287"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::wrapped_function.270"*, %"struct.thrust::detail::wrapped_function.270"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::detail::wrapped_function.270"* %head to i8* %2 = bitcast %"struct.thrust::detail::wrapped_function.270"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 3, i32 1, i1 false), !tbaa.struct !215 %tail = getelementptr inbounds %"struct.thrust::detail::cons.287", %"struct.thrust::detail::cons.287"* %this1, i32 0, i32 1 %3 = load i64*, i64** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIlNS_9null_typeEEC2IKlEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.165"* %tail, i64* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 56, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 56, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 56, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 56, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %task to i8* call void @llvm.lifetime.start(i64 88, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 56, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 88, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %task to i8* call void @llvm.lifetime.end(i64 88, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.288"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.283", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 56, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !216 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 88, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.289"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.283"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 56, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.293"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.290"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 88, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 88, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrINS0_4pairIaaEEEEEENSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS0_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS0_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrINS0_4pairIaaEEEEEENSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS0_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS0_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrINS0_4pairIaaEEEEEENSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS0_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS0_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 88, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrINS0_4pairIaaEEEEEENSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS0_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS0_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.292"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 48, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 48, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 48, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchESB_S1C_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %task to i8* call void @llvm.lifetime.start(i64 80, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 48, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 80, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %task to i8* call void @llvm.lifetime.end(i64 80, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.276"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.271", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !218 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1C_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 80, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.277"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2ESB_S1C_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.271"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.281"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.278"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 80, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE6launchEjjmP11CUstream_stS1E_EN10workaround14supported_pathEjjmS1H_S1E_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 80, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrINS0_4pairIaaEEEEEENSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS0_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS0_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrINS0_4pairIaaEEEEEENSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS0_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS0_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrINS0_4pairIaaEEEEEENSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS0_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS0_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 80, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrINS0_4pairIaaEEEEEENSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS0_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS0_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.280"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.263"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEpLEl(%"class.thrust::iterator_facade.264"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.264"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.264"* %this, %"class.thrust::iterator_facade.264"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.264"*, %"class.thrust::iterator_facade.264"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::zip_iterator.263"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElE7derivedEv(%"class.thrust::iterator_facade.264"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEEEEvRT_NSO_15difference_typeE(%"class.thrust::zip_iterator.263"* dereferenceable(24) %call, i64 %0) %call2 = call dereferenceable(24) %"class.thrust::zip_iterator.263"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElE7derivedEv(%"class.thrust::iterator_facade.264"* %this1) ret %"class.thrust::zip_iterator.263"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEEEEvRT_NSO_15difference_typeE(%"class.thrust::zip_iterator.263"* dereferenceable(24) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::zip_iterator.263"* %f, %"class.thrust::zip_iterator.263"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %f.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE7advanceEl(%"class.thrust::zip_iterator.263"* %0, i64 %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.263"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElE7derivedEv(%"class.thrust::iterator_facade.264"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.264"*, align 8 store %"class.thrust::iterator_facade.264"* %this, %"class.thrust::iterator_facade.264"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.264"*, %"class.thrust::iterator_facade.264"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.264"* %this1 to %"class.thrust::zip_iterator.263"* ret %"class.thrust::zip_iterator.263"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE7advanceEl(%"class.thrust::zip_iterator.263"* %this, i64 %n) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce = alloca %"class.thrust::detail::advance_iterator", align 8 store %"class.thrust::zip_iterator.263"* %this, %"class.thrust::zip_iterator.263"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.263", %"class.thrust::zip_iterator.263"* %this1, i32 0, i32 0 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail16advance_iteratorIlEC2El(%"class.thrust::detail::advance_iterator"* %agg.tmp, i64 %0) %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %1 = load i64, i64* %coerce.dive, align 8 %call = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EENS0_16advance_iteratorIlEEEET0_RT_SO_(%"class.thrust::tuple.265"* dereferenceable(24) %m_iterator_tuple, i64 %1) %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %coerce, i32 0, i32 0 store i64 %call, i64* %coerce.dive2, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EENS0_16advance_iteratorIlEEEET0_RT_SO_(%"class.thrust::tuple.265"* dereferenceable(24) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"class.thrust::tuple.265"*, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"class.thrust::tuple.265"* %t, %"class.thrust::tuple.265"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.265"*, %"class.thrust::tuple.265"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.265"* %0 to %"struct.thrust::detail::cons.266"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.266"* %1) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.265"*, %"class.thrust::tuple.265"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.265"* %2 to %"struct.thrust::detail::cons.266"* %call1 = call dereferenceable(16) %"struct.thrust::detail::cons.267"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.266"* %3) %4 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp to i8* %5 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %6 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS3_INS4_INS5_INS_4pairIaaEES9_SA_SA_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SM_(%"struct.thrust::detail::cons.267"* dereferenceable(16) %call1, i64 %6) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %7 = load i64, i64* %coerce.dive5, align 8 ret i64 %7 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::advance_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 store %"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::advance_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.66"* %it, %"class.thrust::detail::normal_iterator.66"** %it.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::advance_iterator"*, %"class.thrust::detail::advance_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.66"* %0 to %"class.thrust::iterator_facade.68"* %m_step = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %this1, i32 0, i32 0 %2 = load i64, i64* %m_step, align 8, !tbaa !204 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl(%"class.thrust::iterator_facade.68"* %1, i64 %2) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.266"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.266"*, align 8 store %"struct.thrust::detail::cons.266"* %this, %"struct.thrust::detail::cons.266"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.266"*, %"struct.thrust::detail::cons.266"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.266", %"struct.thrust::detail::cons.266"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.66"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS3_INS4_INS5_INS_4pairIaaEES9_SA_SA_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SM_(%"struct.thrust::detail::cons.267"* dereferenceable(16) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"struct.thrust::detail::cons.267"*, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"struct.thrust::detail::cons.267"* %t, %"struct.thrust::detail::cons.267"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.267"*, %"struct.thrust::detail::cons.267"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIaaEES7_S8_S8_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.267"* %0) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.267"*, %"struct.thrust::detail::cons.267"** %t.addr, align 8 %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.268"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIaaEES7_S8_S8_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.267"* %1) %2 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %4 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SJ_(%"struct.thrust::detail::cons.268"* dereferenceable(8) %call1, i64 %4) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %5 = load i64, i64* %coerce.dive5, align 8 ret i64 %5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"struct.thrust::detail::cons.267"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.266"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.266"*, align 8 store %"struct.thrust::detail::cons.266"* %this, %"struct.thrust::detail::cons.266"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.266"*, %"struct.thrust::detail::cons.266"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.266", %"struct.thrust::detail::cons.266"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.267"* %tail } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIaaEES7_S8_S8_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.267"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.267"*, align 8 store %"struct.thrust::detail::cons.267"* %this, %"struct.thrust::detail::cons.267"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.267"*, %"struct.thrust::detail::cons.267"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.267", %"struct.thrust::detail::cons.267"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.199"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SJ_(%"struct.thrust::detail::cons.268"* dereferenceable(8) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"struct.thrust::detail::cons.268"*, align 8 %agg.tmp = alloca %"struct.thrust::null_type", align 1 %undef.agg.tmp = alloca %"struct.thrust::null_type", align 1 %agg.tmp1 = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"struct.thrust::detail::cons.268"* %t, %"struct.thrust::detail::cons.268"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.268"*, %"struct.thrust::detail::cons.268"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.268"* %0) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.268"*, %"struct.thrust::detail::cons.268"** %t.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.268"* %1) %2 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp1 to i8* %3 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp1, i32 0, i32 0 %4 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_16advance_iteratorIlEEEET_NS_9null_typeES5_(i64 %4) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %5 = load i64, i64* %coerce.dive5, align 8 ret i64 %5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.268"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIaaEES7_S8_S8_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.267"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.267"*, align 8 store %"struct.thrust::detail::cons.267"* %this, %"struct.thrust::detail::cons.267"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.267"*, %"struct.thrust::detail::cons.267"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.267", %"struct.thrust::detail::cons.267"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.268"* %tail } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::advance_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 store %"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::advance_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.212"* %it, %"class.thrust::detail::normal_iterator.212"** %it.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::advance_iterator"*, %"class.thrust::detail::advance_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.212"* %0 to %"class.thrust::iterator_facade.214"* %m_step = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %this1, i32 0, i32 0 %2 = load i64, i64* %m_step, align 8, !tbaa !204 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl(%"class.thrust::iterator_facade.214"* %1, i64 %2) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.268"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.268"*, align 8 store %"struct.thrust::detail::cons.268"* %this, %"struct.thrust::detail::cons.268"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.268"*, %"struct.thrust::detail::cons.268"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.268", %"struct.thrust::detail::cons.268"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.212"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.268"* %this) #9 comdat align 2 { entry: %retval = alloca %"struct.thrust::null_type", align 1 %this.addr = alloca %"struct.thrust::detail::cons.268"*, align 8 store %"struct.thrust::detail::cons.268"* %this, %"struct.thrust::detail::cons.268"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.268"*, %"struct.thrust::detail::cons.268"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl(%"class.thrust::iterator_facade.214"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.214"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.214"* %this, %"class.thrust::iterator_facade.214"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.214"*, %"class.thrust::iterator_facade.214"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.214"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.214"* %this1) ret %"class.thrust::detail::normal_iterator.212"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.212"* %f, %"class.thrust::detail::normal_iterator.212"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.212"* %0 to %"class.thrust::iterator_adaptor.213"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl(%"class.thrust::iterator_adaptor.213"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.214"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.214"*, align 8 store %"class.thrust::iterator_facade.214"* %this, %"class.thrust::iterator_facade.214"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.214"*, %"class.thrust::iterator_facade.214"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.214"* %this1 to %"class.thrust::detail::normal_iterator.212"* ret %"class.thrust::detail::normal_iterator.212"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl(%"class.thrust::iterator_adaptor.213"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.213"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.213"* %this, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.213"*, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.141"* %m_iterator to %"class.thrust::iterator_facade.143"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::pointer.141"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl(%"class.thrust::iterator_facade.143"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.141"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl(%"class.thrust::iterator_facade.143"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.143"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.143"* %this, %"class.thrust::iterator_facade.143"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.143"*, %"class.thrust::iterator_facade.143"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.141"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.143"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE(%"class.thrust::pointer.141"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::pointer.141"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.143"* %this1) ret %"class.thrust::pointer.141"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE(%"class.thrust::pointer.141"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::pointer.141"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::pointer.141"* %f, %"class.thrust::pointer.141"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %f.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %0 to %"class.thrust::iterator_adaptor.142"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl(%"class.thrust::iterator_adaptor.142"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.141"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.143"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.143"*, align 8 store %"class.thrust::iterator_facade.143"* %this, %"class.thrust::iterator_facade.143"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.143"*, %"class.thrust::iterator_facade.143"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.143"* %this1 to %"class.thrust::pointer.141"* ret %"class.thrust::pointer.141"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl(%"class.thrust::iterator_adaptor.142"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.142"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.142"* %this, %"class.thrust::iterator_adaptor.142"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.142"*, %"class.thrust::iterator_adaptor.142"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !109 %add.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %1, i64 %0 store %"struct.thrust::pair"* %add.ptr, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !109 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESH_EEEENS7_INSD_ISA_SG_SH_SH_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEEEENS_15iterator_traitsIT_E15difference_typeESQ_SQ_(%"class.thrust::zip_iterator.263"* byval align 8 %first, %"class.thrust::zip_iterator.263"* byval align 8 %last) #8 comdat { entry: %agg.tmp = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.263", align 8 %agg.tmp2 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp to i8* %1 = bitcast %"class.thrust::zip_iterator.263"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) %2 = bitcast %"class.thrust::zip_iterator.263"* %agg.tmp1 to i8* %3 = bitcast %"class.thrust::zip_iterator.263"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESI_EEEENS8_INSE_ISB_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEEEENS_15iterator_traitsIT_E15difference_typeESR_SR_NS_27random_access_traversal_tagE(%"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.263"* byval align 8 %agg.tmp1) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESI_EEEENS8_INSE_ISB_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEEEENS_15iterator_traitsIT_E15difference_typeESR_SR_NS_27random_access_traversal_tagE(%"class.thrust::zip_iterator.263"* byval align 8 %first, %"class.thrust::zip_iterator.263"* byval align 8 %last) #8 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = bitcast %"class.thrust::zip_iterator.263"* %last to %"class.thrust::iterator_facade.264"* %2 = bitcast %"class.thrust::zip_iterator.263"* %first to %"class.thrust::iterator_facade.264"* %call = call i64 @_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_SV_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSX_IT5_T6_T7_T8_T9_T10_EEE4typeERKS14_RKS1B_(%"class.thrust::iterator_facade.264"* dereferenceable(1) %1, %"class.thrust::iterator_facade.264"* dereferenceable(1) %2) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_SV_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSX_IT5_T6_T7_T8_T9_T10_EEE4typeERKS14_RKS1B_(%"class.thrust::iterator_facade.264"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.264"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.264"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.264"*, align 8 store %"class.thrust::iterator_facade.264"* %lhs, %"class.thrust::iterator_facade.264"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.264"* %rhs, %"class.thrust::iterator_facade.264"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.264"*, %"class.thrust::iterator_facade.264"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.264"* %0 to %"class.thrust::zip_iterator.263"* %2 = load %"class.thrust::iterator_facade.264"*, %"class.thrust::iterator_facade.264"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.264"* %2 to %"class.thrust::zip_iterator.263"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENS4_20distance_from_resultIT_T0_E4typeERKSP_RKSQ_(%"class.thrust::zip_iterator.263"* dereferenceable(24) %1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENS4_20distance_from_resultIT_T0_E4typeERKSP_RKSQ_(%"class.thrust::zip_iterator.263"* dereferenceable(24) %f1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::zip_iterator.263"* %f1, %"class.thrust::zip_iterator.263"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %f2, %"class.thrust::zip_iterator.263"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENT_15difference_typeERKSO_RKT0_NS4_17integral_constantIbLb1EEE(%"class.thrust::zip_iterator.263"* dereferenceable(24) %0, %"class.thrust::zip_iterator.263"* dereferenceable(24) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS5_INSB_IS8_SF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_EEEESN_EENT_15difference_typeERKSO_RKT0_NS4_17integral_constantIbLb1EEE(%"class.thrust::zip_iterator.263"* dereferenceable(24) %f1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 store %"class.thrust::zip_iterator.263"* %f1, %"class.thrust::zip_iterator.263"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.263"* %f2, %"class.thrust::zip_iterator.263"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %f1.addr, align 8 %2 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %f2.addr, align 8 %call = call i64 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE11distance_toISK_EElRKNS0_IT_EE(%"class.thrust::zip_iterator.263"* %1, %"class.thrust::zip_iterator.263"* dereferenceable(24) %2) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE11distance_toISK_EElRKNS0_IT_EE(%"class.thrust::zip_iterator.263"* %this, %"class.thrust::zip_iterator.263"* dereferenceable(24) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 store %"class.thrust::zip_iterator.263"* %this, %"class.thrust::zip_iterator.263"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.263"* %other, %"class.thrust::zip_iterator.263"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %this.addr, align 8 %0 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %other.addr, align 8 %call = call dereferenceable(24) %"class.thrust::tuple.265"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.263"* %0) %1 = bitcast %"class.thrust::tuple.265"* %call to %"struct.thrust::detail::cons.266"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_(%"struct.thrust::detail::cons.266"* dereferenceable(24) %1) %2 = bitcast %"class.thrust::detail::normal_iterator.66"* %call2 to %"class.thrust::iterator_facade.68"* %call3 = call dereferenceable(24) %"class.thrust::tuple.265"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.263"* %this1) %3 = bitcast %"class.thrust::tuple.265"* %call3 to %"struct.thrust::detail::cons.266"* %call4 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_(%"struct.thrust::detail::cons.266"* dereferenceable(24) %3) %4 = bitcast %"class.thrust::detail::normal_iterator.66"* %call4 to %"class.thrust::iterator_facade.68"* %call5 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElS7_S5_SB_SC_SE_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSG_IT5_T6_T7_T8_T9_T10_EEE4typeERKSN_RKSU_(%"class.thrust::iterator_facade.68"* dereferenceable(1) %2, %"class.thrust::iterator_facade.68"* dereferenceable(1) %4) ret i64 %call5 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_(%"struct.thrust::detail::cons.266"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.266"*, align 8 store %"struct.thrust::detail::cons.266"* %c, %"struct.thrust::detail::cons.266"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.266"*, %"struct.thrust::detail::cons.266"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES9_NS0_4consINS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESI_EEEENSC_INS4_INSD_IS7_SH_SI_SI_EEEENS_9null_typeEEEEEEET_RKNSC_IT0_T1_EE(%"struct.thrust::detail::cons.266"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.66"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES9_NS0_4consINS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESI_EEEENSC_INS4_INSD_IS7_SH_SI_SI_EEEENS_9null_typeEEEEEEET_RKNSC_IT0_T1_EE(%"struct.thrust::detail::cons.266"* dereferenceable(24) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.266"*, align 8 store %"struct.thrust::detail::cons.266"* %t, %"struct.thrust::detail::cons.266"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.266"*, %"struct.thrust::detail::cons.266"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.266", %"struct.thrust::detail::cons.266"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.66"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_(%"class.thrust::zip_iterator.263"* %this, %"class.thrust::tuple.265"* byval align 8 %iterator_tuple) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.263"*, align 8 store %"class.thrust::zip_iterator.263"* %this, %"class.thrust::zip_iterator.263"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.263"*, %"class.thrust::zip_iterator.263"** %this.addr, align 8 %0 = bitcast %"class.thrust::zip_iterator.263"* %this1 to %"class.thrust::iterator_facade.264"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.263", %"class.thrust::zip_iterator.263"* %this1, i32 0, i32 0 %1 = bitcast %"class.thrust::tuple.265"* %m_iterator_tuple to i8* %2 = bitcast %"class.thrust::tuple.265"* %iterator_tuple to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EC2ERKS7_RKSF_RKSH_(%"class.thrust::tuple.265"* %this, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %t2) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.265"*, align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.265"* %this, %"class.thrust::tuple.265"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.66"* %t0, %"class.thrust::detail::normal_iterator.66"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.212"* %t2, %"class.thrust::detail::normal_iterator.212"** %t2.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.265"*, %"class.thrust::tuple.265"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.265"* %this1 to %"struct.thrust::detail::cons.266"* %1 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %t2.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEEC2IKS7_KSF_KSH_KSI_SQ_SQ_SQ_SQ_SQ_SQ_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.266"* %0, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %2, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeEEEEEEC2IKS7_KSF_KSH_KSI_SQ_SQ_SQ_SQ_SQ_SQ_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.266"* %this, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t2, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.266"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.266"* %this, %"struct.thrust::detail::cons.266"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.66"* %t1, %"class.thrust::detail::normal_iterator.66"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t2, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.212"* %t3, %"class.thrust::detail::normal_iterator.212"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.266"*, %"struct.thrust::detail::cons.266"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.266", %"struct.thrust::detail::cons.266"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.66"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.66"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.266", %"struct.thrust::detail::cons.266"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIaaEES7_S8_S8_EEEENS_9null_typeEEEEC2IKSA_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.267"* %tail, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %3, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS1_INS2_INS3_INS_4pairIaaEES7_S8_S8_EEEENS_9null_typeEEEEC2IKSA_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.267"* %this, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.267"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.267"* %this, %"struct.thrust::detail::cons.267"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.212"* %t2, %"class.thrust::detail::normal_iterator.212"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.267"*, %"struct.thrust::detail::cons.267"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.267", %"struct.thrust::detail::cons.267"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.199"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.199"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.267", %"struct.thrust::detail::cons.267"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_(%"struct.thrust::detail::cons.268"* %tail, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_(%"struct.thrust::detail::cons.268"* %this, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.268"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.268"* %this, %"struct.thrust::detail::cons.268"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.212"* %t1, %"class.thrust::detail::normal_iterator.212"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.268"*, %"struct.thrust::detail::cons.268"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.268", %"struct.thrust::detail::cons.268"* %this9, i32 0, i32 0 %9 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %t1.addr, align 8 %10 = bitcast %"class.thrust::detail::normal_iterator.212"* %head to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.212"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS_10device_ptrIS7_EEEENS0_4consINS4_INS5_IjSB_SC_SC_EEEENSK_ISE_NS_9null_typeEEEEEEET_RKNSK_IT0_T1_EE(%"struct.thrust::detail::cons.266"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.266"*, align 8 store %"struct.thrust::detail::cons.266"* %t, %"struct.thrust::detail::cons.266"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.266"*, %"struct.thrust::detail::cons.266"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.266", %"struct.thrust::detail::cons.266"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE(%"struct.thrust::detail::cons.267"* dereferenceable(16) %tail) ret %"class.thrust::detail::normal_iterator.212"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE(%"struct.thrust::detail::cons.267"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.267"*, align 8 store %"struct.thrust::detail::cons.267"* %t, %"struct.thrust::detail::cons.267"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.267"*, %"struct.thrust::detail::cons.267"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.267", %"struct.thrust::detail::cons.267"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.268"* dereferenceable(8) %tail) ret %"class.thrust::detail::normal_iterator.212"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.268"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.268"*, align 8 store %"struct.thrust::detail::cons.268"* %t, %"struct.thrust::detail::cons.268"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.268"*, %"struct.thrust::detail::cons.268"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.268", %"struct.thrust::detail::cons.268"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.212"* %head } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.68"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.68"*, align 8 store %"class.thrust::iterator_facade.68"* %this, %"class.thrust::iterator_facade.68"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.68"*, %"class.thrust::iterator_facade.68"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.68"* %this1 to %"class.thrust::detail::normal_iterator.66"* ret %"class.thrust::detail::normal_iterator.66"* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmIEl(%"class.thrust::iterator_facade.68"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.68"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.68"* %this, %"class.thrust::iterator_facade.68"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.68"*, %"class.thrust::iterator_facade.68"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.68"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %sub = sub nsw i64 0, %0 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEEEvRT_NS9_15difference_typeE(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %call, i64 %sub) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.68"* %this1) ret %"class.thrust::detail::normal_iterator.66"* %call2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEixEl(%"class.thrust::iterator_facade.214"* %this, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.215", align 8 %this.addr = alloca %"class.thrust::iterator_facade.214"*, align 8 %n.addr = alloca i64, align 8 %coerce = alloca %"class.thrust::detail::normal_iterator.212", align 8 store %"class.thrust::iterator_facade.214"* %this, %"class.thrust::iterator_facade.214"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.214"*, %"class.thrust::iterator_facade.214"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.214"* %this1) %0 = bitcast %"class.thrust::detail::normal_iterator.212"* %call to %"class.thrust::iterator_facade.214"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.214"* dereferenceable(1) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %coerce, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive5, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.212"* %coerce to %"class.thrust::iterator_facade.214"* %call6 = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv(%"class.thrust::iterator_facade.214"* %2) %coerce.dive7 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %call6, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive11, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive12, align 8 ret %"struct.thrust::pair"* %3 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.214"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.214"*, align 8 store %"class.thrust::iterator_facade.214"* %this, %"class.thrust::iterator_facade.214"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.214"*, %"class.thrust::iterator_facade.214"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.214"* %this1 to %"class.thrust::detail::normal_iterator.212"* ret %"class.thrust::detail::normal_iterator.212"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv(%"class.thrust::iterator_facade.214"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.215", align 8 %this.addr = alloca %"class.thrust::iterator_facade.214"*, align 8 store %"class.thrust::iterator_facade.214"* %this, %"class.thrust::iterator_facade.214"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.214"*, %"class.thrust::iterator_facade.214"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.214"* %this1) %call2 = call %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive6, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.215", align 8 %f.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 store %"class.thrust::detail::normal_iterator.212"* %f, %"class.thrust::detail::normal_iterator.212"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.212"* %0 to %"class.thrust::iterator_adaptor.213"* %call = call %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv(%"class.thrust::iterator_adaptor.213"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive4, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv(%"class.thrust::iterator_adaptor.213"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.215", align 8 %this.addr = alloca %"class.thrust::iterator_adaptor.213"*, align 8 store %"class.thrust::iterator_adaptor.213"* %this, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.213"*, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.141"* %m_iterator to %"class.thrust::iterator_facade.143"* %call = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv(%"class.thrust::iterator_facade.143"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive5, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 ret %"struct.thrust::pair"* %1 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv(%"class.thrust::iterator_facade.143"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.215", align 8 %this.addr = alloca %"class.thrust::iterator_facade.143"*, align 8 store %"class.thrust::iterator_facade.143"* %this, %"class.thrust::iterator_facade.143"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.143"*, %"class.thrust::iterator_facade.143"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.141"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.143"* %this1) %call2 = call %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_(%"class.thrust::pointer.141"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive6, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_(%"class.thrust::pointer.141"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.215", align 8 %f.addr = alloca %"class.thrust::pointer.141"*, align 8 store %"class.thrust::pointer.141"* %f, %"class.thrust::pointer.141"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %f.addr, align 8 %call = call %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_E11dereferenceEv(%"class.thrust::pointer.141"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive4, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.141"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.143"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.143"*, align 8 store %"class.thrust::iterator_facade.143"* %this, %"class.thrust::iterator_facade.143"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.143"*, %"class.thrust::iterator_facade.143"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.143"* %this1 to %"class.thrust::pointer.141"* ret %"class.thrust::pointer.141"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES7_E11dereferenceEv(%"class.thrust::pointer.141"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.215", align 8 %this.addr = alloca %"class.thrust::pointer.141"*, align 8 store %"class.thrust::pointer.141"* %this, %"class.thrust::pointer.141"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %this.addr, align 8 call void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_(%"class.thrust::reference.215"* %retval, %"class.thrust::pointer.141"* dereferenceable(8) %this1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_(%"class.thrust::reference.215"* %this, %"class.thrust::pointer.141"* dereferenceable(8) %ptr) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.215"*, align 8 %ptr.addr = alloca %"class.thrust::pointer.141"*, align 8 store %"class.thrust::reference.215"* %this, %"class.thrust::reference.215"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.141"* %ptr, %"class.thrust::pointer.141"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.215"*, %"class.thrust::reference.215"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %m_ptr to i8* %2 = bitcast %"class.thrust::pointer.141"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIPKS2_EEvT_(%"class.thrust::reference.215"* %this, %"struct.thrust::pair"* %src) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.215"*, align 8 %src.addr = alloca %"struct.thrust::pair"*, align 8 %system1 = alloca %"struct.thrust::system::cuda::detail::tag"*, align 8 %system2 = alloca %"struct.thrust::system::cpp::detail::tag"*, align 8 store %"class.thrust::reference.215"* %this, %"class.thrust::reference.215"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %src, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.215"*, %"class.thrust::reference.215"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::tag"** %system1 to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 store %"struct.thrust::system::cuda::detail::tag"* null, %"struct.thrust::system::cuda::detail::tag"** %system1, align 8, !tbaa !1 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"** %system2 to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 store %"struct.thrust::system::cpp::detail::tag"* null, %"struct.thrust::system::cpp::detail::tag"** %system2, align 8, !tbaa !1 %2 = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %system1, align 8, !tbaa !1 %3 = load %"struct.thrust::system::cpp::detail::tag"*, %"struct.thrust::system::cpp::detail::tag"** %system2, align 8, !tbaa !1 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 call void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIS7_NS4_3cpp6detail3tagEPKS2_EEvPT_PT0_T1_(%"class.thrust::reference.215"* %this1, %"struct.thrust::system::cuda::detail::tag"* %2, %"struct.thrust::system::cpp::detail::tag"* %3, %"struct.thrust::pair"* %4) %5 = bitcast %"struct.thrust::system::cpp::detail::tag"** %system2 to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %6 = bitcast %"struct.thrust::system::cuda::detail::tag"** %system1 to i8* call void @llvm.lifetime.end(i64 8, i8* %6) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIS7_NS4_3cpp6detail3tagEPKS2_EEvPT_PT0_T1_(%"class.thrust::reference.215"* %this, %"struct.thrust::system::cuda::detail::tag"* %system1, %"struct.thrust::system::cpp::detail::tag"* %system2, %"struct.thrust::pair"* %src) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.215"*, align 8 %system1.addr = alloca %"struct.thrust::system::cuda::detail::tag"*, align 8 %system2.addr = alloca %"struct.thrust::system::cpp::detail::tag"*, align 8 %src.addr = alloca %"struct.thrust::pair"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 store %"class.thrust::reference.215"* %this, %"class.thrust::reference.215"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::tag"* %system1, %"struct.thrust::system::cuda::detail::tag"** %system1.addr, align 8, !tbaa !1 store %"struct.thrust::system::cpp::detail::tag"* %system2, %"struct.thrust::system::cpp::detail::tag"** %system2.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %src, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.215"*, %"class.thrust::reference.215"** %this.addr, align 8 %0 = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %system1.addr, align 8, !tbaa !1 %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %0 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = load %"struct.thrust::system::cpp::detail::tag"*, %"struct.thrust::system::cpp::detail::tag"** %system2.addr, align 8, !tbaa !1 %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %2 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %call = call { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } @_ZN6thrust6system4cuda6detail13select_systemINS2_3tagENS0_3cpp6detail3tagEEENS2_12cross_systemIT_T0_EERKNS2_16execution_policyIS9_EERKNS6_16execution_policyISA_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %3) %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %ref.tmp to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %5 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %4, i32 0, i32 0 %6 = extractvalue { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } %call, 0 store %"struct.thrust::execution_policy.120"* %6, %"struct.thrust::execution_policy.120"** %5, align 8 %7 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %4, i32 0, i32 1 %8 = extractvalue { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } %call, 1 store %"struct.thrust::execution_policy.88"* %8, %"struct.thrust::execution_policy.88"** %7, align 8 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 call void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E24strip_const_assign_valueINS6_12cross_systemIS7_NS4_3cpp6detail3tagEEEPKS2_EEvRKT_T0_(%"class.thrust::reference.215"* %this1, %"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %ref.tmp, %"struct.thrust::pair"* %9) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E24strip_const_assign_valueINS6_12cross_systemIS7_NS4_3cpp6detail3tagEEEPKS2_EEvRKT_T0_(%"class.thrust::reference.215"* %this, %"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %system, %"struct.thrust::pair"* %src) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.215"*, align 8 %system.addr = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %src.addr = alloca %"struct.thrust::pair"*, align 8 %non_const_system = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 store %"class.thrust::reference.215"* %this, %"class.thrust::reference.215"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::cross_system.227"* %system, %"struct.thrust::system::cuda::detail::cross_system.227"** %system.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %src, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.215"*, %"class.thrust::reference.215"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"** %non_const_system to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %system.addr, align 8 store %"struct.thrust::system::cuda::detail::cross_system.227"* %1, %"struct.thrust::system::cuda::detail::cross_system.227"** %non_const_system, align 8, !tbaa !7 %2 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %non_const_system, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %2 to %"struct.thrust::detail::execution_policy_base.229"* %call = call dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system.227"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS4_3tagENS2_3cpp6detail3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.229"* dereferenceable(1) %3) %m_ptr = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %this1, i32 0, i32 0 %4 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %5 = bitcast %"class.thrust::pointer.141"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 call void @_ZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %call, %"struct.thrust::pair"* %7, %"struct.thrust::pair"* %6) %8 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"** %non_const_system to i8* call void @llvm.lifetime.end(i64 8, i8* %8) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %systems, %"struct.thrust::pair"* %dst.coerce, %"struct.thrust::pair"* %src) #8 comdat { entry: %dst = alloca %"class.thrust::pointer.141", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %src.addr = alloca %"struct.thrust::pair"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %dst, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %dst.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::cross_system.227"* %systems, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %src, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %dst to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_EN17war_nvbugs_8816319host_pathERNSF_IS4_S7_EESC_SE_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %0, %"struct.thrust::pair"* %4, %"struct.thrust::pair"* %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail12assign_valueINS2_3tagENS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultESB_EEPKSA_EEvRNS2_12cross_systemIT_T0_EET1_T2_EN17war_nvbugs_8816319host_pathERNSF_IS4_S7_EESC_SE_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %systems, %"struct.thrust::pair"* %dst.coerce, %"struct.thrust::pair"* %src) #8 comdat align 2 { entry: %dst = alloca %"class.thrust::pointer.141", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %src.addr = alloca %"struct.thrust::pair"*, align 8 %rotated_systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %dst, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %dst.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::cross_system.227"* %systems, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %src, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %rotated_systems to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8 %call = call { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } @_ZNK6thrust6system4cuda6detail12cross_systemINS2_3tagENS0_3cpp6detail3tagEE6rotateEv(%"struct.thrust::system::cuda::detail::cross_system.227"* %1) %2 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %rotated_systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %2, i32 0, i32 0 %4 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call, 0 store %"struct.thrust::execution_policy.88"* %4, %"struct.thrust::execution_policy.88"** %3, align 8 %5 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %2, i32 0, i32 1 %6 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call, 1 store %"struct.thrust::execution_policy.120"* %6, %"struct.thrust::execution_policy.120"** %5, align 8 %7 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %rotated_systems to %"struct.thrust::detail::execution_policy_base.132"* %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %src.addr, align 8, !tbaa !1 %add.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %9, i64 1 %10 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %11 = bitcast %"class.thrust::pointer.141"* %dst to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %12 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 %call4 = call %"struct.thrust::pair"* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEEPKNS_4pairIaaEENS_7pointerISB_S8_NS_11use_defaultESF_EEEET1_RKNS_6detail21execution_policy_baseIT_EET0_SO_SH_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %7, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %add.ptr, %"struct.thrust::pair"* %12) %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %call4, %"struct.thrust::pair"** %coerce.dive6, align 8 %13 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %rotated_systems to i8* call void @llvm.lifetime.end(i64 16, i8* %13) #5 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEEPKNS_4pairIaaEENS_7pointerISB_S8_NS_11use_defaultESF_EEEET1_RKNS_6detail21execution_policy_baseIT_EET0_SO_SH_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first, %"struct.thrust::pair"* %last, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %result = alloca %"class.thrust::pointer.141", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.132"*, align 8 %first.addr = alloca %"struct.thrust::pair"*, align 8 %last.addr = alloca %"struct.thrust::pair"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp3 = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.132"* %exec, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %first, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %last, %"struct.thrust::pair"** %last.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::detail::execution_policy_base.132"*, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.132"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %0) %call2 = call dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %last.addr, align 8, !tbaa !1 %5 = bitcast %"class.thrust::pointer.141"* %agg.tmp3 to i8* %6 = bitcast %"class.thrust::pointer.141"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %8 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %7, i32 0, i32 0 %9 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %8, align 8 %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %7, i32 0, i32 1 %11 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %10, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive4, i32 0, i32 0 %12 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 %call6 = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %9, %"struct.thrust::execution_policy.120"* %11, %"struct.thrust::pair"* %3, %"struct.thrust::pair"* %4, %"struct.thrust::pair"* %12) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive7, i32 0, i32 0 store %"struct.thrust::pair"* %call6, %"struct.thrust::pair"** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive9, i32 0, i32 0 %13 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 ret %"struct.thrust::pair"* %13 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair"* %first, %"struct.thrust::pair"* %last, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %result = alloca %"class.thrust::pointer.141", align 8 %first.addr = alloca %"struct.thrust::pair"*, align 8 %last.addr = alloca %"struct.thrust::pair"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp2 = alloca %"class.thrust::pointer.141", align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::pair"* %first, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %last, %"struct.thrust::pair"** %last.addr, align 8, !tbaa !1 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %last.addr, align 8, !tbaa !1 %7 = bitcast %"class.thrust::pointer.141"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::pointer.141"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, %"struct.thrust::pair"* %5, %"struct.thrust::pair"* %6, %"struct.thrust::pair"* %14) %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive7, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive8, align 8 ret %"struct.thrust::pair"* %15 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair"* %begin, %"struct.thrust::pair"* %end, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %result = alloca %"class.thrust::pointer.141", align 8 %begin.addr = alloca %"struct.thrust::pair"*, align 8 %end.addr = alloca %"struct.thrust::pair"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp2 = alloca %"class.thrust::pointer.141", align 8 %agg.tmp3 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp4 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::pair"* %begin, %"struct.thrust::pair"** %begin.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %end, %"struct.thrust::pair"** %end.addr, align 8, !tbaa !1 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %begin.addr, align 8, !tbaa !1 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %end.addr, align 8, !tbaa !1 %7 = bitcast %"class.thrust::pointer.141"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::pointer.141"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp2, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive5, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, %"struct.thrust::pair"* %5, %"struct.thrust::pair"* %6, %"struct.thrust::pair"* %14) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive7, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive9, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 ret %"struct.thrust::pair"* %15 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair"* %begin, %"struct.thrust::pair"* %end, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %result = alloca %"class.thrust::pointer.141", align 8 %input_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %output_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %begin.addr = alloca %"struct.thrust::pair"*, align 8 %end.addr = alloca %"struct.thrust::pair"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp3 = alloca %"class.thrust::pointer.141", align 8 %agg.tmp4 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp5 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp6 = alloca %"struct.thrust::detail::integral_constant", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::pair"* %begin, %"struct.thrust::pair"** %begin.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %end, %"struct.thrust::pair"** %end.addr, align 8, !tbaa !1 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %begin.addr, align 8, !tbaa !1 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %end.addr, align 8, !tbaa !1 %7 = bitcast %"class.thrust::pointer.141"* %agg.tmp3 to i8* %8 = bitcast %"class.thrust::pointer.141"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp3, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive7, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive8, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, %"struct.thrust::pair"* %5, %"struct.thrust::pair"* %6, %"struct.thrust::pair"* %14) %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive9, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive11, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive12, align 8 ret %"struct.thrust::pair"* %15 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEENS_7pointerIS9_S7_NS_11use_defaultESD_EEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair"* %begin, %"struct.thrust::pair"* %end, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %result = alloca %"class.thrust::pointer.141", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %2 = alloca %"struct.thrust::detail::integral_constant", align 1 %begin.addr = alloca %"struct.thrust::pair"*, align 8 %end.addr = alloca %"struct.thrust::pair"*, align 8 %n = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %4 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %5, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::pair"* %begin, %"struct.thrust::pair"** %begin.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %end, %"struct.thrust::pair"** %end.addr, align 8, !tbaa !1 %6 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %6) #5 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %end.addr, align 8, !tbaa !1 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %begin.addr, align 8, !tbaa !1 %sub.ptr.lhs.cast = ptrtoint %"struct.thrust::pair"* %7 to i64 %sub.ptr.rhs.cast = ptrtoint %"struct.thrust::pair"* %8 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 store i64 %sub.ptr.div, i64* %n, align 8, !tbaa !13 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %begin.addr, align 8, !tbaa !1 %10 = load i64, i64* %n, align 8, !tbaa !13 %11 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %12 = bitcast %"class.thrust::pointer.141"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive4, i32 0, i32 0 %13 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 call void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEElNS_7pointerIS9_S7_NS_11use_defaultESD_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, %"struct.thrust::pair"* %9, i64 %10, %"struct.thrust::pair"* %13) %14 = bitcast %"class.thrust::pointer.141"* %result to %"class.thrust::iterator_facade.143"* %15 = load i64, i64* %n, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrustplINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE(%"class.thrust::iterator_facade.143"* dereferenceable(1) %14, i64 %15) %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive7, align 8 %16 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive8, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 ret %"struct.thrust::pair"* %17 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagEPKNS_4pairIaaEElNS_7pointerIS9_S7_NS_11use_defaultESD_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, %"struct.thrust::pair"* %first, i64 %n, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %result = alloca %"class.thrust::pointer.141", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system"*, align 8 %first.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 %dst = alloca i8*, align 8 %ref.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce = alloca %"class.thrust::reference.215", align 8 %src = alloca i8*, align 8 %ref.tmp9 = alloca %"struct.thrust::pair"*, align 8 %kind = alloca i32, align 4 %s = alloca %struct.CUstream_st*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::cross_system"* %systems, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %first, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %dst to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = bitcast %"class.thrust::pointer.141"* %result to %"class.thrust::iterator_facade.143"* %call = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv(%"class.thrust::iterator_facade.143"* %1) %coerce.dive2 = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %coerce, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive4, align 8 %call5 = call %"struct.thrust::pair"* @_ZNK6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EadEv(%"class.thrust::reference.215"* %coerce) %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %ref.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %call5, %"struct.thrust::pair"** %coerce.dive7, align 8 %call8 = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.141"* dereferenceable(8) %ref.tmp) %2 = bitcast %"struct.thrust::pair"* %call8 to i8* store i8* %2, i8** %dst, align 8, !tbaa !1 %3 = bitcast i8** %src to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %4, %"struct.thrust::pair"** %ref.tmp9, align 8, !tbaa !1 %call10 = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castIPKNS_4pairIaaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"struct.thrust::pair"** dereferenceable(8) %ref.tmp9) %5 = bitcast %"struct.thrust::pair"* %call10 to i8* store i8* %5, i8** %src, align 8, !tbaa !1 %6 = bitcast i32* %kind to i8* call void @llvm.lifetime.start(i64 4, i8* %6) #5 %7 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system1 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %7, i32 0, i32 0 %ref = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1, align 8, !tbaa !7 %8 = bitcast %"struct.thrust::execution_policy.88"* %ref to %"struct.thrust::detail::execution_policy_base.85"* %call11 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %8) %9 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call11 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %10 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system2 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %10, i32 0, i32 1 %ref12 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2, align 8, !tbaa !7 %11 = bitcast %"struct.thrust::execution_policy.120"* %ref12 to %"struct.thrust::detail::execution_policy_base.121"* %call13 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %11) %12 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call13 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call14 = call i32 @_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS0_3cpp6detail3tagENS2_3tagEEE14cudaMemcpyKindRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %9, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %12) store i32 %call14, i32* %kind, align 4, !tbaa !97 %13 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %13) #5 %14 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system115 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %14, i32 0, i32 0 %ref16 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system115, align 8, !tbaa !7 %15 = bitcast %"struct.thrust::execution_policy.88"* %ref16 to %"struct.thrust::detail::execution_policy_base.85"* %call17 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %15) %16 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call17 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %17 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system218 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %17, i32 0, i32 1 %ref19 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system218, align 8, !tbaa !7 %18 = bitcast %"struct.thrust::execution_policy.120"* %ref19 to %"struct.thrust::detail::execution_policy_base.121"* %call20 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %18) %19 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call20 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call21 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS0_3cpp6detail3tagENS2_3tagEEEP11CUstream_stRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %16, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %19) store %struct.CUstream_st* %call21, %struct.CUstream_st** %s, align 8, !tbaa !1 %20 = load i8*, i8** %dst, align 8, !tbaa !1 %21 = load i8*, i8** %src, align 8, !tbaa !1 %22 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 %22, 2 %23 = load i32, i32* %kind, align 4, !tbaa !97 %24 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail19trivial_copy_detail23checked_cudaMemcpyAsyncEPvPKvm14cudaMemcpyKindP11CUstream_st(i8* %20, i8* %21, i64 %mul, i32 %23, %struct.CUstream_st* %24) %25 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail11synchronizeEP11CUstream_stPKc(%struct.CUstream_st* %25, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.30, i32 0, i32 0)) %26 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %26) #5 %27 = bitcast i32* %kind to i8* call void @llvm.lifetime.end(i64 4, i8* %27) #5 %28 = bitcast i8** %src to i8* call void @llvm.lifetime.end(i64 8, i8* %28) #5 %29 = bitcast i8** %dst to i8* call void @llvm.lifetime.end(i64 8, i8* %29) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrustplINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE(%"class.thrust::iterator_facade.143"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %i.addr = alloca %"class.thrust::iterator_facade.143"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::pointer.141", align 8 store %"class.thrust::iterator_facade.143"* %i, %"class.thrust::iterator_facade.143"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.141"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.143"*, %"class.thrust::iterator_facade.143"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.143"* %1 to %"class.thrust::pointer.141"* %3 = bitcast %"class.thrust::pointer.141"* %tmp to i8* %4 = bitcast %"class.thrust::pointer.141"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::pointer.141"* %tmp to %"class.thrust::iterator_facade.143"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::pointer.141"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl(%"class.thrust::iterator_facade.143"* %5, i64 %6) %7 = bitcast %"class.thrust::pointer.141"* %retval to i8* %8 = bitcast %"class.thrust::pointer.141"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::pointer.141"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive1, align 8 ret %"struct.thrust::pair"* %10 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EadEv(%"class.thrust::reference.215"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %this.addr = alloca %"class.thrust::reference.215"*, align 8 store %"class.thrust::reference.215"* %this, %"class.thrust::reference.215"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.215"*, %"class.thrust::reference.215"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.215", %"class.thrust::reference.215"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.141"* %retval to i8* %1 = bitcast %"class.thrust::pointer.141"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce0, i32* %first.coerce1, %"struct.thrust::pair"* %last.coerce0, i32* %last.coerce1, %"class.thrust::zip_iterator.216"* byval align 8 %result) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.216", align 8 %first = alloca %"class.thrust::zip_iterator.221", align 8 %last = alloca %"class.thrust::zip_iterator.221", align 8 %binary_op = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.216", align 8 %agg.tmp3 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %0 = bitcast %"class.thrust::zip_iterator.221"* %first to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %first.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::zip_iterator.221"* %last to { %"struct.thrust::pair"*, i32* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 1 store i32* %last.coerce1, i32** %5, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 %6 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %7 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp to i8* %8 = bitcast %"class.thrust::zip_iterator.221"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 16, i32 8, i1 false) %9 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp1 to i8* %10 = bitcast %"class.thrust::zip_iterator.221"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 16, i32 8, i1 false) %11 = bitcast %"class.thrust::zip_iterator.216"* %agg.tmp2 to i8* %12 = bitcast %"class.thrust::zip_iterator.216"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 16, i32 8, i1 false) %13 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %agg.tmp3 to i8* %14 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %binary_op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 1, i32 1, i1 false), !tbaa.struct !41 %15 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp to { %"struct.thrust::pair"*, i32* }* %16 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %15, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %16, align 8 %18 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %15, i32 0, i32 1 %19 = load i32*, i32** %18, align 8 %20 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp1 to { %"struct.thrust::pair"*, i32* }* %21 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %20, i32 0, i32 0 %22 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %21, align 8 %23 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %20, i32 0, i32 1 %24 = load i32*, i32** %23, align 8 %call = call { %"struct.thrust::pair"*, i32* } @_ZZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_EN10workaround13parallel_pathERNSW_IS4_EESJ_SJ_SO_SU_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %6, %"struct.thrust::pair"* %17, i32* %19, %"struct.thrust::pair"* %22, i32* %24, %"class.thrust::zip_iterator.216"* byval align 8 %agg.tmp2) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive, i32 0, i32 0 %25 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive4 to { %"struct.thrust::pair"*, i32* }* %26 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %25, i32 0, i32 0 %27 = extractvalue { %"struct.thrust::pair"*, i32* } %call, 0 store %"struct.thrust::pair"* %27, %"struct.thrust::pair"** %26, align 8 %28 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %25, i32 0, i32 1 %29 = extractvalue { %"struct.thrust::pair"*, i32* } %call, 1 store i32* %29, i32** %28, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive5, i32 0, i32 0 %30 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive6 to { %"struct.thrust::pair"*, i32* }* %31 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %30, align 8 ret { %"struct.thrust::pair"*, i32* } %31 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_EN10workaround13parallel_pathERNSW_IS4_EESJ_SJ_SO_SU_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce0, i32* %first.coerce1, %"struct.thrust::pair"* %last.coerce0, i32* %last.coerce1, %"class.thrust::zip_iterator.216"* byval align 8 %result) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::zip_iterator.216", align 8 %first = alloca %"class.thrust::zip_iterator.221", align 8 %last = alloca %"class.thrust::zip_iterator.221", align 8 %binary_op = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.216", align 8 %agg.tmp3 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %0 = bitcast %"class.thrust::zip_iterator.221"* %first to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %first.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::zip_iterator.221"* %last to { %"struct.thrust::pair"*, i32* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 1 store i32* %last.coerce1, i32** %5, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 %6 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %7 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp to i8* %8 = bitcast %"class.thrust::zip_iterator.221"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 16, i32 8, i1 false) %9 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp1 to i8* %10 = bitcast %"class.thrust::zip_iterator.221"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 16, i32 8, i1 false) %11 = bitcast %"class.thrust::zip_iterator.216"* %agg.tmp2 to i8* %12 = bitcast %"class.thrust::zip_iterator.216"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 16, i32 8, i1 false) %13 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %agg.tmp3 to i8* %14 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %binary_op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 1, i32 1, i1 false), !tbaa.struct !41 %15 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp to { %"struct.thrust::pair"*, i32* }* %16 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %15, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %16, align 8 %18 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %15, i32 0, i32 1 %19 = load i32*, i32** %18, align 8 %20 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp1 to { %"struct.thrust::pair"*, i32* }* %21 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %20, i32 0, i32 0 %22 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %21, align 8 %23 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %20, i32 0, i32 1 %24 = load i32*, i32** %23, align 8 %call = call { %"struct.thrust::pair"*, i32* } @_ZN6thrust6system4cuda6detail11scan_detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES5_NS_11use_defaultESD_EEEENS9_INSA_IjS5_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS6_INS7_INS9_INS_10device_ptrISC_EEEESH_SI_SI_SI_SI_SI_SI_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S11_SW_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %6, %"struct.thrust::pair"* %17, i32* %19, %"struct.thrust::pair"* %22, i32* %24, %"class.thrust::zip_iterator.216"* byval align 8 %agg.tmp2) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive, i32 0, i32 0 %25 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive4 to { %"struct.thrust::pair"*, i32* }* %26 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %25, i32 0, i32 0 %27 = extractvalue { %"struct.thrust::pair"*, i32* } %call, 0 store %"struct.thrust::pair"* %27, %"struct.thrust::pair"** %26, align 8 %28 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %25, i32 0, i32 1 %29 = extractvalue { %"struct.thrust::pair"*, i32* } %call, 1 store i32* %29, i32** %28, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive5, i32 0, i32 0 %30 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive6 to { %"struct.thrust::pair"*, i32* }* %31 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %30, align 8 ret { %"struct.thrust::pair"*, i32* } %31 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZN6thrust6system4cuda6detail11scan_detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEES5_NS_11use_defaultESD_EEEENS9_INSA_IjS5_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS6_INS7_INS9_INS_10device_ptrISC_EEEESH_SI_SI_SI_SI_SI_SI_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S11_SW_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce0, i32* %first.coerce1, %"struct.thrust::pair"* %last.coerce0, i32* %last.coerce1, %"class.thrust::zip_iterator.216"* byval align 8 %result) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca %"class.thrust::zip_iterator.216", align 8 %first = alloca %"class.thrust::zip_iterator.221", align 8 %last = alloca %"class.thrust::zip_iterator.221", align 8 %binary_op = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n = alloca i64, align 8 %s = alloca %struct.CUstream_st*, align 8 %threshold_of_parallelism = alloca i64, align 8 %groupsize = alloca i64, align 8 %heap_size = alloca i64, align 8 %agg.tmp.ensured = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.295", align 8 %agg.tmp3 = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", align 1 %agg.tmp5 = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp6 = alloca %"class.thrust::zip_iterator.216", align 8 %agg.tmp7 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %groupsize8 = alloca i64, align 8 %grainsize = alloca i64, align 8 %tile_size = alloca i64, align 8 %num_tiles = alloca i64, align 8 %subscription = alloca i64, align 8 %num_groups = alloca i64, align 8 %ref.tmp = alloca i64, align 8 %decomp = alloca %"class.thrust::system::cuda::detail::aligned_decomposition", align 8 %carries = alloca %"class.thrust::detail::temporary_array.302", align 8 %heap_size11 = alloca i64, align 8 %agg.tmp.ensured12 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.316", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp14 = alloca %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles", align 1 %agg.tmp15 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", align 1 %agg.tmp16 = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp17 = alloca %"class.thrust::system::cuda::detail::aligned_decomposition", align 8 %agg.tmp18 = alloca %"class.thrust::detail::normal_iterator.308", align 8 %agg.tmp24 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %groupsize2 = alloca i64, align 8 %grainsize2 = alloca i64, align 8 %agg.tmp.ensured30 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp31 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.323", align 8 %agg.tmp34 = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %agg.tmp35 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", align 1 %agg.tmp36 = alloca %"class.thrust::detail::normal_iterator.308", align 8 %agg.tmp43 = alloca %"class.thrust::detail::normal_iterator.308", align 8 %agg.tmp50 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %agg.tmp.ensured60 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp61 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.316", align 8 %agg.tmp63 = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep", align 1 %agg.tmp64 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", align 1 %agg.tmp65 = alloca %"class.thrust::zip_iterator.221", align 8 %agg.tmp66 = alloca %"class.thrust::system::cuda::detail::aligned_decomposition", align 8 %agg.tmp67 = alloca %"class.thrust::detail::normal_iterator.308", align 8 %agg.tmp74 = alloca %"class.thrust::zip_iterator.216", align 8 %agg.tmp75 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %0 = bitcast %"class.thrust::zip_iterator.221"* %first to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %first.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::zip_iterator.221"* %last to { %"struct.thrust::pair"*, i32* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 1 store i32* %last.coerce1, i32** %5, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 %6 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %6) #5 %7 = bitcast %"class.thrust::zip_iterator.221"* %last to %"class.thrust::iterator_facade.222"* %8 = bitcast %"class.thrust::zip_iterator.221"* %first to %"class.thrust::iterator_facade.222"* %call = call i64 @_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElSJ_SK_SB_SL_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_(%"class.thrust::iterator_facade.222"* dereferenceable(1) %7, %"class.thrust::iterator_facade.222"* dereferenceable(1) %8) store i64 %call, i64* %n, align 8, !tbaa !13 %9 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %9) #5 %10 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %11 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %10 to %"struct.thrust::detail::execution_policy_base.121"* %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %11) %12 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call2 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %12) store %struct.CUstream_st* %call2, %struct.CUstream_st** %s, align 8, !tbaa !1 %13 = bitcast i64* %threshold_of_parallelism to i8* call void @llvm.lifetime.start(i64 8, i8* %13) #5 store i64 20000, i64* %threshold_of_parallelism, align 8, !tbaa !13 %14 = load i64, i64* %n, align 8, !tbaa !13 %cmp = icmp slt i64 %14, 20000 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %15 = bitcast i64* %groupsize to i8* call void @llvm.lifetime.start(i64 8, i8* %15) #5 store i64 512, i64* %groupsize, align 8, !tbaa !13 %16 = bitcast i64* %heap_size to i8* call void @llvm.lifetime.start(i64 8, i8* %16) #5 store i64 12288, i64* %heap_size, align 8, !tbaa !13 %17 = load i64, i64* %heap_size, align 8, !tbaa !13 %18 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_4gridILm512ELm3EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* sret %agg.tmp, i64 1, i64 %17, %struct.CUstream_st* %18) %19 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %agg.tmp4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %19, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %20 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp5 to i8* %21 = bitcast %"class.thrust::zip_iterator.221"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %20, i8* %21, i64 16, i32 8, i1 false) %22 = load i64, i64* %n, align 8, !tbaa !13 %23 = bitcast %"class.thrust::zip_iterator.216"* %agg.tmp6 to i8* %24 = bitcast %"class.thrust::zip_iterator.216"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %23, i8* %24, i64 16, i32 8, i1 false) %25 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %agg.tmp7 to i8* %26 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %binary_op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %25, i8* %26, i64 1, i32 1, i1 false), !tbaa.struct !41 %27 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp5 to { %"struct.thrust::pair"*, i32* }* %28 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %27, i32 0, i32 0 %29 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %28, align 8 %30 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %27, i32 0, i32 1 %31 = load i32*, i32** %30, align 8 %32 = bitcast %"class.thrust::zip_iterator.216"* %agg.tmp6 to { %"struct.thrust::pair"*, i32* }* %33 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %32, i32 0, i32 0 %34 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %33, align 8 %35 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %32, i32 0, i32 1 %36 = load i32*, i32** %35, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* byval align 8 %agg.tmp, %"struct.thrust::pair"* %29, i32* %31, i64 %22, %"struct.thrust::pair"* %34, i32* %36) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured) #5 %37 = bitcast i64* %heap_size to i8* call void @llvm.lifetime.end(i64 8, i8* %37) #5 %38 = bitcast i64* %groupsize to i8* call void @llvm.lifetime.end(i64 8, i8* %38) #5 br label %if.end if.else: ; preds = %entry %39 = bitcast i64* %groupsize8 to i8* call void @llvm.lifetime.start(i64 8, i8* %39) #5 store i64 128, i64* %groupsize8, align 8, !tbaa !13 %40 = bitcast i64* %grainsize to i8* call void @llvm.lifetime.start(i64 8, i8* %40) #5 store i64 5, i64* %grainsize, align 8, !tbaa !13 %41 = bitcast i64* %tile_size to i8* call void @llvm.lifetime.start(i64 8, i8* %41) #5 store i64 640, i64* %tile_size, align 8, !tbaa !13 %42 = bitcast i64* %num_tiles to i8* call void @llvm.lifetime.start(i64 8, i8* %42) #5 %43 = load i64, i64* %n, align 8, !tbaa !13 %add = add nsw i64 %43, 640 %sub = sub nsw i64 %add, 1 %div = sdiv i64 %sub, 640 store i64 %div, i64* %num_tiles, align 8, !tbaa !13 %44 = bitcast i64* %subscription to i8* call void @llvm.lifetime.start(i64 8, i8* %44) #5 store i64 20, i64* %subscription, align 8, !tbaa !13 %45 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.start(i64 8, i8* %45) #5 %46 = load i64, i64* %subscription, align 8, !tbaa !13 %call9 = call i32 @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE20hardware_concurrencyEv() %conv = sext i32 %call9 to i64 %mul = mul nsw i64 %46, %conv store i64 %mul, i64* %ref.tmp, align 8, !tbaa !13 %call10 = call i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %ref.tmp, i64* dereferenceable(8) %num_tiles) store i64 %call10, i64* %num_groups, align 8, !tbaa !13 %47 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %decomp to i8* call void @llvm.lifetime.start(i64 40, i8* %47) #5 %48 = load i64, i64* %n, align 8, !tbaa !13 %49 = load i64, i64* %num_groups, align 8, !tbaa !13 call void @_ZN6thrust6system4cuda6detail21aligned_decompositionIlEC2Elll(%"class.thrust::system::cuda::detail::aligned_decomposition"* %decomp, i64 %48, i64 %49, i64 640) %50 = bitcast %"class.thrust::detail::temporary_array.302"* %carries to i8* call void @llvm.lifetime.start(i64 24, i8* %50) #5 %51 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %52 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %51 to %"struct.thrust::execution_policy.120"* %53 = load i64, i64* %num_groups, align 8, !tbaa !13 call void @_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EEm(%"class.thrust::detail::temporary_array.302"* %carries, %"struct.thrust::execution_policy.120"* dereferenceable(1) %52, i64 %53) %54 = bitcast i64* %heap_size11 to i8* call void @llvm.lifetime.start(i64 8, i8* %54) #5 store i64 1024, i64* %heap_size11, align 8, !tbaa !13 %55 = load i64, i64* %num_groups, align 8, !tbaa !13 %56 = load i64, i64* %heap_size11, align 8, !tbaa !13 %57 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 invoke void @_ZN6thrust6system4cuda6detail5bulk_4gridILm128ELm5EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* sret %agg.tmp13, i64 %55, i64 %56, %struct.CUstream_st* %57) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.else %58 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %agg.tmp15 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %58, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %59 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp16 to i8* %60 = bitcast %"class.thrust::zip_iterator.221"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %59, i8* %60, i64 16, i32 8, i1 false) %61 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %agg.tmp17 to i8* %62 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %decomp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %61, i8* %62, i64 40, i32 8, i1 false), !tbaa.struct !220 %63 = bitcast %"class.thrust::detail::temporary_array.302"* %carries to %"class.thrust::detail::contiguous_storage.303"* %call20 = invoke %"class.thrust::tuple.314"* @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.303"* %63) to label %invoke.cont19 unwind label %lpad invoke.cont19: ; preds = %invoke.cont %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp18, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive22, i32 0, i32 0 store %"class.thrust::tuple.314"* %call20, %"class.thrust::tuple.314"** %coerce.dive23, align 8 %64 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %agg.tmp24 to i8* %65 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %binary_op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %64, i8* %65, i64 1, i32 1, i1 false), !tbaa.struct !41 %66 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp16 to { %"struct.thrust::pair"*, i32* }* %67 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %66, i32 0, i32 0 %68 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %67, align 8 %69 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %66, i32 0, i32 1 %70 = load i32*, i32** %69, align 8 %coerce.dive25 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp18, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive27, i32 0, i32 0 %71 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive28, align 8 invoke void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail16accumulate_tilesENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured12, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* byval align 8 %agg.tmp13, %"struct.thrust::pair"* %68, i32* %70, %"class.thrust::system::cuda::detail::aligned_decomposition"* byval align 8 %agg.tmp17, %"class.thrust::tuple.314"* %71) to label %invoke.cont29 unwind label %lpad invoke.cont29: ; preds = %invoke.cont19 call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured12) #5 %72 = bitcast i64* %groupsize2 to i8* call void @llvm.lifetime.start(i64 8, i8* %72) #5 store i64 256, i64* %groupsize2, align 8, !tbaa !13 %73 = bitcast i64* %grainsize2 to i8* call void @llvm.lifetime.start(i64 8, i8* %73) #5 store i64 3, i64* %grainsize2, align 8, !tbaa !13 store i64 6144, i64* %heap_size11, align 8, !tbaa !13 %74 = load i64, i64* %heap_size11, align 8, !tbaa !13 %75 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 invoke void @_ZN6thrust6system4cuda6detail5bulk_4gridILm256ELm3EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* sret %agg.tmp31, i64 1, i64 %74, %struct.CUstream_st* %75) to label %invoke.cont33 unwind label %lpad32 invoke.cont33: ; preds = %invoke.cont29 %76 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %agg.tmp35 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %76, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %77 = bitcast %"class.thrust::detail::temporary_array.302"* %carries to %"class.thrust::detail::contiguous_storage.303"* %call38 = invoke %"class.thrust::tuple.314"* @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.303"* %77) to label %invoke.cont37 unwind label %lpad32 invoke.cont37: ; preds = %invoke.cont33 %coerce.dive39 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp36, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive41, i32 0, i32 0 store %"class.thrust::tuple.314"* %call38, %"class.thrust::tuple.314"** %coerce.dive42, align 8 %78 = load i64, i64* %num_groups, align 8, !tbaa !13 %79 = bitcast %"class.thrust::detail::temporary_array.302"* %carries to %"class.thrust::detail::contiguous_storage.303"* %call45 = invoke %"class.thrust::tuple.314"* @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.303"* %79) to label %invoke.cont44 unwind label %lpad32 invoke.cont44: ; preds = %invoke.cont37 %coerce.dive46 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp43, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive48, i32 0, i32 0 store %"class.thrust::tuple.314"* %call45, %"class.thrust::tuple.314"** %coerce.dive49, align 8 %80 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %agg.tmp50 to i8* %81 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %binary_op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %80, i8* %81, i64 1, i32 1, i1 false), !tbaa.struct !41 %coerce.dive51 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp36, i32 0, i32 0 %coerce.dive52 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive51, i32 0, i32 0 %coerce.dive53 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive52, i32 0, i32 0 %coerce.dive54 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive53, i32 0, i32 0 %82 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive54, align 8 %coerce.dive55 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp43, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive55, i32 0, i32 0 %coerce.dive57 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive56, i32 0, i32 0 %coerce.dive58 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive57, i32 0, i32 0 %83 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive58, align 8 invoke void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured30, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* byval align 8 %agg.tmp31, %"class.thrust::tuple.314"* %82, i64 %78, %"class.thrust::tuple.314"* %83) to label %invoke.cont59 unwind label %lpad32 invoke.cont59: ; preds = %invoke.cont44 call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured30) #5 store i64 5120, i64* %heap_size11, align 8, !tbaa !13 %84 = load i64, i64* %num_groups, align 8, !tbaa !13 %85 = load i64, i64* %heap_size11, align 8, !tbaa !13 %86 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 invoke void @_ZN6thrust6system4cuda6detail5bulk_4gridILm128ELm5EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* sret %agg.tmp61, i64 %84, i64 %85, %struct.CUstream_st* %86) to label %invoke.cont62 unwind label %lpad32 invoke.cont62: ; preds = %invoke.cont59 %87 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %agg.tmp64 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %87, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %88 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp65 to i8* %89 = bitcast %"class.thrust::zip_iterator.221"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %88, i8* %89, i64 16, i32 8, i1 false) %90 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %agg.tmp66 to i8* %91 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %decomp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %90, i8* %91, i64 40, i32 8, i1 false), !tbaa.struct !220 %92 = bitcast %"class.thrust::detail::temporary_array.302"* %carries to %"class.thrust::detail::contiguous_storage.303"* %call69 = invoke %"class.thrust::tuple.314"* @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.303"* %92) to label %invoke.cont68 unwind label %lpad32 invoke.cont68: ; preds = %invoke.cont62 %coerce.dive70 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp67, i32 0, i32 0 %coerce.dive71 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive70, i32 0, i32 0 %coerce.dive72 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive71, i32 0, i32 0 %coerce.dive73 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive72, i32 0, i32 0 store %"class.thrust::tuple.314"* %call69, %"class.thrust::tuple.314"** %coerce.dive73, align 8 %93 = bitcast %"class.thrust::zip_iterator.216"* %agg.tmp74 to i8* %94 = bitcast %"class.thrust::zip_iterator.216"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %93, i8* %94, i64 16, i32 8, i1 false) %95 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %agg.tmp75 to i8* %96 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %binary_op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %95, i8* %96, i64 1, i32 1, i1 false), !tbaa.struct !41 %97 = bitcast %"class.thrust::zip_iterator.221"* %agg.tmp65 to { %"struct.thrust::pair"*, i32* }* %98 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %97, i32 0, i32 0 %99 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %98, align 8 %100 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %97, i32 0, i32 1 %101 = load i32*, i32** %100, align 8 %coerce.dive76 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp67, i32 0, i32 0 %coerce.dive77 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive76, i32 0, i32 0 %coerce.dive78 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive77, i32 0, i32 0 %coerce.dive79 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive78, i32 0, i32 0 %102 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive79, align 8 %103 = bitcast %"class.thrust::zip_iterator.216"* %agg.tmp74 to { %"struct.thrust::pair"*, i32* }* %104 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %103, i32 0, i32 0 %105 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %104, align 8 %106 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %103, i32 0, i32 1 %107 = load i32*, i32** %106, align 8 invoke void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail19inclusive_downsweepENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_T6_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured60, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* byval align 8 %agg.tmp61, %"struct.thrust::pair"* %99, i32* %101, %"class.thrust::system::cuda::detail::aligned_decomposition"* byval align 8 %agg.tmp66, %"class.thrust::tuple.314"* %102, %"struct.thrust::pair"* %105, i32* %107) to label %invoke.cont80 unwind label %lpad32 invoke.cont80: ; preds = %invoke.cont68 call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured60) #5 %108 = bitcast i64* %grainsize2 to i8* call void @llvm.lifetime.end(i64 8, i8* %108) #5 %109 = bitcast i64* %groupsize2 to i8* call void @llvm.lifetime.end(i64 8, i8* %109) #5 %110 = bitcast i64* %heap_size11 to i8* call void @llvm.lifetime.end(i64 8, i8* %110) #5 call void @_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.302"* %carries) #5 %111 = bitcast %"class.thrust::detail::temporary_array.302"* %carries to i8* call void @llvm.lifetime.end(i64 24, i8* %111) #5 %112 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %decomp to i8* call void @llvm.lifetime.end(i64 40, i8* %112) #5 %113 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %113) #5 %114 = bitcast i64* %subscription to i8* call void @llvm.lifetime.end(i64 8, i8* %114) #5 %115 = bitcast i64* %num_tiles to i8* call void @llvm.lifetime.end(i64 8, i8* %115) #5 %116 = bitcast i64* %tile_size to i8* call void @llvm.lifetime.end(i64 8, i8* %116) #5 %117 = bitcast i64* %grainsize to i8* call void @llvm.lifetime.end(i64 8, i8* %117) #5 %118 = bitcast i64* %groupsize8 to i8* call void @llvm.lifetime.end(i64 8, i8* %118) #5 br label %if.end lpad: ; preds = %invoke.cont19, %invoke.cont, %if.else %119 = landingpad { i8*, i32 } cleanup %120 = extractvalue { i8*, i32 } %119, 0 store i8* %120, i8** %exn.slot, align 8 %121 = extractvalue { i8*, i32 } %119, 1 store i32 %121, i32* %ehselector.slot, align 4 br label %ehcleanup lpad32: ; preds = %invoke.cont68, %invoke.cont62, %invoke.cont59, %invoke.cont44, %invoke.cont37, %invoke.cont33, %invoke.cont29 %122 = landingpad { i8*, i32 } cleanup %123 = extractvalue { i8*, i32 } %122, 0 store i8* %123, i8** %exn.slot, align 8 %124 = extractvalue { i8*, i32 } %122, 1 store i32 %124, i32* %ehselector.slot, align 4 %125 = bitcast i64* %grainsize2 to i8* call void @llvm.lifetime.end(i64 8, i8* %125) #5 %126 = bitcast i64* %groupsize2 to i8* call void @llvm.lifetime.end(i64 8, i8* %126) #5 br label %ehcleanup ehcleanup: ; preds = %lpad32, %lpad %127 = bitcast i64* %heap_size11 to i8* call void @llvm.lifetime.end(i64 8, i8* %127) #5 call void @_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.302"* %carries) #5 %128 = bitcast %"class.thrust::detail::temporary_array.302"* %carries to i8* call void @llvm.lifetime.end(i64 24, i8* %128) #5 %129 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %decomp to i8* call void @llvm.lifetime.end(i64 40, i8* %129) #5 %130 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %130) #5 %131 = bitcast i64* %subscription to i8* call void @llvm.lifetime.end(i64 8, i8* %131) #5 %132 = bitcast i64* %num_tiles to i8* call void @llvm.lifetime.end(i64 8, i8* %132) #5 %133 = bitcast i64* %tile_size to i8* call void @llvm.lifetime.end(i64 8, i8* %133) #5 %134 = bitcast i64* %grainsize to i8* call void @llvm.lifetime.end(i64 8, i8* %134) #5 %135 = bitcast i64* %groupsize8 to i8* call void @llvm.lifetime.end(i64 8, i8* %135) #5 %136 = bitcast i64* %threshold_of_parallelism to i8* call void @llvm.lifetime.end(i64 8, i8* %136) #5 %137 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %137) #5 %138 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %138) #5 br label %eh.resume if.end: ; preds = %invoke.cont80, %if.then %139 = bitcast %"class.thrust::zip_iterator.216"* %result to %"class.thrust::iterator_facade.217"* %140 = load i64, i64* %n, align 8, !tbaa !13 %call90 = call { %"struct.thrust::pair"*, i32* } @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEET_RKNS_15iterator_facadeIST_T0_T1_T2_T3_T4_EENST_15difference_typeE(%"class.thrust::iterator_facade.217"* dereferenceable(1) %139, i64 %140) %coerce.dive91 = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive92 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive91, i32 0, i32 0 %141 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive92 to { %"struct.thrust::pair"*, i32* }* %142 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %141, i32 0, i32 0 %143 = extractvalue { %"struct.thrust::pair"*, i32* } %call90, 0 store %"struct.thrust::pair"* %143, %"struct.thrust::pair"** %142, align 8 %144 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %141, i32 0, i32 1 %145 = extractvalue { %"struct.thrust::pair"*, i32* } %call90, 1 store i32* %145, i32** %144, align 8 %146 = bitcast i64* %threshold_of_parallelism to i8* call void @llvm.lifetime.end(i64 8, i8* %146) #5 %147 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %147) #5 %148 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %148) #5 %coerce.dive96 = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive97 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive96, i32 0, i32 0 %149 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive97 to { %"struct.thrust::pair"*, i32* }* %150 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %149, align 8 ret { %"struct.thrust::pair"*, i32* } %150 eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val98 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val98 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElSJ_SK_SB_SL_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_(%"class.thrust::iterator_facade.222"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.222"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.222"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.222"*, align 8 store %"class.thrust::iterator_facade.222"* %lhs, %"class.thrust::iterator_facade.222"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.222"* %rhs, %"class.thrust::iterator_facade.222"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.222"*, %"class.thrust::iterator_facade.222"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.222"* %0 to %"class.thrust::zip_iterator.221"* %2 = load %"class.thrust::iterator_facade.222"*, %"class.thrust::iterator_facade.222"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.222"* %2 to %"class.thrust::zip_iterator.221"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENS4_20distance_from_resultIT_T0_E4typeERKSM_RKSN_(%"class.thrust::zip_iterator.221"* dereferenceable(16) %1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce0, i32* %arg2.coerce1, i64 %arg3, %"struct.thrust::pair"* %arg4.coerce0, i32* %arg4.coerce1) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", align 1 %arg2 = alloca %"class.thrust::zip_iterator.221", align 8 %arg4 = alloca %"class.thrust::zip_iterator.216", align 8 %arg5 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %arg3.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.295", align 8 %agg.tmp3 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %0 = bitcast %"class.thrust::zip_iterator.221"* %arg2 to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %arg2.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::zip_iterator.216"* %arg4 to { %"struct.thrust::pair"*, i32* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 0 store %"struct.thrust::pair"* %arg4.coerce0, %"struct.thrust::pair"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 1 store i32* %arg4.coerce1, i32** %5, align 8 store i64 %arg3, i64* %arg3.addr, align 8, !tbaa !13 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 40, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* sret %agg.tmp3, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %arg2, i64* dereferenceable(8) %arg3.addr, %"class.thrust::zip_iterator.216"* dereferenceable(16) %arg4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %arg5) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %agg.tmp3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_4gridILm512ELm3EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* noalias sret %agg.result, i64 %num_groups, i64 %heap_size, %struct.CUstream_st* %stream) #0 comdat { entry: %num_groups.addr = alloca i64, align 8 %heap_size.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %tmp = alloca { i64, i32 }, align 8 %agg.tmp.coerce = alloca { i64, i32 }, align 4 store i64 %num_groups, i64* %num_groups.addr, align 8, !tbaa !13 store i64 %heap_size, i64* %heap_size.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %1 = load i64, i64* %heap_size.addr, align 8, !tbaa !13 %call = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_3conILm512ELm3EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm(i64 %1) store { i64, i32 } %call, { i64, i32 }* %tmp, align 8 %2 = bitcast { i64, i32 }* %tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %2, i64 12, i32 4, i1 false) %4 = load i64, i64* %num_groups.addr, align 8, !tbaa !13 %5 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %8 = load i64, i64* %7, align 4 %9 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %10 = load i32, i32* %9, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* sret %agg.result, %struct.CUstream_st* %0, i64 %8, i32 %10, i64 %4) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE20hardware_concurrencyEv() #8 comdat align 2 { entry: %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %tmp) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %tmp, i32 0, i32 5 %0 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 ret i32 %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail21aligned_decompositionIlEC2Elll(%"class.thrust::system::cuda::detail::aligned_decomposition"* %this, i64 %n, i64 %num_partitions, i64 %aligned_size) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %n.addr = alloca i64, align 8 %num_partitions.addr = alloca i64, align 8 %aligned_size.addr = alloca i64, align 8 %num_tiles = alloca i64, align 8 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %this, %"class.thrust::system::cuda::detail::aligned_decomposition"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i64 %num_partitions, i64* %num_partitions.addr, align 8, !tbaa !13 store i64 %aligned_size, i64* %aligned_size.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %this.addr, align 8 %m_n = getelementptr inbounds %"class.thrust::system::cuda::detail::aligned_decomposition", %"class.thrust::system::cuda::detail::aligned_decomposition"* %this1, i32 0, i32 0 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 store i64 %0, i64* %m_n, align 8, !tbaa !221 %m_num_partitions = getelementptr inbounds %"class.thrust::system::cuda::detail::aligned_decomposition", %"class.thrust::system::cuda::detail::aligned_decomposition"* %this1, i32 0, i32 1 %1 = load i64, i64* %num_partitions.addr, align 8, !tbaa !13 store i64 %1, i64* %m_num_partitions, align 8, !tbaa !223 %m_tile_size = getelementptr inbounds %"class.thrust::system::cuda::detail::aligned_decomposition", %"class.thrust::system::cuda::detail::aligned_decomposition"* %this1, i32 0, i32 3 %2 = load i64, i64* %aligned_size.addr, align 8, !tbaa !13 store i64 %2, i64* %m_tile_size, align 8, !tbaa !224 %3 = bitcast i64* %num_tiles to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_tile_size2 = getelementptr inbounds %"class.thrust::system::cuda::detail::aligned_decomposition", %"class.thrust::system::cuda::detail::aligned_decomposition"* %this1, i32 0, i32 3 %5 = load i64, i64* %m_tile_size2, align 8, !tbaa !224 %add = add nsw i64 %4, %5 %sub = sub nsw i64 %add, 1 %m_tile_size3 = getelementptr inbounds %"class.thrust::system::cuda::detail::aligned_decomposition", %"class.thrust::system::cuda::detail::aligned_decomposition"* %this1, i32 0, i32 3 %6 = load i64, i64* %m_tile_size3, align 8, !tbaa !224 %div = sdiv i64 %sub, %6 store i64 %div, i64* %num_tiles, align 8, !tbaa !13 %7 = load i64, i64* %num_tiles, align 8, !tbaa !13 %call = call i64 @_ZNK6thrust6system4cuda6detail21aligned_decompositionIlE4sizeEv(%"class.thrust::system::cuda::detail::aligned_decomposition"* %this1) %div4 = sdiv i64 %7, %call %m_num_tiles_per_partition = getelementptr inbounds %"class.thrust::system::cuda::detail::aligned_decomposition", %"class.thrust::system::cuda::detail::aligned_decomposition"* %this1, i32 0, i32 2 store i64 %div4, i64* %m_num_tiles_per_partition, align 8, !tbaa !225 %8 = load i64, i64* %num_tiles, align 8, !tbaa !13 %call5 = call i64 @_ZNK6thrust6system4cuda6detail21aligned_decompositionIlE4sizeEv(%"class.thrust::system::cuda::detail::aligned_decomposition"* %this1) %rem = srem i64 %8, %call5 %m_last_partial_tile_size = getelementptr inbounds %"class.thrust::system::cuda::detail::aligned_decomposition", %"class.thrust::system::cuda::detail::aligned_decomposition"* %this1, i32 0, i32 4 store i64 %rem, i64* %m_last_partial_tile_size, align 8, !tbaa !226 %9 = bitcast i64* %num_tiles to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EEm(%"class.thrust::detail::temporary_array.302"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system, i64 %n) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_array.302"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::detail::no_throw_allocator.304", align 8 %ref.tmp2 = alloca %"class.thrust::detail::temporary_allocator.305", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::temporary_array.302"* %this, %"class.thrust::detail::temporary_array.302"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %system, %"struct.thrust::execution_policy.120"** %system.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::temporary_array.302"*, %"class.thrust::detail::temporary_array.302"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array.302"* %this1 to %"class.thrust::detail::contiguous_storage.303"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %2 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EE(%"class.thrust::detail::temporary_allocator.305"* %ref.tmp2, %"struct.thrust::execution_policy.120"* dereferenceable(1) %2) invoke void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSC_(%"struct.thrust::detail::no_throw_allocator.304"* %ref.tmp, %"class.thrust::detail::temporary_allocator.305"* dereferenceable(8) %ref.tmp2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEEC2EmRKSE_(%"class.thrust::detail::contiguous_storage.303"* %0, i64 %1, %"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont call void bitcast (void (%"class.thrust::detail::tagged_allocator.306"*)* @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.304"*)*)(%"struct.thrust::detail::no_throw_allocator.304"* %ref.tmp) #5 call void bitcast (void (%"class.thrust::detail::tagged_allocator.306"*)* @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev to void (%"class.thrust::detail::temporary_allocator.305"*)*)(%"class.thrust::detail::temporary_allocator.305"* %ref.tmp2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS0_15temporary_arrayIS7_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_(%"class.thrust::detail::temporary_array.302"* dereferenceable(24) %this1, i64 %3) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %invoke.cont4 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator.306"*)* @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.304"*)*)(%"struct.thrust::detail::no_throw_allocator.304"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void bitcast (void (%"class.thrust::detail::tagged_allocator.306"*)* @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev to void (%"class.thrust::detail::temporary_allocator.305"*)*)(%"class.thrust::detail::temporary_allocator.305"* %ref.tmp2) #5 br label %eh.resume lpad5: ; preds = %invoke.cont4 %10 = landingpad { i8*, i32 } cleanup %11 = extractvalue { i8*, i32 } %10, 0 store i8* %11, i8** %exn.slot, align 8 %12 = extractvalue { i8*, i32 } %10, 1 store i32 %12, i32* %ehselector.slot, align 4 %13 = bitcast %"class.thrust::detail::temporary_array.302"* %this1 to %"class.thrust::detail::contiguous_storage.303"* call void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.303"* %13) #5 br label %eh.resume eh.resume: ; preds = %lpad5, %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val8 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail16accumulate_tilesENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce0, i32* %arg2.coerce1, %"class.thrust::system::cuda::detail::aligned_decomposition"* byval align 8 %arg3, %"class.thrust::tuple.314"* %arg4.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", align 1 %arg2 = alloca %"class.thrust::zip_iterator.221", align 8 %arg4 = alloca %"class.thrust::detail::normal_iterator.308", align 8 %arg5 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.316", align 8 %agg.tmp6 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", align 8 %agg.tmp7 = alloca %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles", align 1 %0 = bitcast %"class.thrust::zip_iterator.221"* %arg2 to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %arg2.coerce1, i32** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %arg4, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 store %"class.thrust::tuple.314"* %arg4.coerce, %"class.thrust::tuple.314"** %coerce.dive4, align 8 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %agg.tmp to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 40, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16accumulate_tilesENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* sret %agg.tmp6, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %arg2, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %arg3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %arg4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %arg5) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %agg.tmp6) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_4gridILm128ELm5EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* noalias sret %agg.result, i64 %num_groups, i64 %heap_size, %struct.CUstream_st* %stream) #0 comdat { entry: %num_groups.addr = alloca i64, align 8 %heap_size.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %tmp = alloca { i64, i32 }, align 8 %agg.tmp.coerce = alloca { i64, i32 }, align 4 store i64 %num_groups, i64* %num_groups.addr, align 8, !tbaa !13 store i64 %heap_size, i64* %heap_size.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %1 = load i64, i64* %heap_size.addr, align 8, !tbaa !13 %call = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_3conILm128ELm5EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm(i64 %1) store { i64, i32 } %call, { i64, i32 }* %tmp, align 8 %2 = bitcast { i64, i32 }* %tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %2, i64 12, i32 4, i1 false) %4 = load i64, i64* %num_groups.addr, align 8, !tbaa !13 %5 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %8 = load i64, i64* %7, align 4 %9 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %10 = load i32, i32* %9, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* sret %agg.result, %struct.CUstream_st* %0, i64 %8, i32 %10, i64 %4) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.303"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.308", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.303"*, align 8 store %"class.thrust::detail::contiguous_storage.303"* %this, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.303"*, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.308"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.308"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %2 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 ret %"class.thrust::tuple.314"* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEENS2_11scan_detail16inclusive_scan_nENS3_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* byval align 8 %g, %"class.thrust::tuple.314"* %arg2.coerce, i64 %arg3, %"class.thrust::tuple.314"* %arg4.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", align 1 %arg2 = alloca %"class.thrust::detail::normal_iterator.308", align 8 %arg4 = alloca %"class.thrust::detail::normal_iterator.308", align 8 %arg5 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %arg3.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.323", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", align 8 %agg.tmp11 = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 store %"class.thrust::tuple.314"* %arg2.coerce, %"class.thrust::tuple.314"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %arg4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive7, i32 0, i32 0 store %"class.thrust::tuple.314"* %arg4.coerce, %"class.thrust::tuple.314"** %coerce.dive8, align 8 store i64 %arg3, i64* %arg3.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 40, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEEEENS4_7closureIT_NSD_IT0_T1_T2_T3_T4_SG_SG_SG_SG_SG_EEEEST_RKSU_RKSV_RKSW_RKSX_RKSY_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* sret %agg.tmp10, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %arg1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %arg2, i64* dereferenceable(8) %arg3.addr, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %arg4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %arg5) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %agg.tmp10) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_4gridILm256ELm3EEENS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEELm0EEEEEmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* noalias sret %agg.result, i64 %num_groups, i64 %heap_size, %struct.CUstream_st* %stream) #0 comdat { entry: %num_groups.addr = alloca i64, align 8 %heap_size.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %tmp = alloca { i64, i32 }, align 8 %agg.tmp.coerce = alloca { i64, i32 }, align 4 store i64 %num_groups, i64* %num_groups.addr, align 8, !tbaa !13 store i64 %heap_size, i64* %heap_size.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %1 = load i64, i64* %heap_size.addr, align 8, !tbaa !13 %call = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_3conILm256ELm3EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm(i64 %1) store { i64, i32 } %call, { i64, i32 }* %tmp, align 8 %2 = bitcast { i64, i32 }* %tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %2, i64 12, i32 4, i1 false) %4 = load i64, i64* %num_groups.addr, align 8, !tbaa !13 %5 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %8 = load i64, i64* %7, align 4 %9 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %10 = load i32, i32* %9, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* sret %agg.result, %struct.CUstream_st* %0, i64 %8, i32 %10, i64 %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEENS2_11scan_detail19inclusive_downsweepENS3_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSJ_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSI_INSJ_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEEEENS3_6futureIvEET_T0_T1_T2_T3_T4_T5_T6_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce0, i32* %arg2.coerce1, %"class.thrust::system::cuda::detail::aligned_decomposition"* byval align 8 %arg3, %"class.thrust::tuple.314"* %arg4.coerce, %"struct.thrust::pair"* %arg5.coerce0, i32* %arg5.coerce1) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27", align 1 %arg2 = alloca %"class.thrust::zip_iterator.221", align 8 %arg4 = alloca %"class.thrust::detail::normal_iterator.308", align 8 %arg5 = alloca %"class.thrust::zip_iterator.216", align 8 %arg6 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor", align 1 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.316", align 8 %agg.tmp6 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", align 8 %agg.tmp7 = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep", align 1 %0 = bitcast %"class.thrust::zip_iterator.221"* %arg2 to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %arg2.coerce1, i32** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %arg4, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 store %"class.thrust::tuple.314"* %arg4.coerce, %"class.thrust::tuple.314"** %coerce.dive4, align 8 %3 = bitcast %"class.thrust::zip_iterator.216"* %arg5 to { %"struct.thrust::pair"*, i32* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 0 store %"struct.thrust::pair"* %arg5.coerce0, %"struct.thrust::pair"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %3, i32 0, i32 1 store i32* %arg5.coerce1, i32** %5, align 8 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 40, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail19inclusive_downsweepENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_T5_SN_SN_SN_SN_EEEES17_RKS18_RKS19_RKS1A_RKS1B_RKS1C_RKS1D_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* sret %agg.tmp6, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %arg2, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %arg3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %arg4, %"class.thrust::zip_iterator.216"* dereferenceable(16) %arg5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %arg6) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %agg.tmp6) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.302"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_array.302"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.308", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.308", align 8 store %"class.thrust::detail::temporary_array.302"* %this, %"class.thrust::detail::temporary_array.302"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_array.302"*, %"class.thrust::detail::temporary_array.302"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array.302"* %this1 to %"class.thrust::detail::contiguous_storage.303"* %1 = bitcast %"class.thrust::detail::temporary_array.302"* %this1 to %"class.thrust::detail::contiguous_storage.303"* %call = invoke %"class.thrust::tuple.314"* @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.303"* %1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 store %"class.thrust::tuple.314"* %call, %"class.thrust::tuple.314"** %coerce.dive4, align 8 %2 = bitcast %"class.thrust::detail::temporary_array.302"* %this1 to %"class.thrust::detail::contiguous_storage.303"* %call7 = invoke %"class.thrust::tuple.314"* @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE3endEv(%"class.thrust::detail::contiguous_storage.303"* %2) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive10, i32 0, i32 0 store %"class.thrust::tuple.314"* %call7, %"class.thrust::tuple.314"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive14, i32 0, i32 0 %3 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %agg.tmp5, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive18, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive19, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS6_SC_NS_11use_defaultESI_EEEESK_(%"class.thrust::detail::contiguous_storage.303"* %0, %"class.thrust::tuple.314"* %3, %"class.thrust::tuple.314"* %4) to label %invoke.cont20 unwind label %lpad invoke.cont20: ; preds = %invoke.cont6 %5 = bitcast %"class.thrust::detail::temporary_array.302"* %this1 to %"class.thrust::detail::contiguous_storage.303"* call void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.303"* %5) #5 ret void lpad: ; preds = %invoke.cont6, %invoke.cont, %entry %6 = landingpad { i8*, i32 } catch i8* null %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 %9 = bitcast %"class.thrust::detail::temporary_array.302"* %this1 to %"class.thrust::detail::contiguous_storage.303"* call void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.303"* %9) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair"*, i32* } @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEET_RKNS_15iterator_facadeIST_T0_T1_T2_T3_T4_EENST_15difference_typeE(%"class.thrust::iterator_facade.217"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.216", align 8 %i.addr = alloca %"class.thrust::iterator_facade.217"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::zip_iterator.216", align 8 store %"class.thrust::iterator_facade.217"* %i, %"class.thrust::iterator_facade.217"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::zip_iterator.216"* %tmp to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.217"*, %"class.thrust::iterator_facade.217"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.217"* %1 to %"class.thrust::zip_iterator.216"* %3 = bitcast %"class.thrust::zip_iterator.216"* %tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.216"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 1, i1 false) %5 = bitcast %"class.thrust::zip_iterator.216"* %tmp to %"class.thrust::iterator_facade.217"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(16) %"class.thrust::zip_iterator.216"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEpLEl(%"class.thrust::iterator_facade.217"* %5, i64 %6) %7 = bitcast %"class.thrust::zip_iterator.216"* %retval to i8* %8 = bitcast %"class.thrust::zip_iterator.216"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 16, i32 8, i1 false) %9 = bitcast %"class.thrust::zip_iterator.216"* %tmp to i8* call void @llvm.lifetime.end(i64 16, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.218", %"class.thrust::tuple.218"* %coerce.dive, i32 0, i32 0 %10 = bitcast %"struct.thrust::detail::cons.219"* %coerce.dive1 to { %"struct.thrust::pair"*, i32* }* %11 = load { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %10, align 8 ret { %"struct.thrust::pair"*, i32* } %11 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENS4_20distance_from_resultIT_T0_E4typeERKSM_RKSN_(%"class.thrust::zip_iterator.221"* dereferenceable(16) %f1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::zip_iterator.221"* %f1, %"class.thrust::zip_iterator.221"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %f2, %"class.thrust::zip_iterator.221"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENT_15difference_typeERKSL_RKT0_NS4_17integral_constantIbLb1EEE(%"class.thrust::zip_iterator.221"* dereferenceable(16) %0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEESK_EENT_15difference_typeERKSL_RKT0_NS4_17integral_constantIbLb1EEE(%"class.thrust::zip_iterator.221"* dereferenceable(16) %f1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 store %"class.thrust::zip_iterator.221"* %f1, %"class.thrust::zip_iterator.221"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %f2, %"class.thrust::zip_iterator.221"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %f1.addr, align 8 %2 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %f2.addr, align 8 %call = call i64 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE11distance_toISH_EElRKNS0_IT_EE(%"class.thrust::zip_iterator.221"* %1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %2) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE11distance_toISH_EElRKNS0_IT_EE(%"class.thrust::zip_iterator.221"* %this, %"class.thrust::zip_iterator.221"* dereferenceable(16) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 store %"class.thrust::zip_iterator.221"* %this, %"class.thrust::zip_iterator.221"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.221"* %other, %"class.thrust::zip_iterator.221"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %this.addr, align 8 %0 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %other.addr, align 8 %call = call dereferenceable(16) %"class.thrust::tuple.223"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.221"* %0) %1 = bitcast %"class.thrust::tuple.223"* %call to %"struct.thrust::detail::cons.224"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_4consINS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSD_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.224"* dereferenceable(16) %1) %2 = bitcast %"class.thrust::detail::normal_iterator.212"* %call2 to %"class.thrust::iterator_facade.214"* %call3 = call dereferenceable(16) %"class.thrust::tuple.223"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.221"* %this1) %3 = bitcast %"class.thrust::tuple.223"* %call3 to %"struct.thrust::detail::cons.224"* %call4 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_4consINS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSD_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.224"* dereferenceable(16) %3) %4 = bitcast %"class.thrust::detail::normal_iterator.212"* %call4 to %"class.thrust::iterator_facade.214"* %call5 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_(%"class.thrust::iterator_facade.214"* dereferenceable(1) %2, %"class.thrust::iterator_facade.214"* dereferenceable(1) %4) ret i64 %call5 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_(%"class.thrust::iterator_facade.214"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.214"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.214"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.214"*, align 8 store %"class.thrust::iterator_facade.214"* %lhs, %"class.thrust::iterator_facade.214"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.214"* %rhs, %"class.thrust::iterator_facade.214"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.214"*, %"class.thrust::iterator_facade.214"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.214"* %0 to %"class.thrust::detail::normal_iterator.212"* %2 = load %"class.thrust::iterator_facade.214"*, %"class.thrust::iterator_facade.214"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.214"* %2 to %"class.thrust::detail::normal_iterator.212"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_4consINS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSD_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.224"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.224"*, align 8 store %"struct.thrust::detail::cons.224"* %c, %"struct.thrust::detail::cons.224"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.224"*, %"struct.thrust::detail::cons.224"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS0_4consINS4_INS5_IjSB_SC_SC_EEEENS_9null_typeEEEEET_RKNSH_IT0_T1_EE(%"struct.thrust::detail::cons.224"* dereferenceable(16) %0) ret %"class.thrust::detail::normal_iterator.212"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::tuple.223"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.221"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 store %"class.thrust::zip_iterator.221"* %this, %"class.thrust::zip_iterator.221"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.221", %"class.thrust::zip_iterator.221"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.223"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.212"* %f1, %"class.thrust::detail::normal_iterator.212"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.212"* %f2, %"class.thrust::detail::normal_iterator.212"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 store %"class.thrust::detail::normal_iterator.212"* %f1, %"class.thrust::detail::normal_iterator.212"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.212"* %f2, %"class.thrust::detail::normal_iterator.212"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.212"* %1 to %"class.thrust::iterator_adaptor.213"* %3 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.212"* %3 to %"class.thrust::iterator_adaptor.213"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.213"* %2, %"class.thrust::iterator_adaptor.213"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.213"* %this, %"class.thrust::iterator_adaptor.213"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.213"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.213"*, align 8 store %"class.thrust::iterator_adaptor.213"* %this, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.213"* %y, %"class.thrust::iterator_adaptor.213"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.213"*, %"class.thrust::iterator_adaptor.213"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.213"*, %"class.thrust::iterator_adaptor.213"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.141"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.213"* %0) %1 = bitcast %"class.thrust::pointer.141"* %call to %"class.thrust::iterator_facade.143"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %this1, i32 0, i32 0 %2 = bitcast %"class.thrust::pointer.141"* %m_iterator to %"class.thrust::iterator_facade.143"* %call2 = call i64 @_ZN6thrustmiINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.143"* dereferenceable(1) %1, %"class.thrust::iterator_facade.143"* dereferenceable(1) %2) ret i64 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.143"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.143"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.143"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.143"*, align 8 store %"class.thrust::iterator_facade.143"* %lhs, %"class.thrust::iterator_facade.143"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.143"* %rhs, %"class.thrust::iterator_facade.143"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.143"*, %"class.thrust::iterator_facade.143"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.143"* %0 to %"class.thrust::pointer.141"* %2 = load %"class.thrust::iterator_facade.143"*, %"class.thrust::iterator_facade.143"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.143"* %2 to %"class.thrust::pointer.141"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_(%"class.thrust::pointer.141"* dereferenceable(8) %1, %"class.thrust::pointer.141"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_(%"class.thrust::pointer.141"* dereferenceable(8) %f1, %"class.thrust::pointer.141"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::pointer.141"*, align 8 %f2.addr = alloca %"class.thrust::pointer.141"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::pointer.141"* %f1, %"class.thrust::pointer.141"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %f2, %"class.thrust::pointer.141"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %f1.addr, align 8 %1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::pointer.141"* dereferenceable(8) %0, %"class.thrust::pointer.141"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::pointer.141"* dereferenceable(8) %f1, %"class.thrust::pointer.141"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::pointer.141"*, align 8 %f2.addr = alloca %"class.thrust::pointer.141"*, align 8 store %"class.thrust::pointer.141"* %f1, %"class.thrust::pointer.141"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %f2, %"class.thrust::pointer.141"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %f1.addr, align 8 %2 = bitcast %"class.thrust::pointer.141"* %1 to %"class.thrust::iterator_adaptor.142"* %3 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %f2.addr, align 8 %4 = bitcast %"class.thrust::pointer.141"* %3 to %"class.thrust::iterator_adaptor.142"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.142"* %2, %"class.thrust::iterator_adaptor.142"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.142"* %this, %"class.thrust::iterator_adaptor.142"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.142"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.142"*, align 8 store %"class.thrust::iterator_adaptor.142"* %this, %"class.thrust::iterator_adaptor.142"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.142"* %y, %"class.thrust::iterator_adaptor.142"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.142"*, %"class.thrust::iterator_adaptor.142"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.142"*, %"class.thrust::iterator_adaptor.142"** %y.addr, align 8 %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv(%"class.thrust::iterator_adaptor.142"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %this1, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !109 %sub.ptr.lhs.cast = ptrtoint %"struct.thrust::pair"* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %"struct.thrust::pair"* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 ret i64 %sub.ptr.div } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEESE_NS0_4consINS4_INS5_IjSB_SC_SC_EEEENS_9null_typeEEEEET_RKNSH_IT0_T1_EE(%"struct.thrust::detail::cons.224"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.224"*, align 8 store %"struct.thrust::detail::cons.224"* %t, %"struct.thrust::detail::cons.224"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.224"*, %"struct.thrust::detail::cons.224"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.224", %"struct.thrust::detail::cons.224"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.212"* %head } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 64, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 64, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %a2, i64* dereferenceable(8) %a3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %a4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %a5) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %a3.addr = alloca i64*, align 8 %a4.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %a5.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %ref.tmp = alloca %"class.thrust::tuple.330", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %a2, %"class.thrust::zip_iterator.221"** %a2.addr, align 8, !tbaa !7 store i64* %a3, i64** %a3.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %a4, %"class.thrust::zip_iterator.216"** %a4.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %a5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %a5.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %a2.addr, align 8 %2 = load i64*, i64** %a3.addr, align 8 %3 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %a4.addr, align 8 %4 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %a5.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEElNS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_(%"class.thrust::tuple.330"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %1, i64* dereferenceable(8) %2, %"class.thrust::zip_iterator.216"* dereferenceable(16) %3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %agg.result, %"class.thrust::tuple.330"* dereferenceable(56) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8 %stream_valid = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.295", %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this1, i32 0, i32 0 %0 = load i8, i8* %stream_valid, align 8, !tbaa !227, !range !77 %tobool = trunc i8 %0 to i1 ret i1 %tobool } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 20, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 64, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8 %e = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.295", %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %agg.result to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %e to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 20, i32 4, i1 false) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8 %s = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.295", %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this1, i32 0, i32 2 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !230 ret %struct.CUstream_st* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8 %be = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.295", %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this1, i32 0, i32 3 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %be, align 8, !tbaa !231 ret %struct.CUevent_st* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 20, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 64, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to i8* call void @llvm.lifetime.start(i64 20, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 20, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm512EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm512EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %task to i8* call void @llvm.lifetime.start(i64 88, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 20, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 64, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 88, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %task to i8* call void @llvm.lifetime.end(i64 88, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to i8* call void @llvm.lifetime.end(i64 20, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %tmp = alloca { i64, i32 }, align 8 %agg.tmp.coerce = alloca { i64, i32 }, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm512EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.336"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm512EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm3EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) store { i64, i32 } %call8, { i64, i32 }* %tmp, align 8 %14 = bitcast { i64, i32 }* %tmp to i8* %15 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %14, i64 12, i32 4, i1 false) %16 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 12, i32 4, i1 false) %18 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %19 = load i64, i64* %18, align 4 %20 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %21 = load i32, i32* %20, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* sret %agg.result, i32 %10, i64 %19, i32 %21, i32 2147483647) %22 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %22) #5 %23 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %23) #5 %24 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this1, i32 0, i32 1 %0 = load i32, i32* %m_size, align 4, !tbaa !232 ret i32 %0 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm512EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"** %this.addr, align 8 ret i32 512 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm512EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"*, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"** %this.addr, align 8 %m_heap_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this1, i32 0, i32 1 %0 = load i32, i32* %m_heap_size, align 4, !tbaa !235 ret i32 %0 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 20, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 64, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 4, !tbaa !236 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 88, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* noalias sret %agg.result, i32 %size, i64 %block.coerce0, i32 %block.coerce1, i32 %index) #0 comdat { entry: %block = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %coerce = alloca { i64, i32 }, align 4 %size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %block.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %block.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %block to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %4 = load i32, i32* %size.addr, align 4, !tbaa !11 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %block to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = load i32, i32* %index.addr, align 4, !tbaa !11 %8 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 12, i32 4, i1 false) %10 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %11 = load i64, i64* %10, align 4 %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %13 = load i32, i32* %12, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE4makeEiSA_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* sret %agg.result, i32 %4, i64 %11, i32 %13, i32 %7) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %size, i32 %heap_size, i32 %thread.coerce, i32 %index) #0 comdat { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %thread = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %size.addr = alloca i32, align 4 %heap_size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %tmp = alloca { i64, i32 }, align 8 %tmp2 = alloca { i64, i32 }, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %thread, i32 0, i32 0 store i32 %thread.coerce, i32* %coerce.dive, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %0 = load i32, i32* %size.addr, align 4, !tbaa !11 %1 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %thread to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 4, i32 4, i1 false), !tbaa.struct !151 %4 = load i32, i32* %index.addr, align 4, !tbaa !11 %coerce.dive1 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %5 = load i32, i32* %coerce.dive1, align 4 %call = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEE4makeEiiS8_i(i32 %0, i32 %1, i32 %5, i32 %4) store { i64, i32 } %call, { i64, i32 }* %tmp, align 8 %6 = bitcast { i64, i32 }* %tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 12, i32 4, i1 false) %8 = bitcast { i64, i32 }* %tmp2 to i8* %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 12, i32 4, i1 false) %10 = load { i64, i32 }, { i64, i32 }* %tmp2, align 8 ret { i64, i32 } %10 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5agentILm3EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent.301"* %this, i32 %i) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301"*, align 8 %i.addr = alloca i32, align 4 store %"class.thrust::system::cuda::detail::bulk_::agent.301"* %this, %"class.thrust::system::cuda::detail::bulk_::agent.301"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::agent.301"*, %"class.thrust::system::cuda::detail::bulk_::agent.301"** %this.addr, align 8 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %this1, i32 0, i32 0 %0 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %0, i32* %m_index, align 4, !tbaa !238 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.337"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj512ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEE4makeEiSA_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* noalias sret %agg.result, i32 %size, i64 %block.coerce0, i32 %block.coerce1, i32 %index) #0 comdat align 2 { entry: %block = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %coerce = alloca { i64, i32 }, align 4 %size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %block.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %block.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %block to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %4 = load i32, i32* %size.addr, align 4, !tbaa !11 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %block to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = load i32, i32* %index.addr, align 4, !tbaa !11 %8 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 12, i32 4, i1 false) %10 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %11 = load i64, i64* %10, align 4 %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %13 = load i32, i32* %12, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %agg.result, i32 %4, i64 %11, i32 %13, i32 %7) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %this, i32 %size, i64 %exec.coerce0, i32 %exec.coerce1, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %coerce = alloca { i64, i32 }, align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"*, align 8 %size.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"** %this.addr, align 8, !tbaa !1 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"*, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"** %this.addr, align 8 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %5 = load i32, i32* %size.addr, align 4, !tbaa !11 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 12, i32 4, i1 false) %8 = load i32, i32* %i.addr, align 4, !tbaa !11 %9 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %10 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 12, i32 4, i1 false) %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %12 = load i64, i64* %11, align 4 %13 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %14 = load i32, i32* %13, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEC2EiSA_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %4, i32 %5, i64 %12, i32 %14, i32 %8) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEC2EiSA_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this, i32 %sz, i64 %exec.coerce0, i32 %exec.coerce1, i32 %i) unnamed_addr #1 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %coerce = alloca { i64, i32 }, align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"*, align 8 %sz.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"** %this.addr, align 8, !tbaa !1 store i32 %sz, i32* %sz.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"** %this.addr, align 8 %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this1, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this_exec to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this1, i32 0, i32 1 %6 = load i32, i32* %sz.addr, align 4, !tbaa !11 store i32 %6, i32* %m_size, align 4, !tbaa !232 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.297"* %this1, i32 0, i32 2 %7 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %7, i32* %m_index, align 4, !tbaa !240 ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEE4makeEiiS8_i(i32 %size, i32 %heap_size, i32 %thread.coerce, i32 %index) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %thread = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %size.addr = alloca i32, align 4 %heap_size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %tmp = alloca { i64, i32 }, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %thread, i32 0, i32 0 store i32 %thread.coerce, i32* %coerce.dive, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %0 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %thread to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 4, i1 false), !tbaa.struct !151 %3 = load i32, i32* %index.addr, align 4, !tbaa !11 %coerce.dive1 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %4 = load i32, i32* %coerce.dive1, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm512EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %retval, i32 %0, i32 %4, i32 %3) %5 = bitcast { i64, i32 }* %tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = load { i64, i32 }, { i64, i32 }* %tmp, align 8 ret { i64, i32 } %7 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm512EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this, i32 %heap_size, i32 %exec.coerce, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"*, align 8 %heap_size.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"** %this.addr, align 8, !tbaa !1 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"*, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this1 to %"class.thrust::system::cuda::detail::bulk_::parallel_group.299"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 4, i1 false), !tbaa.struct !151 %3 = load i32, i32* %i.addr, align 4, !tbaa !11 %coerce.dive2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %4 = load i32, i32* %coerce.dive2, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm3EEELm512EEC2ES6_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.299"* %0, i32 %4, i32 %3) %m_heap_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %this1, i32 0, i32 1 %5 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %5, i32* %m_heap_size, align 4, !tbaa !235 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm3EEELm512EEC2ES6_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.299"* %this, i32 %exec.coerce, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.299"*, align 8 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::parallel_group.299"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.299"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::parallel_group.299"*, %"class.thrust::system::cuda::detail::bulk_::parallel_group.299"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.299"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 4, i1 false), !tbaa.struct !151 %3 = load i32, i32* %i.addr, align 4, !tbaa !11 %coerce.dive2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %4 = load i32, i32* %coerce.dive2, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm512EEC2ES8_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %0, i32 %4, i32 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm512EEC2ES8_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %this, i32 %exec.coerce, i32 %i) unnamed_addr #1 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"*, align 8 %i.addr = alloca i32, align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"** %this.addr, align 8 %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %this_exec to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 4, i32 4, i1 false), !tbaa.struct !151 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.300"* %this1, i32 0, i32 1 %2 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %2, i32* %m_index, align 4, !tbaa !241 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEElNSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 64, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.341"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 20, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.338"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 88, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 88, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm3EEELm512EEELm0EEENS5_7closureINS3_11scan_detail16inclusive_scan_nENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS0_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm3EEELm512EEELm0EEENS5_7closureINS3_11scan_detail16inclusive_scan_nENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS0_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm3EEELm512EEELm0EEENS5_7closureINS3_11scan_detail16inclusive_scan_nENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS0_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 88, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm3EEELm512EEELm0EEENS5_7closureINS3_11scan_detail16inclusive_scan_nENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEElNSJ_INSG_INSL_INS0_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.340"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEElNS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_(%"class.thrust::tuple.330"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t1, i64* dereferenceable(8) %t2, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %t1, %"class.thrust::zip_iterator.221"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t3, %"class.thrust::zip_iterator.216"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t1.addr, align 8 %2 = load i64*, i64** %t2.addr, align 8 %3 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t3.addr, align 8 %4 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEElNS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKlRKSR_RKSX_(%"class.thrust::tuple.330"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %1, i64* dereferenceable(8) %2, %"class.thrust::zip_iterator.216"* dereferenceable(16) %3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %4) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEElNSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %this, %"class.thrust::tuple.330"* dereferenceable(56) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"*, align 8 %args.addr = alloca %"class.thrust::tuple.330"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.330"* %args, %"class.thrust::tuple.330"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.329", %"class.thrust::system::cuda::detail::bulk_::detail::closure.329"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.330"*, %"class.thrust::tuple.330"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.330"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.330"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 56, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEElNS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKlRKSR_RKSX_(%"class.thrust::tuple.330"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t1, i64* dereferenceable(8) %t2, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.330"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.330"* %this, %"class.thrust::tuple.330"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %t1, %"class.thrust::zip_iterator.221"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t3, %"class.thrust::zip_iterator.216"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.330"*, %"class.thrust::tuple.330"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.330"* %this1 to %"struct.thrust::detail::cons.331"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t1.addr, align 8 %3 = load i64*, i64** %t2.addr, align 8 %4 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t3.addr, align 8 %5 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_IlNS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KlKSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.331"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %2, i64* dereferenceable(8) %3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_IlNS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KlKSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.331"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t2, i64* dereferenceable(8) %t3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.331"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t3.addr = alloca i64*, align 8 %t4.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t5.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.331"* %this, %"struct.thrust::detail::cons.331"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %t2, %"class.thrust::zip_iterator.221"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t4, %"class.thrust::zip_iterator.216"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.331"*, %"struct.thrust::detail::cons.331"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.331", %"struct.thrust::detail::cons.331"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.331", %"struct.thrust::detail::cons.331"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 %5 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t4.addr, align 8 %6 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_IlNS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KlKSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.332"* %tail, %"class.thrust::zip_iterator.221"* dereferenceable(16) %3, i64* dereferenceable(8) %4, %"class.thrust::zip_iterator.216"* dereferenceable(16) %5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_IlNS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KlKSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.332"* %this, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t1, i64* dereferenceable(8) %t2, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.332"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.332"* %this, %"struct.thrust::detail::cons.332"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.221"* %t1, %"class.thrust::zip_iterator.221"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t3, %"class.thrust::zip_iterator.216"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.332"*, %"struct.thrust::detail::cons.332"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.332", %"struct.thrust::detail::cons.332"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.221"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.221"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.332", %"struct.thrust::detail::cons.332"* %this1, i32 0, i32 1 %3 = load i64*, i64** %t2.addr, align 8 %4 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t3.addr, align 8 %5 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIlNS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEEEC2IKlKSK_KSQ_KSI_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.333"* %tail, i64* dereferenceable(8) %3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIlNS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEEEC2IKlKSK_KSQ_KSI_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.333"* %this, i64* dereferenceable(8) %t1, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t2, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.333"*, align 8 %t1.addr = alloca i64*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t3.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.333"* %this, %"struct.thrust::detail::cons.333"** %this.addr, align 8, !tbaa !1 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t2, %"class.thrust::zip_iterator.216"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.333"*, %"struct.thrust::detail::cons.333"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.333", %"struct.thrust::detail::cons.333"* %this1, i32 0, i32 0 %0 = load i64*, i64** %t1.addr, align 8 %1 = load i64, i64* %0, align 8, !tbaa !13 store i64 %1, i64* %head, align 8, !tbaa !243 %tail = getelementptr inbounds %"struct.thrust::detail::cons.333", %"struct.thrust::detail::cons.333"* %this1, i32 0, i32 1 %2 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t2.addr, align 8 %3 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t3.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEC2IKSK_KSQ_KSI_SW_SW_SW_SW_SW_SW_SW_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.334"* %tail, %"class.thrust::zip_iterator.216"* dereferenceable(16) %2, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEC2IKSK_KSQ_KSI_SW_SW_SW_SW_SW_SW_SW_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.334"* %this, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t1, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.334"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t2.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.334"* %this, %"struct.thrust::detail::cons.334"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.216"* %t1, %"class.thrust::zip_iterator.216"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t2, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.334"*, %"struct.thrust::detail::cons.334"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.334", %"struct.thrust::detail::cons.334"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.216"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.216"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.334", %"struct.thrust::detail::cons.334"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_6system6detail7generic6detail22segmented_scan_functorINS_4pairIaaEEj9add_pairsEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_(%"struct.thrust::detail::cons.335"* %tail, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system6detail7generic6detail22segmented_scan_functorINS_4pairIaaEEj9add_pairsEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_(%"struct.thrust::detail::cons.335"* %this, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.335"*, align 8 %t1.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.335"* %this, %"struct.thrust::detail::cons.335"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t1, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.335"*, %"struct.thrust::detail::cons.335"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.335", %"struct.thrust::detail::cons.335"* %this9, i32 0, i32 0 %9 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t1.addr, align 8 %10 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %head to i8* %11 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* noalias sret %agg.result, %struct.CUstream_st* %s, i64 %exec.coerce0, i32 %exec.coerce1, i64 %num_groups) #8 comdat { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %coerce = alloca { i64, i32 }, align 4 %s.addr = alloca %struct.CUstream_st*, align 8 %num_groups.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.296", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store i64 %num_groups, i64* %num_groups.addr, align 8, !tbaa !13 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp1 to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = load i64, i64* %num_groups.addr, align 8, !tbaa !13 %7 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 12, i32 4, i1 false) %9 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %10 = load i64, i64* %9, align 4 %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %12 = load i32, i32* %11, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEEENS3_14parallel_groupIT_Lm0EEESA_m(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* sret %agg.tmp, i64 %10, i32 %12, i64 %6) %13 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %agg.tmp, %struct.CUstream_st* %13, %struct.CUevent_st* null) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_3conILm512ELm3EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm(i64 %heap_size) #0 comdat { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %heap_size.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %tmp = alloca { i64, i32 }, align 8 store i64 %heap_size, i64* %heap_size.addr, align 8, !tbaa !13 %0 = load i64, i64* %heap_size.addr, align 8, !tbaa !13 %conv = trunc i64 %0 to i32 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm3EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %1 = load i32, i32* %coerce.dive, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm512EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %retval, i32 %conv, i32 %1, i32 2147483647) %2 = bitcast { i64, i32 }* %tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) %4 = load { i64, i32 }, { i64, i32 }* %tmp, align 8 ret { i64, i32 } %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm512EEEEENS3_14parallel_groupIT_Lm0EEESA_m(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* noalias sret %agg.result, i64 %exec.coerce0, i32 %exec.coerce1, i64 %size) #0 comdat { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %coerce = alloca { i64, i32 }, align 4 %size.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store i64 %size, i64* %size.addr, align 8, !tbaa !13 %4 = load i64, i64* %size.addr, align 8, !tbaa !13 %conv = trunc i64 %4 to i32 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.298"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 12, i32 4, i1 false) %9 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %10 = load i64, i64* %9, align 4 %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %12 = load i32, i32* %11, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %agg.result, i32 %conv, i64 %10, i32 %12, i32 2147483647) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* byval align 8 %exec, %struct.CUstream_st* %s, %struct.CUevent_st* %be) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, align 8 %s.addr = alloca %struct.CUstream_st*, align 8 %be.addr = alloca %struct.CUevent_st*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %be, %struct.CUevent_st** %be.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.295"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.295"** %this.addr, align 8 %stream_valid = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.295", %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this1, i32 0, i32 0 store i8 1, i8* %stream_valid, align 8, !tbaa !227 %e = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.295", %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %e to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.296"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 20, i32 4, i1 false) %s2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.295", %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this1, i32 0, i32 2 %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUstream_st* %2, %struct.CUstream_st** %s2, align 8, !tbaa !230 %be3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.295", %"class.thrust::system::cuda::detail::bulk_::async_launch.295"* %this1, i32 0, i32 3 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %be.addr, align 8, !tbaa !1 store %struct.CUevent_st* %3, %struct.CUevent_st** %be3, align 8, !tbaa !231 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6system4cuda6detail21aligned_decompositionIlE4sizeEv(%"class.thrust::system::cuda::detail::aligned_decomposition"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %this, %"class.thrust::system::cuda::detail::aligned_decomposition"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %this.addr, align 8 %m_num_partitions = getelementptr inbounds %"class.thrust::system::cuda::detail::aligned_decomposition", %"class.thrust::system::cuda::detail::aligned_decomposition"* %this1, i32 0, i32 1 %0 = load i64, i64* %m_num_partitions, align 8, !tbaa !223 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyISA_EE(%"class.thrust::detail::temporary_allocator.305"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.305"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::temporary_allocator.305"* %this, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %system, %"struct.thrust::execution_policy.120"** %system.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator.305"*, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator.305"* %this1 to %"class.thrust::detail::tagged_allocator.306"* call void @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEEC2Ev(%"class.thrust::detail::tagged_allocator.306"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.305", %"class.thrust::detail::temporary_allocator.305"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %call = invoke dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store %"struct.thrust::system::cuda::detail::tag"* %call, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 %6 = bitcast %"class.thrust::detail::temporary_allocator.305"* %this1 to %"class.thrust::detail::tagged_allocator.306"* call void @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev(%"class.thrust::detail::tagged_allocator.306"* %6) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSC_(%"struct.thrust::detail::no_throw_allocator.304"* %this, %"class.thrust::detail::temporary_allocator.305"* dereferenceable(8) %other) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator.305"*, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %this, %"struct.thrust::detail::no_throw_allocator.304"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator.305"* %other, %"class.thrust::detail::temporary_allocator.305"** %other.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator.304"* %this1 to %"class.thrust::detail::temporary_allocator.305"* %1 = load %"class.thrust::detail::temporary_allocator.305"*, %"class.thrust::detail::temporary_allocator.305"** %other.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERKSB_(%"class.thrust::detail::temporary_allocator.305"* %0, %"class.thrust::detail::temporary_allocator.305"* dereferenceable(8) %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEEC2EmRKSE_(%"class.thrust::detail::contiguous_storage.303"* %this, i64 %n, %"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.303"*, align 8 %n.addr = alloca i64, align 8 %alloc.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.303"* %this, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store %"struct.thrust::detail::no_throw_allocator.304"* %alloc, %"struct.thrust::detail::no_throw_allocator.304"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.303"*, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %alloc.addr, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSD_(%"struct.thrust::detail::no_throw_allocator.304"* %m_allocator, %"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %0) %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 1 invoke void @_ZN6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_(%"class.thrust::pointer.311"* %agg.tmp, %"class.thrust::tuple.314"* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 %1 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive2, align 8 invoke void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEC2ESD_(%"class.thrust::detail::normal_iterator.308"* %m_begin, %"class.thrust::tuple.314"* %1) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !251 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.303"* %this1, i64 %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont3 ret void lpad: ; preds = %invoke.cont3, %invoke.cont, %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator.306"*)* @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.304"*)*)(%"struct.thrust::detail::no_throw_allocator.304"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev(%"class.thrust::detail::tagged_allocator.306"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator.306"*, align 8 store %"class.thrust::detail::tagged_allocator.306"* %this, %"class.thrust::detail::tagged_allocator.306"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator.306"*, %"class.thrust::detail::tagged_allocator.306"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS0_15temporary_arrayIS7_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_(%"class.thrust::detail::temporary_array.302"* dereferenceable(24), i64) #1 comdat { entry: %.addr = alloca %"class.thrust::detail::temporary_array.302"*, align 8 %.addr1 = alloca i64, align 8 store %"class.thrust::detail::temporary_array.302"* %0, %"class.thrust::detail::temporary_array.302"** %.addr, align 8, !tbaa !7 store i64 %1, i64* %.addr1, align 8, !tbaa !13 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.303"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.303"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.303"* %this, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.303"*, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.303"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator.306"*)* @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.304"*)*)(%"struct.thrust::detail::no_throw_allocator.304"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator.306"*)* @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.304"*)*)(%"struct.thrust::detail::no_throw_allocator.304"* %m_allocator2) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEEC2Ev(%"class.thrust::detail::tagged_allocator.306"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator.306"*, align 8 store %"class.thrust::detail::tagged_allocator.306"* %this, %"class.thrust::detail::tagged_allocator.306"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator.306"*, %"class.thrust::detail::tagged_allocator.306"** %this.addr, align 8 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERKSB_(%"class.thrust::detail::temporary_allocator.305"* %this, %"class.thrust::detail::temporary_allocator.305"* dereferenceable(8) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.305"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator.305"*, align 8 store %"class.thrust::detail::temporary_allocator.305"* %this, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator.305"* %other, %"class.thrust::detail::temporary_allocator.305"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator.305"*, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator.305"* %this1 to %"class.thrust::detail::tagged_allocator.306"* call void @_ZN6thrust6detail16tagged_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_7pointerIS6_SA_NS_11use_defaultESC_EEEC2Ev(%"class.thrust::detail::tagged_allocator.306"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.305", %"class.thrust::detail::temporary_allocator.305"* %this1, i32 0, i32 0 %1 = load %"class.thrust::detail::temporary_allocator.305"*, %"class.thrust::detail::temporary_allocator.305"** %other.addr, align 8 %m_system2 = getelementptr inbounds %"class.thrust::detail::temporary_allocator.305", %"class.thrust::detail::temporary_allocator.305"* %1, i32 0, i32 0 %ref = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %m_system2, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::tag"* %ref, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEEC2ERKSD_(%"struct.thrust::detail::no_throw_allocator.304"* %this, %"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %this, %"struct.thrust::detail::no_throw_allocator.304"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::no_throw_allocator.304"* %0, %"struct.thrust::detail::no_throw_allocator.304"** %.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %this.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.304"* %this1 to %"class.thrust::detail::temporary_allocator.305"* %2 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %.addr, align 8 %3 = bitcast %"struct.thrust::detail::no_throw_allocator.304"* %2 to %"class.thrust::detail::temporary_allocator.305"* call void @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEEC2ERKSB_(%"class.thrust::detail::temporary_allocator.305"* %1, %"class.thrust::detail::temporary_allocator.305"* dereferenceable(8) %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_(%"class.thrust::pointer.311"* %this, %"class.thrust::tuple.314"* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.311"*, align 8 %other.addr = alloca %"class.thrust::tuple.314"*, align 8 store %"class.thrust::pointer.311"* %this, %"class.thrust::pointer.311"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.314"* %other, %"class.thrust::tuple.314"** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.311"* %this1 to %"class.thrust::iterator_adaptor.312"* call void @_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEC2ERKSD_(%"class.thrust::iterator_adaptor.312"* %0, %"class.thrust::tuple.314"** dereferenceable(8) %other.addr) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEC2ESD_(%"class.thrust::detail::normal_iterator.308"* %this, %"class.thrust::tuple.314"* %p.coerce) unnamed_addr #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.311", align 8 %this.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"class.thrust::detail::normal_iterator.308"* %this, %"class.thrust::detail::normal_iterator.308"** %this.addr, align 8, !tbaa !1 %this2 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.308"* %this2 to %"class.thrust::iterator_adaptor.309"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_EC2ERKSE_(%"class.thrust::iterator_adaptor.309"* %0, %"class.thrust::pointer.311"* dereferenceable(8) %p) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.303"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.303"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.308", align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %ref.tmp6 = alloca %"class.thrust::detail::normal_iterator.308", align 8 %agg.tmp7 = alloca %"class.thrust::pointer.311", align 8 store %"class.thrust::detail::contiguous_storage.303"* %this, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.303"*, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"class.thrust::tuple.314"* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_m(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %m_allocator, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %call, %"class.thrust::tuple.314"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %2 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEC2ESD_(%"class.thrust::detail::normal_iterator.308"* %ref.tmp, %"class.thrust::tuple.314"* %2) %3 = bitcast %"class.thrust::detail::normal_iterator.308"* %m_begin to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.308"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 2 store i64 %5, i64* %m_size, align 8, !tbaa !251 br label %if.end if.else: ; preds = %entry %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_(%"class.thrust::pointer.311"* %agg.tmp7, %"class.thrust::tuple.314"* null) %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive8, i32 0, i32 0 %6 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive9, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEC2ESD_(%"class.thrust::detail::normal_iterator.308"* %ref.tmp6, %"class.thrust::tuple.314"* %6) %7 = bitcast %"class.thrust::detail::normal_iterator.308"* %m_begin5 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.308"* %ref.tmp6 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %m_size10 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 2 store i64 0, i64* %m_size10, align 8, !tbaa !251 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEC2ERKSD_(%"class.thrust::iterator_adaptor.312"* %this, %"class.thrust::tuple.314"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.312"*, align 8 %iter.addr = alloca %"class.thrust::tuple.314"**, align 8 store %"class.thrust::iterator_adaptor.312"* %this, %"class.thrust::iterator_adaptor.312"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.314"** %iter, %"class.thrust::tuple.314"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.312"*, %"class.thrust::iterator_adaptor.312"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.312"* %this1 to %"class.thrust::iterator_facade.313"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %this1, i32 0, i32 0 %1 = load %"class.thrust::tuple.314"**, %"class.thrust::tuple.314"*** %iter.addr, align 8 %2 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %1, align 8, !tbaa !1 store %"class.thrust::tuple.314"* %2, %"class.thrust::tuple.314"** %m_iterator, align 8, !tbaa !255 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_EC2ERKSE_(%"class.thrust::iterator_adaptor.309"* %this, %"class.thrust::pointer.311"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.309"*, align 8 %iter.addr = alloca %"class.thrust::pointer.311"*, align 8 store %"class.thrust::iterator_adaptor.309"* %this, %"class.thrust::iterator_adaptor.309"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.311"* %iter, %"class.thrust::pointer.311"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.309"*, %"class.thrust::iterator_adaptor.309"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.309"* %this1 to %"class.thrust::iterator_facade.310"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %this1, i32 0, i32 0 %1 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %iter.addr, align 8 %2 = bitcast %"class.thrust::pointer.311"* %m_iterator to i8* %3 = bitcast %"class.thrust::pointer.311"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_m(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %a, i64 %n) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.311", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %a, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"class.thrust::tuple.314"* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_mEN19workaround_warnings8allocateESG_m(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %call, %"class.thrust::tuple.314"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive2, i32 0, i32 0 %2 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive3, align 8 ret %"class.thrust::tuple.314"* %2 } ; Function Attrs: uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE8allocateERSE_mEN19workaround_warnings8allocateESG_m(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %a, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.311", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %a, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.304"* %0 to %"class.thrust::detail::temporary_allocator.305"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"class.thrust::tuple.314"* @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator.305"* %1, i64 %2) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %call, %"class.thrust::tuple.314"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive2, i32 0, i32 0 %3 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive3, align 8 ret %"class.thrust::tuple.314"* %3 } ; Function Attrs: uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator.305"* %this, i64 %cnt) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca %"class.thrust::pointer.311", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator.305"*, align 8 %cnt.addr = alloca i64, align 8 %result = alloca %"struct.thrust::pair.342", align 8 %ref.tmp = alloca %"struct.thrust::pair.343", align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %ref.tmp4 = alloca %"class.std::basic_string", align 8 %ref.tmp5 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 store %"class.thrust::detail::temporary_allocator.305"* %this, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::temporary_allocator.305"*, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8 %0 = bitcast %"struct.thrust::pair.342"* %result to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.305"* %this1) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %2 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call2 = call { %"class.thrust::tuple.314"*, i64 } @_ZN6thrust20get_temporary_bufferINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS2_INS_7pointerIT_T0_NS_11use_defaultESD_EENSE_15difference_typeEEERKNS_6detail21execution_policy_baseISC_EESF_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.343"* %ref.tmp to { %"class.thrust::tuple.314"*, i64 }* %4 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { %"class.thrust::tuple.314"*, i64 } %call2, 0 store %"class.thrust::tuple.314"* %5, %"class.thrust::tuple.314"** %4, align 8 %6 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { %"class.thrust::tuple.314"*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 call void @_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EEmEC2ISB_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.342"* %result, %"struct.thrust::pair.343"* dereferenceable(16) %ref.tmp) %second = getelementptr inbounds %"struct.thrust::pair.342", %"struct.thrust::pair.342"* %result, i32 0, i32 1 %8 = load i64, i64* %second, align 8, !tbaa !257 %9 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %cmp = icmp ult i64 %8, %9 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %first = getelementptr inbounds %"struct.thrust::pair.342", %"struct.thrust::pair.342"* %result, i32 0, i32 0 %10 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %11 = bitcast %"class.thrust::pointer.311"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 %13 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive3, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS6_SA_NS_11use_defaultESD_EEm(%"class.thrust::detail::temporary_allocator.305"* %this1, %"class.thrust::tuple.314"* %13, i64 %12) %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %14 = bitcast i8* %exception to %"class.thrust::system::detail::bad_alloc"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp5) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp4, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.44, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp5) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then invoke void @_ZN6thrust6system6detail9bad_allocC2ERKSs(%"class.thrust::system::detail::bad_alloc"* %14, %"class.std::basic_string"* dereferenceable(8) %ref.tmp4) to label %invoke.cont7 unwind label %lpad6 invoke.cont7: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system6detail9bad_allocE to i8*), i8* bitcast (void (%"class.thrust::system::detail::bad_alloc"*)* @_ZN6thrust6system6detail9bad_allocD2Ev to i8*)) #15 to label %unreachable unwind label %lpad6 lpad: ; preds = %if.then %15 = landingpad { i8*, i32 } cleanup %16 = extractvalue { i8*, i32 } %15, 0 store i8* %16, i8** %exn.slot, align 8 %17 = extractvalue { i8*, i32 } %15, 1 store i32 %17, i32* %ehselector.slot, align 4 br label %ehcleanup lpad6: ; preds = %invoke.cont7, %invoke.cont %18 = landingpad { i8*, i32 } cleanup %19 = extractvalue { i8*, i32 } %18, 0 store i8* %19, i8** %exn.slot, align 8 %20 = extractvalue { i8*, i32 } %18, 1 store i32 %20, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp4) #5 br label %ehcleanup ehcleanup: ; preds = %lpad6, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp5) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup %21 = bitcast %"struct.thrust::pair.342"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %21) #5 br label %eh.resume if.end: ; preds = %entry %first9 = getelementptr inbounds %"struct.thrust::pair.342", %"struct.thrust::pair.342"* %result, i32 0, i32 0 %22 = bitcast %"class.thrust::pointer.311"* %retval to i8* %23 = bitcast %"class.thrust::pointer.311"* %first9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 8, i32 8, i1 false) %24 = bitcast %"struct.thrust::pair.342"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %24) #5 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive11, i32 0, i32 0 %25 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive12, align 8 ret %"class.thrust::tuple.314"* %25 eh.resume: ; preds = %cleanup.done %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val13 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val13 unreachable: ; preds = %invoke.cont7 unreachable } ; Function Attrs: uwtable define linkonce_odr { %"class.thrust::tuple.314"*, i64 } @_ZN6thrust20get_temporary_bufferINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS2_INS_7pointerIT_T0_NS_11use_defaultESD_EENSE_15difference_typeEEERKNS_6detail21execution_policy_baseISC_EESF_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.343", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::pair.343", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call { %"class.thrust::tuple.314"*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS5_INS_7pointerIT_T0_NS_11use_defaultESF_EENSG_15difference_typeEEERNS_16execution_policyISE_EESH_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.343"* %agg.tmp to { %"class.thrust::tuple.314"*, i64 }* %4 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { %"class.thrust::tuple.314"*, i64 } %call2, 0 store %"class.thrust::tuple.314"* %5, %"class.thrust::tuple.314"** %4, align 8 %6 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { %"class.thrust::tuple.314"*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 %8 = bitcast %"struct.thrust::pair.343"* %agg.tmp to { %"class.thrust::tuple.314"*, i64 }* %9 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %8, i32 0, i32 0 %10 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %9, align 8 %11 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %8, i32 0, i32 1 %12 = load i64, i64* %11, align 8 %call3 = call { %"class.thrust::tuple.314"*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS4_INS_7pointerIS7_SB_NS_11use_defaultESD_EElEEEENS4_INSC_IT_T0_SD_SD_EENSI_15difference_typeEEET1_(%"class.thrust::tuple.314"* %10, i64 %12) %13 = bitcast %"struct.thrust::pair.343"* %retval to { %"class.thrust::tuple.314"*, i64 }* %14 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %13, i32 0, i32 0 %15 = extractvalue { %"class.thrust::tuple.314"*, i64 } %call3, 0 store %"class.thrust::tuple.314"* %15, %"class.thrust::tuple.314"** %14, align 8 %16 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %13, i32 0, i32 1 %17 = extractvalue { %"class.thrust::tuple.314"*, i64 } %call3, 1 store i64 %17, i64* %16, align 8 %18 = bitcast %"struct.thrust::pair.343"* %retval to { %"class.thrust::tuple.314"*, i64 }* %19 = load { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %18, align 8 ret { %"class.thrust::tuple.314"*, i64 } %19 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.305"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.305"*, align 8 store %"class.thrust::detail::temporary_allocator.305"* %this, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_allocator.305"*, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8 %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.305", %"class.thrust::detail::temporary_allocator.305"* %this1, i32 0, i32 0 %ref = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret %"struct.thrust::system::cuda::detail::tag"* %ref } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EEmEC2ISB_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.342"* %this, %"struct.thrust::pair.343"* dereferenceable(16) %p) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.342"*, align 8 %p.addr = alloca %"struct.thrust::pair.343"*, align 8 store %"struct.thrust::pair.342"* %this, %"struct.thrust::pair.342"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.343"* %p, %"struct.thrust::pair.343"** %p.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.342"*, %"struct.thrust::pair.342"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.342", %"struct.thrust::pair.342"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.343"*, %"struct.thrust::pair.343"** %p.addr, align 8 %first2 = getelementptr inbounds %"struct.thrust::pair.343", %"struct.thrust::pair.343"* %0, i32 0, i32 0 %1 = bitcast %"class.thrust::pointer.311"* %first to i8* %2 = bitcast %"class.thrust::pointer.311"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.342", %"struct.thrust::pair.342"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::pair.343"*, %"struct.thrust::pair.343"** %p.addr, align 8 %second3 = getelementptr inbounds %"struct.thrust::pair.343", %"struct.thrust::pair.343"* %3, i32 0, i32 1 %4 = load i64, i64* %second3, align 8, !tbaa !260 store i64 %4, i64* %second, align 8, !tbaa !257 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS6_SA_NS_11use_defaultESD_EEm(%"class.thrust::detail::temporary_allocator.305"* %this, %"class.thrust::tuple.314"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.311", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator.305"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"class.thrust::detail::temporary_allocator.305"* %this, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::temporary_allocator.305"*, %"class.thrust::detail::temporary_allocator.305"** %this.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.305"* %this2) %0 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %1 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.311"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %3 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 call void @_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0, %"class.thrust::tuple.314"* %3) ret void } ; Function Attrs: uwtable define linkonce_odr { %"class.thrust::tuple.314"*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS4_INS_7pointerIS7_SB_NS_11use_defaultESD_EElEEEENS4_INSC_IT_T0_SD_SD_EENSI_15difference_typeEEET1_(%"class.thrust::tuple.314"* %p.coerce0, i64 %p.coerce1) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.343", align 8 %p = alloca %"struct.thrust::pair.343", align 8 %ptr = alloca %"class.thrust::pointer.311", align 8 %0 = bitcast %"struct.thrust::pair.343"* %p to { %"class.thrust::tuple.314"*, i64 }* %1 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %0, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce0, %"class.thrust::tuple.314"** %1, align 8 %2 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %0, i32 0, i32 1 store i64 %p.coerce1, i64* %2, align 8 %3 = bitcast %"class.thrust::pointer.311"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %first = getelementptr inbounds %"struct.thrust::pair.343", %"struct.thrust::pair.343"* %p, i32 0, i32 0 %call = call %"class.thrust::tuple.314"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSF_(%"class.thrust::pointer.311"* dereferenceable(8) %first) call void @_ZN6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_(%"class.thrust::pointer.311"* %ptr, %"class.thrust::tuple.314"* %call) %second = getelementptr inbounds %"struct.thrust::pair.343", %"struct.thrust::pair.343"* %p, i32 0, i32 1 call void @_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EElEC2ERKSB_RKl(%"struct.thrust::pair.343"* %retval, %"class.thrust::pointer.311"* dereferenceable(8) %ptr, i64* dereferenceable(8) %second) %4 = bitcast %"class.thrust::pointer.311"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %4) #5 %5 = bitcast %"struct.thrust::pair.343"* %retval to { %"class.thrust::tuple.314"*, i64 }* %6 = load { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %5, align 8 ret { %"class.thrust::tuple.314"*, i64 } %6 } ; Function Attrs: uwtable define linkonce_odr { %"class.thrust::tuple.314"*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS5_INS_7pointerIT_T0_NS_11use_defaultESF_EENSG_15difference_typeEEERNS_16execution_policyISE_EESH_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.343", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %ptr = alloca %"class.thrust::pointer.311", align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.311"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"class.thrust::tuple.314"* @_ZN6thrust6mallocINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESD_EERKNS_6detail21execution_policy_baseISC_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %call, %"class.thrust::tuple.314"** %coerce.dive1, align 8 %call2 = call %"class.thrust::tuple.314"* @_ZNK6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_E3getEv(%"class.thrust::pointer.311"* %ptr) %tobool = icmp ne %"class.thrust::tuple.314"* %call2, null br i1 %tobool, label %if.end, label %if.then if.then: ; preds = %entry store i64 0, i64* %n.addr, align 8, !tbaa !13 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %5 = bitcast %"class.thrust::pointer.311"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %7 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 %call5 = call { %"class.thrust::tuple.314"*, i64 } @_ZN6thrust9make_pairINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EElEENS3_IT_T0_EESD_SE_(%"class.thrust::tuple.314"* %7, i64 %6) %8 = bitcast %"struct.thrust::pair.343"* %retval to { %"class.thrust::tuple.314"*, i64 }* %9 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %8, i32 0, i32 0 %10 = extractvalue { %"class.thrust::tuple.314"*, i64 } %call5, 0 store %"class.thrust::tuple.314"* %10, %"class.thrust::tuple.314"** %9, align 8 %11 = getelementptr inbounds { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %8, i32 0, i32 1 %12 = extractvalue { %"class.thrust::tuple.314"*, i64 } %call5, 1 store i64 %12, i64* %11, align 8 %13 = bitcast %"class.thrust::pointer.311"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.343"* %retval to { %"class.thrust::tuple.314"*, i64 }* %15 = load { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %14, align 8 ret { %"class.thrust::tuple.314"*, i64 } %15 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSF_(%"class.thrust::pointer.311"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::pointer.311"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 store %"class.thrust::pointer.311"* %ptr, %"class.thrust::pointer.311"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.311"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 %3 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive1, align 8 %call = call %"class.thrust::tuple.314"* @_ZN6thrust6detail14pointer_traitsINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEE3getESD_(%"class.thrust::tuple.314"* %3) ret %"class.thrust::tuple.314"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EElEC2ERKSB_RKl(%"struct.thrust::pair.343"* %this, %"class.thrust::pointer.311"* dereferenceable(8) %x, i64* dereferenceable(8) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.343"*, align 8 %x.addr = alloca %"class.thrust::pointer.311"*, align 8 %y.addr = alloca i64*, align 8 store %"struct.thrust::pair.343"* %this, %"struct.thrust::pair.343"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.311"* %x, %"class.thrust::pointer.311"** %x.addr, align 8, !tbaa !7 store i64* %y, i64** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.343"*, %"struct.thrust::pair.343"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.343", %"struct.thrust::pair.343"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %x.addr, align 8 %1 = bitcast %"class.thrust::pointer.311"* %first to i8* %2 = bitcast %"class.thrust::pointer.311"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.343", %"struct.thrust::pair.343"* %this1, i32 0, i32 1 %3 = load i64*, i64** %y.addr, align 8 %4 = load i64, i64* %3, align 8, !tbaa !13 store i64 %4, i64* %second, align 8, !tbaa !260 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust6detail14pointer_traitsINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEE3getESD_(%"class.thrust::tuple.314"* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %ptr.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 %call = call %"class.thrust::tuple.314"* @_ZNK6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_E3getEv(%"class.thrust::pointer.311"* %ptr) ret %"class.thrust::tuple.314"* %call } ; Function Attrs: uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZNK6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_E3getEv(%"class.thrust::pointer.311"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.311"*, align 8 store %"class.thrust::pointer.311"* %this, %"class.thrust::pointer.311"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.311"* %this1 to %"class.thrust::iterator_adaptor.312"* %call = call dereferenceable(8) %"class.thrust::tuple.314"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE4baseEv(%"class.thrust::iterator_adaptor.312"* %0) %1 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %call, align 8, !tbaa !1 ret %"class.thrust::tuple.314"* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::tuple.314"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE4baseEv(%"class.thrust::iterator_adaptor.312"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.312"*, align 8 store %"class.thrust::iterator_adaptor.312"* %this, %"class.thrust::iterator_adaptor.312"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.312"*, %"class.thrust::iterator_adaptor.312"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.314"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust6mallocINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESD_EERKNS_6detail21execution_policy_baseISC_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.311", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %raw_ptr = alloca %"class.thrust::tuple.314"*, align 8 %ref.tmp = alloca %"class.thrust::pointer.311", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::tuple.314"** %raw_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call %"class.thrust::tuple.314"* @_ZN6thrust6system6detail7generic6mallocINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESF_EERNS_16execution_policyISE_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %ref.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %call2, %"class.thrust::tuple.314"** %coerce.dive3, align 8 %call4 = call %"class.thrust::tuple.314"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSF_(%"class.thrust::pointer.311"* dereferenceable(8) %ref.tmp) store %"class.thrust::tuple.314"* %call4, %"class.thrust::tuple.314"** %raw_ptr, align 8, !tbaa !1 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %raw_ptr, align 8, !tbaa !1 call void @_ZN6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_(%"class.thrust::pointer.311"* %retval, %"class.thrust::tuple.314"* %4) %5 = bitcast %"class.thrust::tuple.314"** %raw_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive5, i32 0, i32 0 %6 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive6, align 8 ret %"class.thrust::tuple.314"* %6 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"class.thrust::tuple.314"*, i64 } @_ZN6thrust9make_pairINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EElEENS3_IT_T0_EESD_SE_(%"class.thrust::tuple.314"* %x.coerce, i64 %y) #8 comdat { entry: %retval = alloca %"struct.thrust::pair.343", align 8 %x = alloca %"class.thrust::pointer.311", align 8 %y.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %x, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %x.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store i64 %y, i64* %y.addr, align 8, !tbaa !13 call void @_ZN6thrust4pairINS_7pointerINS_5tupleINS0_IaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EElEC2ERKSB_RKl(%"struct.thrust::pair.343"* %retval, %"class.thrust::pointer.311"* dereferenceable(8) %x, i64* dereferenceable(8) %y.addr) %0 = bitcast %"struct.thrust::pair.343"* %retval to { %"class.thrust::tuple.314"*, i64 }* %1 = load { %"class.thrust::tuple.314"*, i64 }, { %"class.thrust::tuple.314"*, i64 }* %0, align 8 ret { %"class.thrust::tuple.314"*, i64 } %1 } ; Function Attrs: uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust6system6detail7generic6mallocINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESF_EERNS_16execution_policyISE_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.311", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %void_ptr = alloca %"class.thrust::pointer.129", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 8, %3 %call = call i8* @_ZN6thrust6mallocINS_6system4cuda6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %mul) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.129", %"class.thrust::pointer.129"* %void_ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.130", %"class.thrust::iterator_adaptor.130"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive1, align 8 %call2 = call i8* @_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.129"* %void_ptr) %4 = bitcast i8* %call2 to %"class.thrust::tuple.314"* call void @_ZN6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_(%"class.thrust::pointer.311"* %retval, %"class.thrust::tuple.314"* %4) %5 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %6 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 ret %"class.thrust::tuple.314"* %6 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"class.thrust::tuple.314"* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.311", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::execution_policy.120"* %2 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.311"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 call void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES6_NS_11use_defaultESD_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, %"class.thrust::tuple.314"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES6_NS_11use_defaultESD_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, %"class.thrust::tuple.314"* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.311", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.120"* %0 to %"struct.thrust::detail::execution_policy_base.121"* %2 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.311"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive2, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive3, align 8 call void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, %"class.thrust::tuple.314"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"class.thrust::tuple.314"* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::pointer.311", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %ptr.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.311"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 call void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"class.thrust::tuple.314"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1), %"class.thrust::tuple.314"* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::pointer.311", align 8 %.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %ptr.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %0, %"struct.thrust::system::cuda::detail::execution_policy.119"** %.addr, align 8, !tbaa !7 %call = call %"class.thrust::tuple.314"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSF_(%"class.thrust::pointer.311"* dereferenceable(8) %ptr) %1 = bitcast %"class.thrust::tuple.314"* %call to i8* %call2 = call i32 @cudaFree(i8* %1) call void @_ZN6thrust6system4cuda6detail14throw_on_errorE9cudaErrorPKc(i32 %call2, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.24, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.303"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.303"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.308", align 8 %agg.tmp6 = alloca %"class.thrust::pointer.311", align 8 store %"class.thrust::detail::contiguous_storage.303"* %this, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.303"*, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.303"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.308"* %m_begin to %"class.thrust::iterator_adaptor.309"* %call2 = call dereferenceable(8) %"class.thrust::pointer.311"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E4baseEv(%"class.thrust::iterator_adaptor.309"* %0) %1 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.311"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.303"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 %3 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 call void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEm(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %m_allocator, %"class.thrust::tuple.314"* %3, i64 %call3) %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EENS_6system4cuda6detail3tagENS_11use_defaultESA_EC2IS5_EEPT_(%"class.thrust::pointer.311"* %agg.tmp6, %"class.thrust::tuple.314"* null) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive7, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive8, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEC2ESD_(%"class.thrust::detail::normal_iterator.308"* %ref.tmp, %"class.thrust::tuple.314"* %4) %5 = bitcast %"class.thrust::detail::normal_iterator.308"* %m_begin5 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.308"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !251 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.303"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.303"*, align 8 store %"class.thrust::detail::contiguous_storage.303"* %this, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.303"*, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !251 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEm(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %a, %"class.thrust::tuple.314"* %p.coerce, i64 %n) #8 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.311", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %a, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.311"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive2, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive3, align 8 call void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEmEN19workaround_warnings10deallocateESG_SJ_m(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %0, %"class.thrust::tuple.314"* %4, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.311"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E4baseEv(%"class.thrust::iterator_adaptor.309"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.309"*, align 8 store %"class.thrust::iterator_adaptor.309"* %this, %"class.thrust::iterator_adaptor.309"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.309"*, %"class.thrust::iterator_adaptor.309"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %this1, i32 0, i32 0 ret %"class.thrust::pointer.311"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE10deallocateERSE_NS_7pointerIS8_SC_NS_11use_defaultESI_EEmEN19workaround_warnings10deallocateESG_SJ_m(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %a, %"class.thrust::tuple.314"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.311", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %a, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.311"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive2, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive3, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS7_SB_NS_11use_defaultESF_EEm(%"struct.thrust::detail::no_throw_allocator.304"* %0, %"class.thrust::tuple.314"* %4, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS7_SB_NS_11use_defaultESF_EEm(%"struct.thrust::detail::no_throw_allocator.304"* %this, %"class.thrust::tuple.314"* %p.coerce, i64 %n) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %p = alloca %"class.thrust::pointer.311", align 8 %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %this, %"struct.thrust::detail::no_throw_allocator.304"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator.304"* %this2 to %"class.thrust::detail::temporary_allocator.305"* %1 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.311"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 invoke void @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS6_SA_NS_11use_defaultESD_EEm(%"class.thrust::detail::temporary_allocator.305"* %0, %"class.thrust::tuple.314"* %4, i64 %3) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry br label %try.cont lpad: ; preds = %entry %5 = landingpad { i8*, i32 } catch i8* null %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %8 = call i8* @__cxa_begin_catch(i8* %exn) #5 call void @__cxa_end_catch() br label %try.cont try.cont: ; preds = %catch, %invoke.cont ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 88, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 88, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16accumulate_tilesENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_SN_SN_SN_SN_SN_EEEES12_RKS13_RKS14_RKS15_RKS16_RKS17_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %a2, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %a3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %a4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %a5) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %a3.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %a4.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %a5.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles", align 1 %ref.tmp = alloca %"class.thrust::tuple.345", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %a2, %"class.thrust::zip_iterator.221"** %a2.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %a3, %"class.thrust::system::cuda::detail::aligned_decomposition"** %a3.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %a4, %"class.thrust::detail::normal_iterator.308"** %a4.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %a5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %a5.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %a2.addr, align 8 %2 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %a3.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %a4.addr, align 8 %4 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %a5.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_(%"class.thrust::tuple.345"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %agg.result, %"class.thrust::tuple.345"* dereferenceable(80) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8 %stream_valid = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.316", %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this1, i32 0, i32 0 %0 = load i8, i8* %stream_valid, align 8, !tbaa !262, !range !77 %tobool = trunc i8 %0 to i1 ret i1 %tobool } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 20, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 88, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8 %e = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.316", %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.result to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %e to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 20, i32 4, i1 false) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8 %s = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.316", %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this1, i32 0, i32 2 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !265 ret %struct.CUstream_st* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8 %be = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.316", %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this1, i32 0, i32 3 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %be, align 8, !tbaa !266 ret %struct.CUevent_st* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 20, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 88, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchESB_S19_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.lifetime.start(i64 20, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 20, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm5EEELm128EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %task to i8* call void @llvm.lifetime.start(i64 112, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 20, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 88, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 112, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %task to i8* call void @llvm.lifetime.end(i64 112, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.lifetime.end(i64 20, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %tmp = alloca { i64, i32 }, align 8 %agg.tmp.coerce = alloca { i64, i32 }, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm5EEELm128EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.351"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm5EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) store { i64, i32 } %call8, { i64, i32 }* %tmp, align 8 %14 = bitcast { i64, i32 }* %tmp to i8* %15 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %14, i64 12, i32 4, i1 false) %16 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 12, i32 4, i1 false) %18 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %19 = load i64, i64* %18, align 4 %20 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %21 = load i32, i32* %20, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %agg.result, i32 %10, i64 %19, i32 %21, i32 2147483647) %22 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %22) #5 %23 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %23) #5 %24 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this1, i32 0, i32 1 %0 = load i32, i32* %m_size, align 4, !tbaa !267 ret i32 %0 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm5EEELm128EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"** %this.addr, align 8 ret i32 128 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"*, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"** %this.addr, align 8 %m_heap_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this1, i32 0, i32 1 %0 = load i32, i32* %m_heap_size, align 4, !tbaa !270 ret i32 %0 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 20, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 88, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 4, !tbaa !271 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S19_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 112, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* noalias sret %agg.result, i32 %size, i64 %block.coerce0, i32 %block.coerce1, i32 %index) #0 comdat { entry: %block = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %coerce = alloca { i64, i32 }, align 4 %size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %block.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %block.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %block to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %4 = load i32, i32* %size.addr, align 4, !tbaa !11 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %block to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = load i32, i32* %index.addr, align 4, !tbaa !11 %8 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 12, i32 4, i1 false) %10 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %11 = load i64, i64* %10, align 4 %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %13 = load i32, i32* %12, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE4makeEiSA_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %agg.result, i32 %4, i64 %11, i32 %13, i32 %7) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %size, i32 %heap_size, i32 %thread.coerce, i32 %index) #0 comdat { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %thread = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %size.addr = alloca i32, align 4 %heap_size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %tmp = alloca { i64, i32 }, align 8 %tmp2 = alloca { i64, i32 }, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %thread, i32 0, i32 0 store i32 %thread.coerce, i32* %coerce.dive, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %0 = load i32, i32* %size.addr, align 4, !tbaa !11 %1 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %thread to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 4, i32 4, i1 false), !tbaa.struct !151 %4 = load i32, i32* %index.addr, align 4, !tbaa !11 %coerce.dive1 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp, i32 0, i32 0 %5 = load i32, i32* %coerce.dive1, align 4 %call = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEE4makeEiiS8_i(i32 %0, i32 %1, i32 %5, i32 %4) store { i64, i32 } %call, { i64, i32 }* %tmp, align 8 %6 = bitcast { i64, i32 }* %tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 12, i32 4, i1 false) %8 = bitcast { i64, i32 }* %tmp2 to i8* %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 12, i32 4, i1 false) %10 = load { i64, i32 }, { i64, i32 }* %tmp2, align 8 ret { i64, i32 } %10 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5agentILm5EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent.322"* %this, i32 %i) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322"*, align 8 %i.addr = alloca i32, align 4 store %"class.thrust::system::cuda::detail::bulk_::agent.322"* %this, %"class.thrust::system::cuda::detail::bulk_::agent.322"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::agent.322"*, %"class.thrust::system::cuda::detail::bulk_::agent.322"** %this.addr, align 8 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %this1, i32 0, i32 0 %0 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %0, i32* %m_index, align 4, !tbaa !273 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.352"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE4makeEiSA_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* noalias sret %agg.result, i32 %size, i64 %block.coerce0, i32 %block.coerce1, i32 %index) #0 comdat align 2 { entry: %block = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %coerce = alloca { i64, i32 }, align 4 %size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %block.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %block.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %block to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %4 = load i32, i32* %size.addr, align 4, !tbaa !11 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %block to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = load i32, i32* %index.addr, align 4, !tbaa !11 %8 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 12, i32 4, i1 false) %10 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %11 = load i64, i64* %10, align 4 %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %13 = load i32, i32* %12, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.result, i32 %4, i64 %11, i32 %13, i32 %7) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %this, i32 %size, i64 %exec.coerce0, i32 %exec.coerce1, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %coerce = alloca { i64, i32 }, align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"*, align 8 %size.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"** %this.addr, align 8, !tbaa !1 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"*, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"** %this.addr, align 8 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %5 = load i32, i32* %size.addr, align 4, !tbaa !11 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 12, i32 4, i1 false) %8 = load i32, i32* %i.addr, align 4, !tbaa !11 %9 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %10 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 12, i32 4, i1 false) %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %12 = load i64, i64* %11, align 4 %13 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %14 = load i32, i32* %13, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEC2EiSA_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %4, i32 %5, i64 %12, i32 %14, i32 %8) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEC2EiSA_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this, i32 %sz, i64 %exec.coerce0, i32 %exec.coerce1, i32 %i) unnamed_addr #1 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %coerce = alloca { i64, i32 }, align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"*, align 8 %sz.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"** %this.addr, align 8, !tbaa !1 store i32 %sz, i32* %sz.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"** %this.addr, align 8 %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this1, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this_exec to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this1, i32 0, i32 1 %6 = load i32, i32* %sz.addr, align 4, !tbaa !11 store i32 %6, i32* %m_size, align 4, !tbaa !267 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this1, i32 0, i32 2 %7 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %7, i32* %m_index, align 4, !tbaa !275 ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEE4makeEiiS8_i(i32 %size, i32 %heap_size, i32 %thread.coerce, i32 %index) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %thread = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %size.addr = alloca i32, align 4 %heap_size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %tmp = alloca { i64, i32 }, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %thread, i32 0, i32 0 store i32 %thread.coerce, i32* %coerce.dive, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %0 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %thread to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 4, i1 false), !tbaa.struct !151 %3 = load i32, i32* %index.addr, align 4, !tbaa !11 %coerce.dive1 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp, i32 0, i32 0 %4 = load i32, i32* %coerce.dive1, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %retval, i32 %0, i32 %4, i32 %3) %5 = bitcast { i64, i32 }* %tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = load { i64, i32 }, { i64, i32 }* %tmp, align 8 ret { i64, i32 } %7 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this, i32 %heap_size, i32 %exec.coerce, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"*, align 8 %heap_size.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"** %this.addr, align 8, !tbaa !1 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"*, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this1 to %"class.thrust::system::cuda::detail::bulk_::parallel_group.320"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 4, i1 false), !tbaa.struct !151 %3 = load i32, i32* %i.addr, align 4, !tbaa !11 %coerce.dive2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp, i32 0, i32 0 %4 = load i32, i32* %coerce.dive2, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm5EEELm128EEC2ES6_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.320"* %0, i32 %4, i32 %3) %m_heap_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this1, i32 0, i32 1 %5 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %5, i32* %m_heap_size, align 4, !tbaa !270 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm5EEELm128EEC2ES6_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.320"* %this, i32 %exec.coerce, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.320"*, align 8 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::parallel_group.320"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.320"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::parallel_group.320"*, %"class.thrust::system::cuda::detail::bulk_::parallel_group.320"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.320"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 4, i1 false), !tbaa.struct !151 %3 = load i32, i32* %i.addr, align 4, !tbaa !11 %coerce.dive2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp, i32 0, i32 0 %4 = load i32, i32* %coerce.dive2, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm5EEELm128EEC2ES8_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %0, i32 %4, i32 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm5EEELm128EEC2ES8_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %this, i32 %exec.coerce, i32 %i) unnamed_addr #1 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"*, align 8 %i.addr = alloca i32, align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"** %this.addr, align 8 %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %this_exec to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.322"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 4, i32 4, i1 false), !tbaa.struct !151 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %this1, i32 0, i32 1 %2 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %2, i32* %m_index, align 4, !tbaa !276 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_SU_EEEEEC2ESB_S19_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 88, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.356"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 20, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.353"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 112, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1B_EN10workaround14supported_pathEjjmS1E_S1B_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 112, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm5EEELm128EEELm0EEENS5_7closureINS3_11scan_detail16accumulate_tilesENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS3_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm5EEELm128EEELm0EEENS5_7closureINS3_11scan_detail16accumulate_tilesENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS3_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm5EEELm128EEELm0EEENS5_7closureINS3_11scan_detail16accumulate_tilesENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS3_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 112, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm5EEELm128EEELm0EEENS5_7closureINS3_11scan_detail16accumulate_tilesENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS3_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_SV_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.355"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_SL_SL_SL_SL_SL_E4typeERKS10_RKS11_RKS12_RKS13_RKS14_(%"class.thrust::tuple.345"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t2.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %t1, %"class.thrust::zip_iterator.221"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t2, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t3, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t1.addr, align 8 %2 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8 %4 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSX_(%"class.thrust::tuple.345"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %4) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16accumulate_tilesENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_SN_EEEC2ES7_RKS11_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %this, %"class.thrust::tuple.345"* dereferenceable(80) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::accumulate_tiles", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"*, align 8 %args.addr = alloca %"class.thrust::tuple.345"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.345"* %args, %"class.thrust::tuple.345"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.344", %"class.thrust::system::cuda::detail::bulk_::detail::closure.344"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.345"*, %"class.thrust::tuple.345"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.345"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.345"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 80, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSX_(%"class.thrust::tuple.345"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.345"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t2.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.345"* %this, %"class.thrust::tuple.345"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %t1, %"class.thrust::zip_iterator.221"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t2, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t3, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.345"*, %"class.thrust::tuple.345"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.345"* %this1 to %"struct.thrust::detail::cons.346"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t1.addr, align 8 %3 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8 %5 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KSP_KSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.346"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %2, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEC2IKS8_KSN_KSP_KSS_KSY_KSL_S1A_S1A_S1A_S1A_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.346"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t2, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.346"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t3.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t4.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t5.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.346"* %this, %"struct.thrust::detail::cons.346"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %t2, %"class.thrust::zip_iterator.221"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t3, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t3.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t4, %"class.thrust::detail::normal_iterator.308"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.346"*, %"struct.thrust::detail::cons.346"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.346", %"struct.thrust::detail::cons.346"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.346", %"struct.thrust::detail::cons.346"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t2.addr, align 8 %4 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t3.addr, align 8 %5 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t4.addr, align 8 %6 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KSL_KSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.347"* %tail, %"class.thrust::zip_iterator.221"* dereferenceable(16) %3, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %4, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEC2IKSJ_KSL_KSO_KSU_KSH_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.347"* %this, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.347"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t2.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.347"* %this, %"struct.thrust::detail::cons.347"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.221"* %t1, %"class.thrust::zip_iterator.221"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t2, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t3, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.347"*, %"struct.thrust::detail::cons.347"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.347", %"struct.thrust::detail::cons.347"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.221"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.221"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.347", %"struct.thrust::detail::cons.347"* %this1, i32 0, i32 1 %3 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8 %5 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEC2IKS6_KSH_KSN_KSC_SV_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.348"* %tail, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEC2IKS6_KSH_KSN_KSC_SV_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.348"* %this, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t2, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.348"*, align 8 %t1.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t3.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.348"* %this, %"struct.thrust::detail::cons.348"** %this.addr, align 8, !tbaa !1 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t1, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t2, %"class.thrust::detail::normal_iterator.308"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.348"*, %"struct.thrust::detail::cons.348"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.348", %"struct.thrust::detail::cons.348"* %this1, i32 0, i32 0 %0 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t1.addr, align 8 %1 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %head to i8* %2 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 40, i32 8, i1 false), !tbaa.struct !220 %tail = getelementptr inbounds %"struct.thrust::detail::cons.348", %"struct.thrust::detail::cons.348"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t2.addr, align 8 %4 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEC2IKSF_KSL_KS7_SR_SR_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.349"* %tail, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEC2IKSF_KSL_KS7_SR_SR_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.349"* %this, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t1, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.349"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t2.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.349"* %this, %"struct.thrust::detail::cons.349"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.308"* %t1, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t2, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.349"*, %"struct.thrust::detail::cons.349"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.349", %"struct.thrust::detail::cons.349"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.308"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.308"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.349", %"struct.thrust::detail::cons.349"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_6system6detail7generic6detail22segmented_scan_functorINS_4pairIaaEEj9add_pairsEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_(%"struct.thrust::detail::cons.335"* %tail, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* noalias sret %agg.result, %struct.CUstream_st* %s, i64 %exec.coerce0, i32 %exec.coerce1, i64 %num_groups) #8 comdat { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %coerce = alloca { i64, i32 }, align 4 %s.addr = alloca %struct.CUstream_st*, align 8 %num_groups.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store i64 %num_groups, i64* %num_groups.addr, align 8, !tbaa !13 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp1 to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = load i64, i64* %num_groups.addr, align 8, !tbaa !13 %7 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 12, i32 4, i1 false) %9 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %10 = load i64, i64* %9, align 4 %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %12 = load i32, i32* %11, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEENS3_14parallel_groupIT_Lm0EEESA_m(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %agg.tmp, i64 %10, i32 %12, i64 %6) %13 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp, %struct.CUstream_st* %13, %struct.CUevent_st* null) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_3conILm128ELm5EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm(i64 %heap_size) #0 comdat { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %heap_size.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %tmp = alloca { i64, i32 }, align 8 store i64 %heap_size, i64* %heap_size.addr, align 8, !tbaa !13 %0 = load i64, i64* %heap_size.addr, align 8, !tbaa !13 %conv = trunc i64 %0 to i32 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm5EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp, i32 0, i32 0 %1 = load i32, i32* %coerce.dive, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %retval, i32 %conv, i32 %1, i32 2147483647) %2 = bitcast { i64, i32 }* %tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) %4 = load { i64, i32 }, { i64, i32 }* %tmp, align 8 ret { i64, i32 } %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEENS3_14parallel_groupIT_Lm0EEESA_m(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* noalias sret %agg.result, i64 %exec.coerce0, i32 %exec.coerce1, i64 %size) #0 comdat { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %coerce = alloca { i64, i32 }, align 4 %size.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store i64 %size, i64* %size.addr, align 8, !tbaa !13 %4 = load i64, i64* %size.addr, align 8, !tbaa !13 %conv = trunc i64 %4 to i32 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 12, i32 4, i1 false) %9 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %10 = load i64, i64* %9, align 4 %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %12 = load i32, i32* %11, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.result, i32 %conv, i64 %10, i32 %12, i32 2147483647) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %exec, %struct.CUstream_st* %s, %struct.CUevent_st* %be) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, align 8 %s.addr = alloca %struct.CUstream_st*, align 8 %be.addr = alloca %struct.CUevent_st*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %be, %struct.CUevent_st** %be.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.316"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"** %this.addr, align 8 %stream_valid = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.316", %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this1, i32 0, i32 0 store i8 1, i8* %stream_valid, align 8, !tbaa !262 %e = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.316", %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %e to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 20, i32 4, i1 false) %s2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.316", %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this1, i32 0, i32 2 %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUstream_st* %2, %struct.CUstream_st** %s2, align 8, !tbaa !265 %be3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.316", %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %this1, i32 0, i32 3 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %be.addr, align 8, !tbaa !1 store %struct.CUevent_st* %3, %struct.CUevent_st** %be3, align 8, !tbaa !266 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 48, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail16inclusive_scan_nENS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEEEENS4_7closureIT_NSD_IT0_T1_T2_T3_T4_SG_SG_SG_SG_SG_EEEEST_RKSU_RKSV_RKSW_RKSX_RKSY_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %a1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %a2, i64* dereferenceable(8) %a3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %a4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %a5) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %a2.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %a3.addr = alloca i64*, align 8 %a4.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %a5.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %ref.tmp = alloca %"class.thrust::tuple.359", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %a2, %"class.thrust::detail::normal_iterator.308"** %a2.addr, align 8, !tbaa !7 store i64* %a3, i64** %a3.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %a4, %"class.thrust::detail::normal_iterator.308"** %a4.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %a5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %a5.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %a1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %a2.addr, align 8 %2 = load i64*, i64** %a3.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %a4.addr, align 8 %4 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %a5.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS3_3tagENS_11use_defaultESH_EEEElSJ_NS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEEEENS8_17make_tuple_mapperIT_T0_T1_T2_T3_SE_SE_SE_SE_SE_E4typeERKSR_RKSS_RKST_RKSU_RKSV_(%"class.thrust::tuple.359"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %0, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %1, i64* dereferenceable(8) %2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS8_INS_4pairIaaEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEESG_SG_SG_SG_SG_EEEC2ES7_RKSS_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %agg.result, %"class.thrust::tuple.359"* dereferenceable(40) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8 %stream_valid = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.323", %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this1, i32 0, i32 0 %0 = load i8, i8* %stream_valid, align 8, !tbaa !278, !range !77 %tobool = trunc i8 %0 to i1 ret i1 %tobool } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 20, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 48, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchESB_S10_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8 %e = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.323", %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %agg.result to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %e to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 20, i32 4, i1 false) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8 %s = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.323", %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this1, i32 0, i32 2 %0 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !281 ret %struct.CUstream_st* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8 %be = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.323", %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this1, i32 0, i32 3 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %be, align 8, !tbaa !282 ret %struct.CUevent_st* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 20, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 48, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchESB_S10_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchESB_S10_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to i8* call void @llvm.lifetime.start(i64 20, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 20, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm256EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm256EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %task to i8* call void @llvm.lifetime.start(i64 72, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 20, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 48, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S10_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %task to i8* call void @llvm.lifetime.end(i64 72, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to i8* call void @llvm.lifetime.end(i64 20, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %tmp = alloca { i64, i32 }, align 8 %agg.tmp.coerce = alloca { i64, i32 }, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm256EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.363"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm256EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm3EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) store { i64, i32 } %call8, { i64, i32 }* %tmp, align 8 %14 = bitcast { i64, i32 }* %tmp to i8* %15 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %14, i64 12, i32 4, i1 false) %16 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 12, i32 4, i1 false) %18 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %19 = load i64, i64* %18, align 4 %20 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %21 = load i32, i32* %20, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* sret %agg.result, i32 %10, i64 %19, i32 %21, i32 2147483647) %22 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %22) #5 %23 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %23) #5 %24 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this1, i32 0, i32 1 %0 = load i32, i32* %m_size, align 4, !tbaa !283 ret i32 %0 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm256EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"** %this.addr, align 8 ret i32 256 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm256EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"*, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"** %this.addr, align 8 %m_heap_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this1, i32 0, i32 1 %0 = load i32, i32* %m_heap_size, align 4, !tbaa !286 ret i32 %0 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 20, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 4, !tbaa !287 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S10_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* noalias sret %agg.result, i32 %size, i64 %block.coerce0, i32 %block.coerce1, i32 %index) #0 comdat { entry: %block = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %coerce = alloca { i64, i32 }, align 4 %size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %block.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %block.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %block to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %4 = load i32, i32* %size.addr, align 4, !tbaa !11 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %block to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = load i32, i32* %index.addr, align 4, !tbaa !11 %8 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 12, i32 4, i1 false) %10 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %11 = load i64, i64* %10, align 4 %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %13 = load i32, i32* %12, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE4makeEiSA_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* sret %agg.result, i32 %4, i64 %11, i32 %13, i32 %7) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %size, i32 %heap_size, i32 %thread.coerce, i32 %index) #0 comdat { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %thread = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %size.addr = alloca i32, align 4 %heap_size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %tmp = alloca { i64, i32 }, align 8 %tmp2 = alloca { i64, i32 }, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %thread, i32 0, i32 0 store i32 %thread.coerce, i32* %coerce.dive, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %0 = load i32, i32* %size.addr, align 4, !tbaa !11 %1 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %thread to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 4, i32 4, i1 false), !tbaa.struct !151 %4 = load i32, i32* %index.addr, align 4, !tbaa !11 %coerce.dive1 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %5 = load i32, i32* %coerce.dive1, align 4 %call = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEE4makeEiiS8_i(i32 %0, i32 %1, i32 %5, i32 %4) store { i64, i32 } %call, { i64, i32 }* %tmp, align 8 %6 = bitcast { i64, i32 }* %tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 12, i32 4, i1 false) %8 = bitcast { i64, i32 }* %tmp2 to i8* %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 12, i32 4, i1 false) %10 = load { i64, i32 }, { i64, i32 }* %tmp2, align 8 ret { i64, i32 } %10 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.364"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj256ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail10grid_makerINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEE4makeEiSA_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* noalias sret %agg.result, i32 %size, i64 %block.coerce0, i32 %block.coerce1, i32 %index) #0 comdat align 2 { entry: %block = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %coerce = alloca { i64, i32 }, align 4 %size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %block.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %block.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %block to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %4 = load i32, i32* %size.addr, align 4, !tbaa !11 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %block to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = load i32, i32* %index.addr, align 4, !tbaa !11 %8 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 12, i32 4, i1 false) %10 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %11 = load i64, i64* %10, align 4 %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %13 = load i32, i32* %12, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %agg.result, i32 %4, i64 %11, i32 %13, i32 %7) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %this, i32 %size, i64 %exec.coerce0, i32 %exec.coerce1, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %coerce = alloca { i64, i32 }, align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"*, align 8 %size.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"** %this.addr, align 8, !tbaa !1 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"*, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"** %this.addr, align 8 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %5 = load i32, i32* %size.addr, align 4, !tbaa !11 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 12, i32 4, i1 false) %8 = load i32, i32* %i.addr, align 4, !tbaa !11 %9 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %10 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 12, i32 4, i1 false) %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %12 = load i64, i64* %11, align 4 %13 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %14 = load i32, i32* %13, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEC2EiSA_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %4, i32 %5, i64 %12, i32 %14, i32 %8) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEC2EiSA_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this, i32 %sz, i64 %exec.coerce0, i32 %exec.coerce1, i32 %i) unnamed_addr #1 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %coerce = alloca { i64, i32 }, align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"*, align 8 %sz.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"** %this.addr, align 8, !tbaa !1 store i32 %sz, i32* %sz.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"** %this.addr, align 8 %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this1, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this_exec to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %m_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this1, i32 0, i32 1 %6 = load i32, i32* %sz.addr, align 4, !tbaa !11 store i32 %6, i32* %m_size, align 4, !tbaa !283 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.325"* %this1, i32 0, i32 2 %7 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %7, i32* %m_index, align 4, !tbaa !289 ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail11block_makerINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEE4makeEiiS8_i(i32 %size, i32 %heap_size, i32 %thread.coerce, i32 %index) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %thread = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %size.addr = alloca i32, align 4 %heap_size.addr = alloca i32, align 4 %index.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %tmp = alloca { i64, i32 }, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %thread, i32 0, i32 0 store i32 %thread.coerce, i32* %coerce.dive, align 4 store i32 %size, i32* %size.addr, align 4, !tbaa !11 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %index, i32* %index.addr, align 4, !tbaa !11 %0 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %thread to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 4, i1 false), !tbaa.struct !151 %3 = load i32, i32* %index.addr, align 4, !tbaa !11 %coerce.dive1 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %4 = load i32, i32* %coerce.dive1, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm256EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %retval, i32 %0, i32 %4, i32 %3) %5 = bitcast { i64, i32 }* %tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = load { i64, i32 }, { i64, i32 }* %tmp, align 8 ret { i64, i32 } %7 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm256EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this, i32 %heap_size, i32 %exec.coerce, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"*, align 8 %heap_size.addr = alloca i32, align 4 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"** %this.addr, align 8, !tbaa !1 store i32 %heap_size, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"*, %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this1 to %"class.thrust::system::cuda::detail::bulk_::parallel_group.327"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 4, i1 false), !tbaa.struct !151 %3 = load i32, i32* %i.addr, align 4, !tbaa !11 %coerce.dive2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %4 = load i32, i32* %coerce.dive2, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm3EEELm256EEC2ES6_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.327"* %0, i32 %4, i32 %3) %m_heap_size = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %this1, i32 0, i32 1 %5 = load i32, i32* %heap_size.addr, align 4, !tbaa !11 store i32 %5, i32* %m_heap_size, align 4, !tbaa !286 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_5agentILm3EEELm256EEC2ES6_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.327"* %this, i32 %exec.coerce, i32 %i) unnamed_addr #0 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.327"*, align 8 %i.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::parallel_group.327"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.327"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::parallel_group.327"*, %"class.thrust::system::cuda::detail::bulk_::parallel_group.327"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.327"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 4, i1 false), !tbaa.struct !151 %3 = load i32, i32* %i.addr, align 4, !tbaa !11 %coerce.dive2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %4 = load i32, i32* %coerce.dive2, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm256EEC2ES8_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %0, i32 %4, i32 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm3EEELm256EEC2ES8_i(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %this, i32 %exec.coerce, i32 %i) unnamed_addr #1 comdat align 2 { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"*, align 8 %i.addr = alloca i32, align 4 %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec, i32 0, i32 0 store i32 %exec.coerce, i32* %coerce.dive, align 4 store %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"*, %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"** %this.addr, align 8 %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %this_exec to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::agent.301"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 4, i32 4, i1 false), !tbaa.struct !151 %m_index = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.328"* %this1, i32 0, i32 1 %2 = load i32, i32* %i.addr, align 4, !tbaa !11 store i32 %2, i32* %m_index, align 4, !tbaa !290 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESN_SN_SN_SN_SN_SN_SN_EENS2_3tagENS_11use_defaultESQ_EEEElSS_NS0_6detail7generic6detail22segmented_scan_functorISM_j9add_pairsEESN_SN_SN_SN_SN_EEEEEC2ESB_S10_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.368"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 20, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.365"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 72, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_EN10workaround14supported_pathEjjmS15_S12_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE6launchEjjmP11CUstream_stS12_EN10workaround14supported_pathEjjmS15_S12_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 72, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm3EEELm256EEELm0EEENS5_7closureINS3_11scan_detail16inclusive_scan_nENS0_5tupleINS5_6cursorILj1EEENS0_6detail15normal_iteratorINS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS3_3tagENS0_11use_defaultESR_EEEElST_NS1_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj256ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS2_3tagENS_11use_defaultESR_EEEElST_NS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm3EEELm256EEELm0EEENS5_7closureINS3_11scan_detail16inclusive_scan_nENS0_5tupleINS5_6cursorILj1EEENS0_6detail15normal_iteratorINS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS3_3tagENS0_11use_defaultESR_EEEElST_NS1_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm3EEELm256EEELm0EEENS5_7closureINS3_11scan_detail16inclusive_scan_nENS0_5tupleINS5_6cursorILj1EEENS0_6detail15normal_iteratorINS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS3_3tagENS0_11use_defaultESR_EEEElST_NS1_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 72, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm3EEELm256EEELm0EEENS5_7closureINS3_11scan_detail16inclusive_scan_nENS0_5tupleINS5_6cursorILj1EEENS0_6detail15normal_iteratorINS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESO_SO_SO_SO_SO_SO_SO_EENS3_3tagENS0_11use_defaultESR_EEEElST_NS1_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESO_SO_SO_SO_SO_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.367"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS3_3tagENS_11use_defaultESH_EEEElSJ_NS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEEEENS8_17make_tuple_mapperIT_T0_T1_T2_T3_SE_SE_SE_SE_SE_E4typeERKSR_RKSS_RKST_RKSU_RKSV_(%"class.thrust::tuple.359"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t0, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t1, i64* dereferenceable(8) %t2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t1, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t3, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8 %2 = load i64*, i64** %t2.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8 %4 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS0_INS_4pairIaaEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS3_3tagENS_11use_defaultESG_EEEElSI_NS1_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEESD_SD_SD_SD_SD_EC2ERKS7_RKSI_RKlST_RKSO_(%"class.thrust::tuple.359"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %0, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %1, i64* dereferenceable(8) %2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %4) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS8_INS_4pairIaaEEjNS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS2_3tagENS_11use_defaultESJ_EEEElSL_NS0_6detail7generic6detail22segmented_scan_functorISF_j9add_pairsEESG_SG_SG_SG_SG_EEEC2ES7_RKSS_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %this, %"class.thrust::tuple.359"* dereferenceable(40) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_scan_n", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"*, align 8 %args.addr = alloca %"class.thrust::tuple.359"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.359"* %args, %"class.thrust::tuple.359"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.358", %"class.thrust::system::cuda::detail::bulk_::detail::closure.358"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.359"*, %"class.thrust::tuple.359"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.359"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.359"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 40, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerINS0_INS_4pairIaaEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS3_3tagENS_11use_defaultESG_EEEElSI_NS1_6detail7generic6detail22segmented_scan_functorISC_j9add_pairsEESD_SD_SD_SD_SD_EC2ERKS7_RKSI_RKlST_RKSO_(%"class.thrust::tuple.359"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t0, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t1, i64* dereferenceable(8) %t2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.359"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.359"* %this, %"class.thrust::tuple.359"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t1, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t3, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.359"*, %"class.thrust::tuple.359"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.359"* %this1 to %"struct.thrust::detail::cons.360"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8 %3 = load i64*, i64** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8 %5 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS4_3tagENS_11use_defaultESH_EEEENS1_IlNS1_ISJ_NS1_INS2_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESE_EEEEEEEEEC2IKS8_KSJ_KlSX_KSP_KSE_S10_S10_S10_S10_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.360"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %2, i64* dereferenceable(8) %3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS4_3tagENS_11use_defaultESH_EEEENS1_IlNS1_ISJ_NS1_INS2_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESE_EEEEEEEEEC2IKS8_KSJ_KlSX_KSP_KSE_S10_S10_S10_S10_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.360"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t2, i64* dereferenceable(8) %t3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.360"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t3.addr = alloca i64*, align 8 %t4.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t5.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.360"* %this, %"struct.thrust::detail::cons.360"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t2, %"class.thrust::detail::normal_iterator.308"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t4, %"class.thrust::detail::normal_iterator.308"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.360"*, %"struct.thrust::detail::cons.360"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.360", %"struct.thrust::detail::cons.360"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.360", %"struct.thrust::detail::cons.360"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 %5 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t4.addr, align 8 %6 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_IlNS1_ISF_NS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEEEC2IKSF_KlSR_KSL_KS7_SU_SU_SU_SU_SU_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.361"* %tail, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3, i64* dereferenceable(8) %4, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_IlNS1_ISF_NS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEEEC2IKSF_KlSR_KSL_KS7_SU_SU_SU_SU_SU_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.361"* %this, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t1, i64* dereferenceable(8) %t2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.361"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.361"* %this, %"struct.thrust::detail::cons.361"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.308"* %t1, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t3, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.361"*, %"struct.thrust::detail::cons.361"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.361", %"struct.thrust::detail::cons.361"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.308"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.308"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.361", %"struct.thrust::detail::cons.361"* %this1, i32 0, i32 1 %3 = load i64*, i64** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8 %5 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIlNS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKlKSF_KSL_KS7_ST_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.362"* %tail, i64* dereferenceable(8) %3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIlNS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKlKSF_KSL_KS7_ST_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.362"* %this, i64* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t2, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.362"*, align 8 %t1.addr = alloca i64*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t3.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.362"* %this, %"struct.thrust::detail::cons.362"** %this.addr, align 8, !tbaa !1 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t2, %"class.thrust::detail::normal_iterator.308"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.362"*, %"struct.thrust::detail::cons.362"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.362", %"struct.thrust::detail::cons.362"* %this1, i32 0, i32 0 %0 = load i64*, i64** %t1.addr, align 8 %1 = load i64, i64* %0, align 8, !tbaa !13 store i64 %1, i64* %head, align 8, !tbaa !292 %tail = getelementptr inbounds %"struct.thrust::detail::cons.362", %"struct.thrust::detail::cons.362"* %this1, i32 0, i32 1 %2 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t2.addr, align 8 %3 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t3.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEC2IKSF_KSL_KS7_SR_SR_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.349"* %tail, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %2, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEEENS3_12async_launchINS3_14parallel_groupIT_Lm0EEEEEP11CUstream_stSB_m(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* noalias sret %agg.result, %struct.CUstream_st* %s, i64 %exec.coerce0, i32 %exec.coerce1, i64 %num_groups) #8 comdat { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %coerce = alloca { i64, i32 }, align 4 %s.addr = alloca %struct.CUstream_st*, align 8 %num_groups.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.324", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store i64 %num_groups, i64* %num_groups.addr, align 8, !tbaa !13 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp1 to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = load i64, i64* %num_groups.addr, align 8, !tbaa !13 %7 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 12, i32 4, i1 false) %9 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %10 = load i64, i64* %9, align 4 %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %12 = load i32, i32* %11, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEEENS3_14parallel_groupIT_Lm0EEESA_m(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* sret %agg.tmp, i64 %10, i32 %12, i64 %6) %13 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %agg.tmp, %struct.CUstream_st* %13, %struct.CUevent_st* null) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_3conILm256ELm3EEENS3_16concurrent_groupINS3_5agentIXT0_EEEXT_EEEm(i64 %heap_size) #0 comdat { entry: %retval = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %heap_size.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::agent.301", align 4 %tmp = alloca { i64, i32 }, align 8 store i64 %heap_size, i64* %heap_size.addr, align 8, !tbaa !13 %0 = load i64, i64* %heap_size.addr, align 8, !tbaa !13 %conv = trunc i64 %0 to i32 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm3EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.301", %"class.thrust::system::cuda::detail::bulk_::agent.301"* %agg.tmp, i32 0, i32 0 %1 = load i32, i32* %coerce.dive, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm3EEELm256EEC2EiS6_i(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %retval, i32 %conv, i32 %1, i32 2147483647) %2 = bitcast { i64, i32 }* %tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %retval to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) %4 = load { i64, i32 }, { i64, i32 }* %tmp, align 8 ret { i64, i32 } %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_3parINS3_16concurrent_groupINS3_5agentILm3EEELm256EEEEENS3_14parallel_groupIT_Lm0EEESA_m(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* noalias sret %agg.result, i64 %exec.coerce0, i32 %exec.coerce1, i64 %size) #0 comdat { entry: %exec = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %coerce = alloca { i64, i32 }, align 4 %size.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326", align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %0 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 0 store i64 %exec.coerce0, i64* %0, align 4 %1 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %coerce, i32 0, i32 1 store i32 %exec.coerce1, i32* %1, align 4 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %exec to i8* %3 = bitcast { i64, i32 }* %coerce to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 12, i32 4, i1 false) store i64 %size, i64* %size.addr, align 8, !tbaa !13 %4 = load i64, i64* %size.addr, align 8, !tbaa !13 %conv = trunc i64 %4 to i32 %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 12, i32 4, i1 false) %7 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.326"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 12, i32 4, i1 false) %9 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %10 = load i64, i64* %9, align 4 %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %12 = load i32, i32* %11, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEC2EiS8_i(%"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %agg.result, i32 %conv, i64 %10, i32 %12, i32 2147483647) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm256EEELm0EEEEC2ESA_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* byval align 8 %exec, %struct.CUstream_st* %s, %struct.CUevent_st* %be) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, align 8 %s.addr = alloca %struct.CUstream_st*, align 8 %be.addr = alloca %struct.CUevent_st*, align 8 store %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %be, %struct.CUevent_st** %be.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::async_launch.323"*, %"class.thrust::system::cuda::detail::bulk_::async_launch.323"** %this.addr, align 8 %stream_valid = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.323", %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this1, i32 0, i32 0 store i8 1, i8* %stream_valid, align 8, !tbaa !278 %e = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.323", %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %e to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.324"* %exec to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 20, i32 4, i1 false) %s2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.323", %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this1, i32 0, i32 2 %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUstream_st* %2, %struct.CUstream_st** %s2, align 8, !tbaa !281 %be3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::async_launch.323", %"class.thrust::system::cuda::detail::bulk_::async_launch.323"* %this1, i32 0, i32 3 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %be.addr, align 8, !tbaa !1 store %struct.CUevent_st* %3, %struct.CUevent_st** %be3, align 8, !tbaa !282 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 104, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 104, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch.316"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_11scan_detail19inclusive_downsweepENS4_6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INSB_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSA_INSB_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEEEENS4_7closureIT_NSB_IT0_T1_T2_T3_T4_T5_SN_SN_SN_SN_EEEES17_RKS18_RKS19_RKS1A_RKS1B_RKS1C_RKS1D_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %a2, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %a3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %a4, %"class.thrust::zip_iterator.216"* dereferenceable(16) %a5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %a6) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %a3.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %a4.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %a5.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %a6.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep", align 1 %ref.tmp = alloca %"class.thrust::tuple.371", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %a2, %"class.thrust::zip_iterator.221"** %a2.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %a3, %"class.thrust::system::cuda::detail::aligned_decomposition"** %a3.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %a4, %"class.thrust::detail::normal_iterator.308"** %a4.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %a5, %"class.thrust::zip_iterator.216"** %a5.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %a6, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %a6.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %a2.addr, align 8 %2 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %a3.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %a4.addr, align 8 %4 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %a5.addr, align 8 %5 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %a6.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_T4_SL_SL_SL_SL_E4typeERKS15_RKS16_RKS17_RKS18_RKS19_RKS1A_(%"class.thrust::tuple.371"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %5) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_EEEC2ES7_RKS16_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %agg.result, %"class.thrust::tuple.371"* dereferenceable(96) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 20, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 104, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchESB_S1E_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 20, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 104, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchESB_S1E_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchESB_S1E_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.lifetime.start(i64 20, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 20, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm5EEELm128EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %task to i8* call void @llvm.lifetime.start(i64 128, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 20, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 104, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 128, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1E_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %task to i8* call void @llvm.lifetime.end(i64 128, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.lifetime.end(i64 20, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent.322", align 4 %tmp = alloca { i64, i32 }, align 8 %agg.tmp.coerce = alloca { i64, i32 }, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm5EEELm128EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.321"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.376"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm5EEELm128EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.318"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm5EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent.322", %"class.thrust::system::cuda::detail::bulk_::agent.322"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i32 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm5EEELm128EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) store { i64, i32 } %call8, { i64, i32 }* %tmp, align 8 %14 = bitcast { i64, i32 }* %tmp to i8* %15 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %14, i64 12, i32 4, i1 false) %16 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group.319"* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 12, i32 4, i1 false) %18 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %19 = load i64, i64* %18, align 4 %20 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %21 = load i32, i32* %20, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* sret %agg.result, i32 %10, i64 %19, i32 %21, i32 2147483647) %22 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %22) #5 %23 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %23) #5 %24 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group.317", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 20, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 104, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 4, !tbaa !295 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S1E_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 128, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.377"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj128ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESP_EEEENSK_INSL_IjSO_SP_SP_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_SU_EEEENS2_21aligned_decompositionIlEENSK_INSL_INSF_ISN_jSU_SU_SU_SU_SU_SU_SU_SU_EESO_SP_SP_EEEENSI_INSF_INSK_INS_10device_ptrISN_EEEEST_SU_SU_SU_SU_SU_SU_SU_SU_EEEENS0_6detail7generic6detail22segmented_scan_functorISN_j9add_pairsEESU_SU_SU_SU_EEEEEC2ESB_S1E_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 104, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.381"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group.317"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 20, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.378"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 128, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_EN10workaround14supported_pathEjjmS1J_S1G_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE6launchEjjmP11CUstream_stS1G_EN10workaround14supported_pathEjjmS1J_S1G_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 128, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm5EEELm128EEELm0EEENS5_7closureINS3_11scan_detail19inclusive_downsweepENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS3_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS0_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj128ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm5EEELm128EEELm0EEENS4_7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS2_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS0_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm5EEELm128EEELm0EEENS5_7closureINS3_11scan_detail19inclusive_downsweepENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS3_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS0_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm5EEELm128EEELm0EEENS5_7closureINS3_11scan_detail19inclusive_downsweepENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS3_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS0_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 128, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm5EEELm128EEELm0EEENS5_7closureINS3_11scan_detail19inclusive_downsweepENS0_5tupleINS5_6cursorILj1EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESQ_EEEENSL_INSM_IjSP_SQ_SQ_EEEENS0_9null_typeESV_SV_SV_SV_SV_SV_SV_EEEENS3_21aligned_decompositionIlEENSL_INSM_INSG_ISO_jSV_SV_SV_SV_SV_SV_SV_SV_EESP_SQ_SQ_EEEENSJ_INSG_INSL_INS0_10device_ptrISO_EEEESU_SV_SV_SV_SV_SV_SV_SV_SV_EEEENS1_6detail7generic6detail22segmented_scan_functorISO_j9add_pairsEESV_SV_SV_SV_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.380"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS3_21aligned_decompositionIlEENSB_INSC_INS9_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS8_INS9_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEEEENSA_17make_tuple_mapperIT_T0_T1_T2_T3_T4_SL_SL_SL_SL_E4typeERKS15_RKS16_RKS17_RKS18_RKS19_RKS1A_(%"class.thrust::tuple.371"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t5) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t2.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t4.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t5.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %t1, %"class.thrust::zip_iterator.221"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t2, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t3, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t4, %"class.thrust::zip_iterator.216"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t1.addr, align 8 %2 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8 %4 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t4.addr, align 8 %5 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSW_RKS12_(%"class.thrust::tuple.371"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %5) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_11scan_detail19inclusive_downsweepENS_5tupleINS4_6cursorILj1EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESI_EEEENSD_INSE_IjSH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_SN_EEEENS2_21aligned_decompositionIlEENSD_INSE_INS8_ISG_jSN_SN_SN_SN_SN_SN_SN_SN_EESH_SI_SI_EEEENSB_INS8_INSD_INS_10device_ptrISG_EEEESM_SN_SN_SN_SN_SN_SN_SN_SN_EEEENS0_6detail7generic6detail22segmented_scan_functorISG_j9add_pairsEESN_SN_SN_SN_EEEC2ES7_RKS16_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %this, %"class.thrust::tuple.371"* dereferenceable(96) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::scan_detail::inclusive_downsweep", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"*, align 8 %args.addr = alloca %"class.thrust::tuple.371"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.371"* %args, %"class.thrust::tuple.371"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.370", %"class.thrust::system::cuda::detail::bulk_::detail::closure.370"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.371"*, %"class.thrust::tuple.371"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.371"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.371"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 96, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESF_EEEENSA_INSB_IjSE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS3_21aligned_decompositionIlEENSA_INSB_INS0_ISD_jSK_SK_SK_SK_SK_SK_SK_SK_EESE_SF_SF_EEEENS8_INS0_INSA_INS_10device_ptrISD_EEEESJ_SK_SK_SK_SK_SK_SK_SK_SK_EEEENS1_6detail7generic6detail22segmented_scan_functorISD_j9add_pairsEESK_SK_SK_SK_EC2ERKS7_RKSM_RKSO_RKSR_RKSW_RKS12_(%"class.thrust::tuple.371"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t5) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.371"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t2.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t4.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t5.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.371"* %this, %"class.thrust::tuple.371"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %t1, %"class.thrust::zip_iterator.221"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t2, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t3, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t4, %"class.thrust::zip_iterator.216"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.371"*, %"class.thrust::tuple.371"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.371"* %this1 to %"struct.thrust::detail::cons.372"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t1.addr, align 8 %3 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8 %5 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t4.addr, align 8 %6 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEEEC2IKS8_KSN_KSP_KSS_KSX_KS13_KSL_S1H_S1H_S1H_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.372"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %2, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %4, %"class.thrust::zip_iterator.216"* dereferenceable(16) %5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj1EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESG_EEEENSB_INSC_IjSF_SG_SG_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEENS1_INS4_21aligned_decompositionIlEENS1_INSB_INSC_INSA_ISE_jSL_SL_SL_SL_SL_SL_SL_SL_EESF_SG_SG_EEEENS1_INS9_INSA_INSB_INS_10device_ptrISE_EEEESK_SL_SL_SL_SL_SL_SL_SL_SL_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISE_j9add_pairsEESL_EEEEEEEEEEEC2IKS8_KSN_KSP_KSS_KSX_KS13_KSL_S1H_S1H_S1H_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.372"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t2, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t4, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.372"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t3.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t4.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t5.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t6.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.372"* %this, %"struct.thrust::detail::cons.372"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.221"* %t2, %"class.thrust::zip_iterator.221"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t3, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t3.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t4, %"class.thrust::detail::normal_iterator.308"** %t4.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t5, %"class.thrust::zip_iterator.216"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t6, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.372"*, %"struct.thrust::detail::cons.372"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.372", %"struct.thrust::detail::cons.372"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor.27"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.372", %"struct.thrust::detail::cons.372"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t2.addr, align 8 %4 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t3.addr, align 8 %5 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t4.addr, align 8 %6 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t5.addr, align 8 %7 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEEEC2IKSJ_KSL_KSO_KST_KSZ_KSH_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.373"* %tail, %"class.thrust::zip_iterator.221"* dereferenceable(16) %3, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %4, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %5, %"class.thrust::zip_iterator.216"* dereferenceable(16) %6, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS1_INSA_21aligned_decompositionIlEENS1_INS4_INS5_INS3_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_SC_SC_EEEENS1_INS2_INS3_INS4_INS_10device_ptrIS7_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_INS8_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESH_EEEEEEEEEC2IKSJ_KSL_KSO_KST_KSZ_KSH_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.373"* %this, %"class.thrust::zip_iterator.221"* dereferenceable(16) %t1, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t2, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.373"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %t2.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t4.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t5.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.373"* %this, %"struct.thrust::detail::cons.373"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.221"* %t1, %"class.thrust::zip_iterator.221"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t2, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t3, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t4, %"class.thrust::zip_iterator.216"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.373"*, %"struct.thrust::detail::cons.373"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.373", %"struct.thrust::detail::cons.373"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.221"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.221"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.373", %"struct.thrust::detail::cons.373"* %this1, i32 0, i32 1 %3 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t3.addr, align 8 %5 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t4.addr, align 8 %6 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS_12zip_iteratorINS9_INS7_INS_10device_ptrISB_EEEENS7_INS8_IjSE_SF_SF_EEEESC_SC_SC_SC_SC_SC_SC_SC_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEEEC2IKS6_KSH_KSP_KSV_KSC_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.374"* %tail, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %3, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %4, %"class.thrust::zip_iterator.216"* dereferenceable(16) %5, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail21aligned_decompositionIlEENS1_INS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS4_3tagENS_11use_defaultESF_EEEENS1_INS_12zip_iteratorINS9_INS7_INS_10device_ptrISB_EEEENS7_INS8_IjSE_SF_SF_EEEESC_SC_SC_SC_SC_SC_SC_SC_EEEENS1_INS2_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEESC_EEEEEEEC2IKS6_KSH_KSP_KSV_KSC_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.374"* %this, %"class.thrust::system::cuda::detail::aligned_decomposition"* dereferenceable(40) %t1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t2, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.374"*, align 8 %t1.addr = alloca %"class.thrust::system::cuda::detail::aligned_decomposition"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t3.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t4.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.374"* %this, %"struct.thrust::detail::cons.374"** %this.addr, align 8, !tbaa !1 store %"class.thrust::system::cuda::detail::aligned_decomposition"* %t1, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %t2, %"class.thrust::detail::normal_iterator.308"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t3, %"class.thrust::zip_iterator.216"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.374"*, %"struct.thrust::detail::cons.374"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.374", %"struct.thrust::detail::cons.374"* %this1, i32 0, i32 0 %0 = load %"class.thrust::system::cuda::detail::aligned_decomposition"*, %"class.thrust::system::cuda::detail::aligned_decomposition"** %t1.addr, align 8 %1 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %head to i8* %2 = bitcast %"class.thrust::system::cuda::detail::aligned_decomposition"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 40, i32 8, i1 false), !tbaa.struct !220 %tail = getelementptr inbounds %"struct.thrust::detail::cons.374", %"struct.thrust::detail::cons.374"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t2.addr, align 8 %4 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t3.addr, align 8 %5 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS_12zip_iteratorINS4_INS2_INS_10device_ptrIS6_EEEENS2_INS3_IjSC_SD_SD_EEEES7_S7_S7_S7_S7_S7_S7_S7_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKSF_KSN_KST_KS7_S11_S11_S11_S11_S11_S11_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.375"* %tail, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3, %"class.thrust::zip_iterator.216"* dereferenceable(16) %4, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS1_INS_12zip_iteratorINS4_INS2_INS_10device_ptrIS6_EEEENS2_INS3_IjSC_SD_SD_EEEES7_S7_S7_S7_S7_S7_S7_S7_EEEENS1_INS9_6detail7generic6detail22segmented_scan_functorIS6_j9add_pairsEES7_EEEEEC2IKSF_KSN_KST_KS7_S11_S11_S11_S11_S11_S11_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.375"* %this, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %t1, %"class.thrust::zip_iterator.216"* dereferenceable(16) %t2, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.375"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %t3.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.375"* %this, %"struct.thrust::detail::cons.375"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.308"* %t1, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.216"* %t2, %"class.thrust::zip_iterator.216"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* %t3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.375"*, %"struct.thrust::detail::cons.375"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.375", %"struct.thrust::detail::cons.375"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.308"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.308"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.375", %"struct.thrust::detail::cons.375"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %t2.addr, align 8 %4 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS1_INSB_6detail7generic6detail22segmented_scan_functorIS7_j9add_pairsEESI_EEEC2IKSK_KSQ_KSI_SW_SW_SW_SW_SW_SW_SW_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.334"* %tail, %"class.thrust::zip_iterator.216"* dereferenceable(16) %3, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS6_SC_NS_11use_defaultESI_EEEESK_(%"class.thrust::detail::contiguous_storage.303"* %this, %"class.thrust::tuple.314"* %first.coerce, %"class.thrust::tuple.314"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.308", align 8 %last = alloca %"class.thrust::detail::normal_iterator.308", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.303"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive2, i32 0, i32 0 store %"class.thrust::tuple.314"* %first.coerce, %"class.thrust::tuple.314"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %last, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive6, i32 0, i32 0 store %"class.thrust::tuple.314"* %last.coerce, %"class.thrust::tuple.314"** %coerce.dive7, align 8 store %"class.thrust::detail::contiguous_storage.303"* %this, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8, !tbaa !1 %this8 = load %"class.thrust::detail::contiguous_storage.303"*, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this8, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.308"* %first to %"class.thrust::iterator_adaptor.309"* %call = call dereferenceable(8) %"class.thrust::pointer.311"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E4baseEv(%"class.thrust::iterator_adaptor.309"* %0) %1 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.311"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.308"* %last to %"class.thrust::iterator_facade.310"* %4 = bitcast %"class.thrust::detail::normal_iterator.308"* %first to %"class.thrust::iterator_facade.310"* %call9 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElSF_S8_SC_SG_SI_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSK_IT5_T6_T7_T8_T9_T10_EEE4typeERKSR_RKSY_(%"class.thrust::iterator_facade.310"* dereferenceable(1) %3, %"class.thrust::iterator_facade.310"* dereferenceable(1) %4) %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive10, i32 0, i32 0 %5 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive11, align 8 call void @_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS8_SC_NS_11use_defaultESG_EElEEvRT_T0_T1_(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %m_allocator, %"class.thrust::tuple.314"* %5, i64 %call9) ret void } ; Function Attrs: uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE3endEv(%"class.thrust::detail::contiguous_storage.303"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.308", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.303"*, align 8 store %"class.thrust::detail::contiguous_storage.303"* %this, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.303"*, %"class.thrust::detail::contiguous_storage.303"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.303", %"class.thrust::detail::contiguous_storage.303"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.308"* %m_begin to %"class.thrust::iterator_facade.310"* %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS0_18no_throw_allocatorINS0_19temporary_allocatorIS6_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.303"* %this1) %call2 = call %"class.thrust::tuple.314"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEET_RKNS_15iterator_facadeISJ_T0_T1_T2_T3_T4_EENSJ_15difference_typeE(%"class.thrust::iterator_facade.310"* dereferenceable(1) %0, i64 %call) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive4, i32 0, i32 0 store %"class.thrust::tuple.314"* %call2, %"class.thrust::tuple.314"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive8, i32 0, i32 0 %1 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive9, align 8 ret %"class.thrust::tuple.314"* %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS8_SC_NS_11use_defaultESG_EElEEvRT_T0_T1_(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %a, %"class.thrust::tuple.314"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::pointer.311", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %a, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.311"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive2, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive3, align 8 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS9_SD_NS_11use_defaultESH_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSK_SL_T1_(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %0, %"class.thrust::tuple.314"* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElSF_S8_SC_SG_SI_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSK_IT5_T6_T7_T8_T9_T10_EEE4typeERKSR_RKSY_(%"class.thrust::iterator_facade.310"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.310"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.310"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.310"*, align 8 store %"class.thrust::iterator_facade.310"* %lhs, %"class.thrust::iterator_facade.310"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.310"* %rhs, %"class.thrust::iterator_facade.310"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.310"*, %"class.thrust::iterator_facade.310"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.310"* %0 to %"class.thrust::detail::normal_iterator.308"* %2 = load %"class.thrust::iterator_facade.310"*, %"class.thrust::iterator_facade.310"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.310"* %2 to %"class.thrust::detail::normal_iterator.308"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENS2_20distance_from_resultIT_T0_E4typeERKSI_RKSJ_(%"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEENS_7pointerIS9_SD_NS_11use_defaultESH_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSK_SL_T1_(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %a, %"class.thrust::tuple.314"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::pointer.311", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %agg.tmp2 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce = alloca %"class.thrust::pointer.311", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %p.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %a, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE3getERSE_(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %0) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %2 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.311"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %5 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 %call5 = call %"class.thrust::tuple.314"* @_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSD_21execution_policy_baseIT_EESG_T1_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, %"class.thrust::tuple.314"* %5, i64 %4) %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive6, i32 0, i32 0 store %"class.thrust::tuple.314"* %call5, %"class.thrust::tuple.314"** %coerce.dive7, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSD_21execution_policy_baseIT_EESG_T1_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"class.thrust::tuple.314"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.311", align 8 %first = alloca %"class.thrust::pointer.311", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %first.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.311"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive4, i32 0, i32 0 %5 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive5, align 8 %call6 = call %"class.thrust::tuple.314"* @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"class.thrust::tuple.314"* %5, i64 %4) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive7, i32 0, i32 0 store %"class.thrust::tuple.314"* %call6, %"class.thrust::tuple.314"** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive9, i32 0, i32 0 %6 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive10, align 8 ret %"class.thrust::tuple.314"* %6 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagEEEEEE3getERSE_(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %a) #8 comdat align 2 { entry: %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %a, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISH_E4typeEE4typeERSH_(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %0) ret %"struct.thrust::system::cuda::detail::tag"* %call } ; Function Attrs: uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::tuple.314"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.311", align 8 %first = alloca %"class.thrust::pointer.311", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.311", align 8 %agg.tmp2 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %first.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %1 = bitcast %"class.thrust::pointer.311"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.311"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive3, i32 0, i32 0 %4 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive4, align 8 %call = call %"class.thrust::tuple.314"* @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_EN10workaround13parallel_pathERNSH_IS4_EESC_lSF_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %0, %"class.thrust::tuple.314"* %4, i64 %3) %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive5, i32 0, i32 0 store %"class.thrust::tuple.314"* %call, %"class.thrust::tuple.314"** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive7, i32 0, i32 0 %5 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive8, align 8 ret %"class.thrust::tuple.314"* %5 } ; Function Attrs: uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EES4_NS_11use_defaultESB_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESG_T1_T2_EN10workaround13parallel_pathERNSH_IS4_EESC_lSF_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::tuple.314"* %first.coerce, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.311", align 8 %first = alloca %"class.thrust::pointer.311", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %narrow_n = alloca i32, align 4 %narrow_num_groups = alloca i32, align 4 %narrow_group_size = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.147", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp3 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp5 = alloca %"class.thrust::pointer.311", align 8 %agg.tmp6 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %num_groups = alloca i64, align 8 %group_size = alloca i64, align 8 %coerce13 = alloca %"class.thrust::tuple.152", align 8 %ref.tmp15 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp16 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp17 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp18 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp19 = alloca %"class.thrust::pointer.311", align 8 %agg.tmp20 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %ref.tmp25 = alloca i64, align 8 %agg.tmp.ensured = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp28 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp31 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp32 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp33 = alloca %"class.thrust::pointer.311", align 8 %agg.tmp34 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %ref.tmp37 = alloca i32, align 4 %agg.tmp.ensured40 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp41 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp46 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp47 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp48 = alloca %"class.thrust::pointer.311", align 8 %agg.tmp49 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %first.coerce, %"class.thrust::tuple.314"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEC2ERKS3_(%"struct.thrust::detail::wrapped_function.146"* %wrapped_f, %"struct.thrust::detail::allocator_traits_detail::gozer"* dereferenceable(1) %f) %1 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.start(i64 4, i8* %1) #5 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %conv = trunc i64 %2 to i32 store i32 %conv, i32* %narrow_n, align 4, !tbaa !11 %3 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %narrow_num_groups, align 4, !tbaa !11 %4 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %narrow_group_size, align 4, !tbaa !11 %call = call { i32*, i32* } @_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %narrow_group_size) %coerce.dive2 = getelementptr inbounds %"class.thrust::tuple.147", %"class.thrust::tuple.147"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.148"* %coerce.dive2 to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call, 1 store i32* %9, i32** %8, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, i64 2147483647, i64 2147483647, i64 2147483647) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %11 = bitcast %"class.thrust::pointer.311"* %agg.tmp5 to i8* %12 = bitcast %"class.thrust::pointer.311"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %13 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp6 to i8* %14 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 1, i32 1, i1 false), !tbaa.struct !41 %15 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp5, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive7, i32 0, i32 0 %16 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive8, align 8 %call9 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENSC_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::tuple.314"* %16, i32 %15) %17 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call9, i64* %17, align 4 %call10 = call dereferenceable(16) %"class.thrust::tuple.147"* @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.147"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %18 = load i64, i64* %n.addr, align 8, !tbaa !13 %19 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %20 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %mul = mul i32 %19, %20 %call11 = call zeroext i1 @_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j(i64 %18, i32 %mul) br i1 %call11, label %if.then, label %if.else if.then: ; preds = %entry %21 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.start(i64 8, i8* %21) #5 store i64 0, i64* %num_groups, align 8, !tbaa !13 %22 = bitcast i64* %group_size to i8* call void @llvm.lifetime.start(i64 8, i8* %22) #5 store i64 0, i64* %group_size, align 8, !tbaa !13 %call12 = call { i64*, i64* } @_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %group_size) %coerce.dive14 = getelementptr inbounds %"class.thrust::tuple.152", %"class.thrust::tuple.152"* %coerce13, i32 0, i32 0 %23 = bitcast %"struct.thrust::detail::cons.153"* %coerce.dive14 to { i64*, i64* }* %24 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %23, i32 0, i32 0 %25 = extractvalue { i64*, i64* } %call12, 0 store i64* %25, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %23, i32 0, i32 1 %27 = extractvalue { i64*, i64* } %call12, 1 store i64* %27, i64** %26, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp16, i64 2147483647, i64 2147483647, i64 2147483647) %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp18 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %28, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %29 = bitcast %"class.thrust::pointer.311"* %agg.tmp19 to i8* %30 = bitcast %"class.thrust::pointer.311"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %29, i8* %30, i64 8, i32 8, i1 false) %31 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp20 to i8* %32 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %31, i8* %32, i64 1, i32 1, i1 false), !tbaa.struct !41 %33 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive21 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp19, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive21, i32 0, i32 0 %34 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive22, align 8 %call23 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENSC_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp16, %"class.thrust::tuple.314"* %34, i64 %33) %35 = bitcast %"struct.thrust::pair.82"* %ref.tmp15 to i64* store i64 %call23, i64* %35, align 4 %call24 = call dereferenceable(16) %"class.thrust::tuple.152"* @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.152"* %coerce13, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp15) %36 = load i64, i64* %n.addr, align 8, !tbaa !13 %37 = load i64, i64* %group_size, align 8, !tbaa !13 %call26 = call i64 @_ZN6thrust6detail4util9divide_riIllEET_S3_T0_(i64 %36, i64 %37) store i64 %call26, i64* %ref.tmp25, align 8, !tbaa !13 %call27 = call i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %ref.tmp25) store i64 %call27, i64* %num_groups, align 8, !tbaa !13 %38 = load i64, i64* %num_groups, align 8, !tbaa !13 %39 = load i64, i64* %group_size, align 8, !tbaa !13 %40 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %41 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %40 to %"struct.thrust::detail::execution_policy_base.121"* %call29 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %41) %42 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call29 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call30 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %42) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp28, i64 %38, i64 %39, i64 0, %struct.CUstream_st* %call30) %43 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp32 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %43, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %44 = bitcast %"class.thrust::pointer.311"* %agg.tmp33 to i8* %45 = bitcast %"class.thrust::pointer.311"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %44, i8* %45, i64 8, i32 8, i1 false) %46 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp34 to i8* %47 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %46, i8* %47, i64 1, i32 1, i1 false), !tbaa.struct !41 %48 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive35 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp33, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive35, i32 0, i32 0 %49 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive36, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp28, %"class.thrust::tuple.314"* %49, i64 %48) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured) #5 %50 = bitcast i64* %group_size to i8* call void @llvm.lifetime.end(i64 8, i8* %50) #5 %51 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %51) #5 br label %if.end if.else: ; preds = %entry %52 = load i32, i32* %narrow_n, align 4, !tbaa !11 %53 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %call38 = call i32 @_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_(i32 %52, i32 %53) store i32 %call38, i32* %ref.tmp37, align 4, !tbaa !11 %call39 = call i32 @_ZN6thrust3minIjEET_RKS1_S3_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %ref.tmp37) store i32 %call39, i32* %narrow_num_groups, align 4, !tbaa !11 %54 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %conv42 = zext i32 %54 to i64 %55 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %conv43 = zext i32 %55 to i64 %56 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %57 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %56 to %"struct.thrust::detail::execution_policy_base.121"* %call44 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %57) %58 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call44 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call45 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %58) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp41, i64 %conv42, i64 %conv43, i64 0, %struct.CUstream_st* %call45) %59 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp47 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %59, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %60 = bitcast %"class.thrust::pointer.311"* %agg.tmp48 to i8* %61 = bitcast %"class.thrust::pointer.311"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %60, i8* %61, i64 8, i32 8, i1 false) %62 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp49 to i8* %63 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %62, i8* %63, i64 1, i32 1, i1 false), !tbaa.struct !41 %64 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive50 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %agg.tmp48, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive50, i32 0, i32 0 %65 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive51, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured40, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp41, %"class.thrust::tuple.314"* %65, i32 %64) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured40) #5 br label %if.end if.end: ; preds = %if.else, %if.then %66 = bitcast %"class.thrust::pointer.311"* %first to %"class.thrust::iterator_facade.313"* %67 = load i64, i64* %n.addr, align 8, !tbaa !13 %call52 = call %"class.thrust::tuple.314"* @_ZN6thrustplINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.313"* dereferenceable(1) %66, i64 %67) %coerce.dive53 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive54 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive53, i32 0, i32 0 store %"class.thrust::tuple.314"* %call52, %"class.thrust::tuple.314"** %coerce.dive54, align 8 %68 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %68) #5 %69 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %69) #5 %70 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.end(i64 4, i8* %70) #5 %71 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %71) #5 %coerce.dive55 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive55, i32 0, i32 0 %72 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive56, align 8 ret %"class.thrust::tuple.314"* %72 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENSC_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::tuple.314"* %arg2.coerce, i32 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::pointer.311", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %arg2.coerce, %"class.thrust::tuple.314"** %coerce.dive2, align 8 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::pointer.311"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIaaEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEEjSF_SF_SF_SF_SF_SF_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %agg.tmp4) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENSC_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::tuple.314"* %arg2.coerce, i64 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::pointer.311", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %arg2.coerce, %"class.thrust::tuple.314"** %coerce.dive2, align 8 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::pointer.311"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIaaEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEElSF_SF_SF_SF_SF_SF_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %agg.tmp4) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::tuple.314"* %arg2.coerce, i64 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::pointer.311", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %arg2.coerce, %"class.thrust::tuple.314"** %coerce.dive2, align 8 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::pointer.311"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %agg.tmp4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::tuple.314"* %arg2.coerce, i32 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::pointer.311", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 store %"class.thrust::tuple.314"* %arg2.coerce, %"class.thrust::tuple.314"** %coerce.dive2, align 8 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::pointer.311"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %agg.tmp4) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrustplINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.313"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::pointer.311", align 8 %i.addr = alloca %"class.thrust::iterator_facade.313"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::pointer.311", align 8 store %"class.thrust::iterator_facade.313"* %i, %"class.thrust::iterator_facade.313"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.311"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.313"*, %"class.thrust::iterator_facade.313"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.313"* %1 to %"class.thrust::pointer.311"* %3 = bitcast %"class.thrust::pointer.311"* %tmp to i8* %4 = bitcast %"class.thrust::pointer.311"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::pointer.311"* %tmp to %"class.thrust::iterator_facade.313"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::pointer.311"* @_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEpLEl(%"class.thrust::iterator_facade.313"* %5, i64 %6) %7 = bitcast %"class.thrust::pointer.311"* %retval to i8* %8 = bitcast %"class.thrust::pointer.311"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::pointer.311"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive, i32 0, i32 0 %10 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive1, align 8 ret %"class.thrust::tuple.314"* %10 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIaaEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEEjSF_SF_SF_SF_SF_SF_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::pointer.311"* dereferenceable(8) %a2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %a3, i32* dereferenceable(4) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::pointer.311"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %a4.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.384", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %a2, %"class.thrust::pointer.311"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %a3, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8, !tbaa !7 store i32* %a4, i32** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8 %3 = load i32*, i32** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_(%"class.thrust::tuple.384"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::pointer.311"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i32* dereferenceable(4) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %agg.result, %"class.thrust::tuple.384"* dereferenceable(24) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_(%"class.thrust::tuple.384"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::pointer.311"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::pointer.311"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %t1, %"class.thrust::pointer.311"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %3 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIaaEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKj(%"class.thrust::tuple.384"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::pointer.311"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i32* dereferenceable(4) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEEjSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %this, %"class.thrust::tuple.384"* dereferenceable(24) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"*, align 8 %args.addr = alloca %"class.thrust::tuple.384"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.384"* %args, %"class.thrust::tuple.384"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.384"*, %"class.thrust::tuple.384"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.384"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.384"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIaaEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKj(%"class.thrust::tuple.384"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::pointer.311"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.384"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::pointer.311"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.384"* %this, %"class.thrust::tuple.384"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %t1, %"class.thrust::pointer.311"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.384"*, %"class.thrust::tuple.384"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.384"* %this1 to %"struct.thrust::detail::cons.385"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjSD_EEEEEEEC2IKS8_KSH_KSL_KjKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.385"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::pointer.311"* dereferenceable(8) %2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjSD_EEEEEEEC2IKS8_KSH_KSL_KjKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.385"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::pointer.311"* dereferenceable(8) %t2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t3, i32* dereferenceable(4) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.385"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::pointer.311"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t4.addr = alloca i32*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.385"* %this, %"struct.thrust::detail::cons.385"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %t2, %"class.thrust::pointer.311"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t3, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8, !tbaa !7 store i32* %t4, i32** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.385"*, %"struct.thrust::detail::cons.385"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.385", %"struct.thrust::detail::cons.385"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.385", %"struct.thrust::detail::cons.385"* %this1, i32 0, i32 1 %3 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8 %5 = load i32*, i32** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjS6_EEEEEC2IKSD_KSH_KjKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.386"* %tail, %"class.thrust::pointer.311"* dereferenceable(8) %3, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %4, i32* dereferenceable(4) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjS6_EEEEEC2IKSD_KSH_KjKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.386"* %this, %"class.thrust::pointer.311"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.386"*, align 8 %t1.addr = alloca %"class.thrust::pointer.311"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.386"* %this, %"struct.thrust::detail::cons.386"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.311"* %t1, %"class.thrust::pointer.311"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.386"*, %"struct.thrust::detail::cons.386"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.386", %"struct.thrust::detail::cons.386"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %t1.addr, align 8 %1 = bitcast %"class.thrust::pointer.311"* %head to i8* %2 = bitcast %"class.thrust::pointer.311"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.386", %"struct.thrust::detail::cons.386"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEC2IKS5_KjKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.158"* %tail, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS9_INS_4pairIaaEEjNS_9null_typeESF_SF_SF_SF_SF_SF_SF_EENS2_3tagENS_11use_defaultESI_EENS_6detail16wrapped_functionINSK_23allocator_traits_detail5gozerEvEElSF_SF_SF_SF_SF_SF_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SE_SE_SE_SE_SE_SE_EEEESP_RKSQ_RKSR_RKSS_RKST_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::pointer.311"* dereferenceable(8) %a2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %a3, i64* dereferenceable(8) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::pointer.311"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %a4.addr = alloca i64*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.395", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %a2, %"class.thrust::pointer.311"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %a3, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8, !tbaa !7 store i64* %a4, i64** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8 %3 = load i64*, i64** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_(%"class.thrust::tuple.395"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::pointer.311"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i64* dereferenceable(8) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %agg.result, %"class.thrust::tuple.395"* dereferenceable(32) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESC_SC_SC_SC_SC_SC_SC_EENS3_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElEENSH_17make_tuple_mapperIT_T0_T1_T2_SC_SC_SC_SC_SC_SC_E4typeERKSN_RKSO_RKSP_RKSQ_(%"class.thrust::tuple.395"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::pointer.311"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::pointer.311"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %t1, %"class.thrust::pointer.311"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %3 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIaaEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKl(%"class.thrust::tuple.395"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::pointer.311"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i64* dereferenceable(8) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS8_INS_4pairIaaEEjNS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS2_3tagENS_11use_defaultESH_EENS_6detail16wrapped_functionINSJ_23allocator_traits_detail5gozerEvEElSE_SE_SE_SE_SE_SE_EEEC2ES7_RKSO_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %this, %"class.thrust::tuple.395"* dereferenceable(32) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"*, align 8 %args.addr = alloca %"class.thrust::tuple.395"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.395"* %args, %"class.thrust::tuple.395"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.395"*, %"class.thrust::tuple.395"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.395"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.395"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 32, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS0_INS_4pairIaaEEjNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EENS3_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElSB_SB_SB_SB_SB_SB_EC2ERKS7_RKSF_RKSK_RKl(%"class.thrust::tuple.395"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::pointer.311"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.395"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::pointer.311"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.395"* %this, %"class.thrust::tuple.395"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %t1, %"class.thrust::pointer.311"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.395"*, %"class.thrust::tuple.395"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.395"* %this1 to %"struct.thrust::detail::cons.396"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlSD_EEEEEEEC2IKS8_KSH_KSL_KlKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.396"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::pointer.311"* dereferenceable(8) %2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeESD_SD_SD_SD_SD_SD_SD_EENS4_3tagENS_11use_defaultESG_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlSD_EEEEEEEC2IKS8_KSH_KSL_KlKSD_SV_SV_SV_SV_SV_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.396"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::pointer.311"* dereferenceable(8) %t2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t3, i64* dereferenceable(8) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.396"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::pointer.311"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t4.addr = alloca i64*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.396"* %this, %"struct.thrust::detail::cons.396"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %t2, %"class.thrust::pointer.311"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t3, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8, !tbaa !7 store i64* %t4, i64** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.396"*, %"struct.thrust::detail::cons.396"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.396", %"struct.thrust::detail::cons.396"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.396", %"struct.thrust::detail::cons.396"* %this1, i32 0, i32 1 %3 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8 %5 = load i64*, i64** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlS6_EEEEEC2IKSD_KSH_KlKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.397"* %tail, %"class.thrust::pointer.311"* dereferenceable(8) %3, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %4, i64* dereferenceable(8) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlS6_EEEEEC2IKSD_KSH_KlKS6_SP_SP_SP_SP_SP_SP_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.397"* %this, %"class.thrust::pointer.311"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.397"*, align 8 %t1.addr = alloca %"class.thrust::pointer.311"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.397"* %this, %"struct.thrust::detail::cons.397"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.311"* %t1, %"class.thrust::pointer.311"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.397"*, %"struct.thrust::detail::cons.397"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.397", %"struct.thrust::detail::cons.397"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %t1.addr, align 8 %1 = bitcast %"class.thrust::pointer.311"* %head to i8* %2 = bitcast %"class.thrust::pointer.311"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.397", %"struct.thrust::detail::cons.397"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEC2IKS5_KlKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.164"* %tail, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 40, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 40, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 40, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 40, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %task to i8* call void @llvm.lifetime.start(i64 72, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 40, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %task to i8* call void @llvm.lifetime.end(i64 72, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.398"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.394", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 40, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !297 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.399"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEElSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.394"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 40, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.403"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.400"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 72, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 72, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS3_3tagENS0_11use_defaultESP_EENS0_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS3_3tagENS0_11use_defaultESP_EENS0_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS3_3tagENS0_11use_defaultESP_EENS0_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 72, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS3_3tagENS0_11use_defaultESP_EENS0_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEElSM_SM_SM_SM_SM_SM_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.402"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 32, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 32, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 32, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 32, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchESB_SW_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %task to i8* call void @llvm.lifetime.start(i64 64, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 32, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 64, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %task to i8* call void @llvm.lifetime.end(i64 64, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.387"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.383", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 32, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !299 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SW_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 64, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.388"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSF_INS_4pairIaaEEjNS_9null_typeESL_SL_SL_SL_SL_SL_SL_EENS2_3tagENS_11use_defaultESO_EENS_6detail16wrapped_functionINSQ_23allocator_traits_detail5gozerEvEEjSL_SL_SL_SL_SL_SL_EEEEEC2ESB_SW_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.383"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 32, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.392"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.389"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 64, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE6launchEjjmP11CUstream_stSY_EN10workaround14supported_pathEjjmS11_SY_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 64, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS3_3tagENS0_11use_defaultESP_EENS0_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINSG_INS_4pairIaaEEjNS_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS2_3tagENS_11use_defaultESP_EENS_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS3_3tagENS0_11use_defaultESP_EENS0_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS3_3tagENS0_11use_defaultESP_EENS0_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 64, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINSG_INS0_4pairIaaEEjNS0_9null_typeESM_SM_SM_SM_SM_SM_SM_EENS3_3tagENS0_11use_defaultESP_EENS0_6detail16wrapped_functionINSR_23allocator_traits_detail5gozerEvEEjSM_SM_SM_SM_SM_SM_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.391"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.311"* @_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEpLEl(%"class.thrust::iterator_facade.313"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.313"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.313"* %this, %"class.thrust::iterator_facade.313"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.313"*, %"class.thrust::iterator_facade.313"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.311"* @_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7derivedEv(%"class.thrust::iterator_facade.313"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEvRT_NSE_15difference_typeE(%"class.thrust::pointer.311"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::pointer.311"* @_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7derivedEv(%"class.thrust::iterator_facade.313"* %this1) ret %"class.thrust::pointer.311"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEvRT_NSE_15difference_typeE(%"class.thrust::pointer.311"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::pointer.311"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::pointer.311"* %f, %"class.thrust::pointer.311"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %f.addr, align 8 %1 = bitcast %"class.thrust::pointer.311"* %0 to %"class.thrust::iterator_adaptor.312"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7advanceEl(%"class.thrust::iterator_adaptor.312"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.311"* @_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7derivedEv(%"class.thrust::iterator_facade.313"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.313"*, align 8 store %"class.thrust::iterator_facade.313"* %this, %"class.thrust::iterator_facade.313"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.313"*, %"class.thrust::iterator_facade.313"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.313"* %this1 to %"class.thrust::pointer.311"* ret %"class.thrust::pointer.311"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE7advanceEl(%"class.thrust::iterator_adaptor.312"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.312"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.312"* %this, %"class.thrust::iterator_adaptor.312"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.312"*, %"class.thrust::iterator_adaptor.312"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %this1, i32 0, i32 0 %1 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %m_iterator, align 8, !tbaa !255 %add.ptr = getelementptr inbounds %"class.thrust::tuple.314", %"class.thrust::tuple.314"* %1, i64 %0 store %"class.thrust::tuple.314"* %add.ptr, %"class.thrust::tuple.314"** %m_iterator, align 8, !tbaa !255 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISH_E4typeEE4typeERSH_(%"struct.thrust::detail::no_throw_allocator.304"* dereferenceable(8) %a) #1 comdat { entry: %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.304"*, align 8 store %"struct.thrust::detail::no_throw_allocator.304"* %a, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::no_throw_allocator.304"*, %"struct.thrust::detail::no_throw_allocator.304"** %a.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.304"* %0 to %"class.thrust::detail::temporary_allocator.305"* %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.305"* %1) ret %"struct.thrust::system::cuda::detail::tag"* %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENS2_20distance_from_resultIT_T0_E4typeERKSI_RKSJ_(%"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.308"* %f1, %"class.thrust::detail::normal_iterator.308"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %f2, %"class.thrust::detail::normal_iterator.308"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENT_15difference_typeERKSH_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEESG_EENT_15difference_typeERKSH_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 store %"class.thrust::detail::normal_iterator.308"* %f1, %"class.thrust::detail::normal_iterator.308"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.308"* %f2, %"class.thrust::detail::normal_iterator.308"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.308"* %1 to %"class.thrust::iterator_adaptor.309"* %3 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.308"* %3 to %"class.thrust::iterator_adaptor.309"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E11distance_toISF_SE_SD_SD_SD_SD_SD_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.309"* %2, %"class.thrust::iterator_adaptor.309"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E11distance_toISF_SE_SD_SD_SD_SD_SD_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.309"* %this, %"class.thrust::iterator_adaptor.309"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.309"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.309"*, align 8 store %"class.thrust::iterator_adaptor.309"* %this, %"class.thrust::iterator_adaptor.309"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.309"* %y, %"class.thrust::iterator_adaptor.309"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.309"*, %"class.thrust::iterator_adaptor.309"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.309"*, %"class.thrust::iterator_adaptor.309"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.311"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E4baseEv(%"class.thrust::iterator_adaptor.309"* %0) %1 = bitcast %"class.thrust::pointer.311"* %call to %"class.thrust::iterator_facade.313"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %this1, i32 0, i32 0 %2 = bitcast %"class.thrust::pointer.311"* %m_iterator to %"class.thrust::iterator_facade.313"* %call2 = call i64 @_ZN6thrustmiINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElSC_S6_SA_SD_SF_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSI_IT5_T6_T7_T8_T9_T10_EEE4typeERKSP_RKSW_(%"class.thrust::iterator_facade.313"* dereferenceable(1) %1, %"class.thrust::iterator_facade.313"* dereferenceable(1) %2) ret i64 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElSC_S6_SA_SD_SF_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSI_IT5_T6_T7_T8_T9_T10_EEE4typeERKSP_RKSW_(%"class.thrust::iterator_facade.313"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.313"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.313"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.313"*, align 8 store %"class.thrust::iterator_facade.313"* %lhs, %"class.thrust::iterator_facade.313"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.313"* %rhs, %"class.thrust::iterator_facade.313"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.313"*, %"class.thrust::iterator_facade.313"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.313"* %0 to %"class.thrust::pointer.311"* %2 = load %"class.thrust::iterator_facade.313"*, %"class.thrust::iterator_facade.313"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.313"* %2 to %"class.thrust::pointer.311"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENS_6detail20distance_from_resultIT_T0_E4typeERKSG_RKSH_(%"class.thrust::pointer.311"* dereferenceable(8) %1, %"class.thrust::pointer.311"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENS_6detail20distance_from_resultIT_T0_E4typeERKSG_RKSH_(%"class.thrust::pointer.311"* dereferenceable(8) %f1, %"class.thrust::pointer.311"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::pointer.311"*, align 8 %f2.addr = alloca %"class.thrust::pointer.311"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::pointer.311"* %f1, %"class.thrust::pointer.311"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %f2, %"class.thrust::pointer.311"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %f1.addr, align 8 %1 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENT_15difference_typeERKSE_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::pointer.311"* dereferenceable(8) %0, %"class.thrust::pointer.311"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES6_S6_S6_S6_S6_S6_S6_EENS_6system4cuda6detail3tagENS_11use_defaultESC_EESD_EENT_15difference_typeERKSE_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::pointer.311"* dereferenceable(8) %f1, %"class.thrust::pointer.311"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::pointer.311"*, align 8 %f2.addr = alloca %"class.thrust::pointer.311"*, align 8 store %"class.thrust::pointer.311"* %f1, %"class.thrust::pointer.311"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.311"* %f2, %"class.thrust::pointer.311"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %f1.addr, align 8 %2 = bitcast %"class.thrust::pointer.311"* %1 to %"class.thrust::iterator_adaptor.312"* %3 = load %"class.thrust::pointer.311"*, %"class.thrust::pointer.311"** %f2.addr, align 8 %4 = bitcast %"class.thrust::pointer.311"* %3 to %"class.thrust::iterator_adaptor.312"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE11distance_toISC_SD_S6_SA_SE_SG_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.312"* %2, %"class.thrust::iterator_adaptor.312"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE11distance_toISC_SD_S6_SA_SE_SG_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.312"* %this, %"class.thrust::iterator_adaptor.312"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.312"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.312"*, align 8 store %"class.thrust::iterator_adaptor.312"* %this, %"class.thrust::iterator_adaptor.312"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.312"* %y, %"class.thrust::iterator_adaptor.312"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.312"*, %"class.thrust::iterator_adaptor.312"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.312"*, %"class.thrust::iterator_adaptor.312"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::tuple.314"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EEPS6_S6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElE4baseEv(%"class.thrust::iterator_adaptor.312"* %0) %1 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %this1, i32 0, i32 0 %2 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %m_iterator, align 8, !tbaa !255 %sub.ptr.lhs.cast = ptrtoint %"class.thrust::tuple.314"* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %"class.thrust::tuple.314"* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 ret i64 %sub.ptr.div } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::tuple.314"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEET_RKNS_15iterator_facadeISJ_T0_T1_T2_T3_T4_EENSJ_15difference_typeE(%"class.thrust::iterator_facade.310"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.308", align 8 %i.addr = alloca %"class.thrust::iterator_facade.310"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.308", align 8 store %"class.thrust::iterator_facade.310"* %i, %"class.thrust::iterator_facade.310"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.308"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.310"*, %"class.thrust::iterator_facade.310"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.310"* %1 to %"class.thrust::detail::normal_iterator.308"* %3 = bitcast %"class.thrust::detail::normal_iterator.308"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.308"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.308"* %tmp to %"class.thrust::iterator_facade.310"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.308"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEpLEl(%"class.thrust::iterator_facade.310"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.308"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.308"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.308"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.308", %"class.thrust::detail::normal_iterator.308"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.311", %"class.thrust::pointer.311"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.312", %"class.thrust::iterator_adaptor.312"* %coerce.dive2, i32 0, i32 0 %10 = load %"class.thrust::tuple.314"*, %"class.thrust::tuple.314"** %coerce.dive3, align 8 ret %"class.thrust::tuple.314"* %10 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.308"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElEpLEl(%"class.thrust::iterator_facade.310"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.310"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.310"* %this, %"class.thrust::iterator_facade.310"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.310"*, %"class.thrust::iterator_facade.310"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.308"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElE7derivedEv(%"class.thrust::iterator_facade.310"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEEEEvRT_NSH_15difference_typeE(%"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.308"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElE7derivedEv(%"class.thrust::iterator_facade.310"* %this1) ret %"class.thrust::detail::normal_iterator.308"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES8_S8_S8_S8_S8_S8_S8_EENS_6system4cuda6detail3tagENS_11use_defaultESE_EEEEEEvRT_NSH_15difference_typeE(%"class.thrust::detail::normal_iterator.308"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.308"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.308"* %f, %"class.thrust::detail::normal_iterator.308"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.308"*, %"class.thrust::detail::normal_iterator.308"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.308"* %0 to %"class.thrust::iterator_adaptor.309"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E7advanceEl(%"class.thrust::iterator_adaptor.309"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.308"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEES8_SC_NS_27random_access_traversal_tagENS_9referenceIS8_SE_SD_EElE7derivedEv(%"class.thrust::iterator_facade.310"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.310"*, align 8 store %"class.thrust::iterator_facade.310"* %this, %"class.thrust::iterator_facade.310"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.310"*, %"class.thrust::iterator_facade.310"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.310"* %this1 to %"class.thrust::detail::normal_iterator.308"* ret %"class.thrust::detail::normal_iterator.308"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES7_S7_S7_S7_S7_S7_S7_EENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEESE_SD_SD_SD_SD_SD_E7advanceEl(%"class.thrust::iterator_adaptor.309"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.309"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.309"* %this, %"class.thrust::iterator_adaptor.309"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.309"*, %"class.thrust::iterator_adaptor.309"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.309", %"class.thrust::iterator_adaptor.309"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.311"* %m_iterator to %"class.thrust::iterator_facade.313"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::pointer.311"* @_ZN6thrust15iterator_facadeINS_7pointerINS_5tupleINS_4pairIaaEEjNS_9null_typeES5_S5_S5_S5_S5_S5_S5_EENS_6system4cuda6detail3tagENS_11use_defaultESB_EES6_SA_NS_27random_access_traversal_tagENS_9referenceIS6_SC_SB_EElEpLEl(%"class.thrust::iterator_facade.313"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.216"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElEpLEl(%"class.thrust::iterator_facade.217"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.217"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.217"* %this, %"class.thrust::iterator_facade.217"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.217"*, %"class.thrust::iterator_facade.217"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator.216"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElE7derivedEv(%"class.thrust::iterator_facade.217"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEEEEvRT_NSM_15difference_typeE(%"class.thrust::zip_iterator.216"* dereferenceable(16) %call, i64 %0) %call2 = call dereferenceable(16) %"class.thrust::zip_iterator.216"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElE7derivedEv(%"class.thrust::iterator_facade.217"* %this1) ret %"class.thrust::zip_iterator.216"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEEEEvRT_NSM_15difference_typeE(%"class.thrust::zip_iterator.216"* dereferenceable(16) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::zip_iterator.216"* %f, %"class.thrust::zip_iterator.216"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %f.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEE7advanceEl(%"class.thrust::zip_iterator.216"* %0, i64 %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.216"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEENS2_IS7_jSI_SI_SI_SI_SI_SI_SI_SI_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EESI_SI_SI_SI_SI_SI_SI_SI_EElE7derivedEv(%"class.thrust::iterator_facade.217"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.217"*, align 8 store %"class.thrust::iterator_facade.217"* %this, %"class.thrust::iterator_facade.217"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.217"*, %"class.thrust::iterator_facade.217"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.217"* %this1 to %"class.thrust::zip_iterator.216"* ret %"class.thrust::zip_iterator.216"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEE7advanceEl(%"class.thrust::zip_iterator.216"* %this, i64 %n) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce = alloca %"class.thrust::detail::advance_iterator", align 8 store %"class.thrust::zip_iterator.216"* %this, %"class.thrust::zip_iterator.216"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %this1, i32 0, i32 0 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail16advance_iteratorIlEC2El(%"class.thrust::detail::advance_iterator"* %agg.tmp, i64 %0) %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %1 = load i64, i64* %coerce.dive, align 8 %call = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_16advance_iteratorIlEEEET0_RT_SM_(%"class.thrust::tuple.218"* dereferenceable(16) %m_iterator_tuple, i64 %1) %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %coerce, i32 0, i32 0 store i64 %call, i64* %coerce.dive2, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_16advance_iteratorIlEEEET0_RT_SM_(%"class.thrust::tuple.218"* dereferenceable(16) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"class.thrust::tuple.218"*, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"class.thrust::tuple.218"* %t, %"class.thrust::tuple.218"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.218"*, %"class.thrust::tuple.218"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.218"* %0 to %"struct.thrust::detail::cons.219"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.219"* %1) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.218"*, %"class.thrust::tuple.218"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.218"* %2 to %"struct.thrust::detail::cons.219"* %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.220"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.219"* %3) %4 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp to i8* %5 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %6 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SH_(%"struct.thrust::detail::cons.220"* dereferenceable(8) %call1, i64 %6) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %7 = load i64, i64* %coerce.dive5, align 8 ret i64 %7 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.66"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.219"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.219"*, align 8 store %"struct.thrust::detail::cons.219"* %this, %"struct.thrust::detail::cons.219"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.219"*, %"struct.thrust::detail::cons.219"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.219", %"struct.thrust::detail::cons.219"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.66"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.220"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.219"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.219"*, align 8 store %"struct.thrust::detail::cons.219"* %this, %"struct.thrust::detail::cons.219"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.219"*, %"struct.thrust::detail::cons.219"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.219", %"struct.thrust::detail::cons.219"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.220"* %tail } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEC2ESH_(%"class.thrust::zip_iterator.221"* %this, %"struct.thrust::pair"* %iterator_tuple.coerce0, i32* %iterator_tuple.coerce1) unnamed_addr #9 comdat align 2 { entry: %iterator_tuple = alloca %"class.thrust::tuple.223", align 8 %this.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %0 = bitcast %"class.thrust::tuple.223"* %iterator_tuple to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %iterator_tuple.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %iterator_tuple.coerce1, i32** %2, align 8 store %"class.thrust::zip_iterator.221"* %this, %"class.thrust::zip_iterator.221"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %this.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.221"* %this1 to %"class.thrust::iterator_facade.222"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.221", %"class.thrust::zip_iterator.221"* %this1, i32 0, i32 0 %4 = bitcast %"class.thrust::tuple.223"* %m_iterator_tuple to i8* %5 = bitcast %"class.thrust::tuple.223"* %iterator_tuple to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 16, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKSC_RKSE_(%"class.thrust::tuple.223"* %this, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.223"*, align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.223"* %this, %"class.thrust::tuple.223"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.212"* %t0, %"class.thrust::detail::normal_iterator.212"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.223"*, %"class.thrust::tuple.223"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.223"* %this1 to %"struct.thrust::detail::cons.224"* %1 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEC2IKSC_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.224"* %0, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEEC2IKSC_KSE_KSF_SL_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.224"* %this, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.224"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.212"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.224"* %this, %"struct.thrust::detail::cons.224"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.212"* %t1, %"class.thrust::detail::normal_iterator.212"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t2, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.224"*, %"struct.thrust::detail::cons.224"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.224", %"struct.thrust::detail::cons.224"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.212"*, %"class.thrust::detail::normal_iterator.212"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.212"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.212"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.224", %"struct.thrust::detail::cons.224"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_(%"struct.thrust::detail::cons.220"* %tail, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.221"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEpLEl(%"class.thrust::iterator_facade.222"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.222"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.222"* %this, %"class.thrust::iterator_facade.222"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.222"*, %"class.thrust::iterator_facade.222"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator.221"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElE7derivedEv(%"class.thrust::iterator_facade.222"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEEEEvRT_NSL_15difference_typeE(%"class.thrust::zip_iterator.221"* dereferenceable(16) %call, i64 %0) %call2 = call dereferenceable(16) %"class.thrust::zip_iterator.221"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElE7derivedEv(%"class.thrust::iterator_facade.222"* %this1) ret %"class.thrust::zip_iterator.221"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS5_INS6_IjSC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EEEEEEvRT_NSL_15difference_typeE(%"class.thrust::zip_iterator.221"* dereferenceable(16) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::zip_iterator.221"* %f, %"class.thrust::zip_iterator.221"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %f.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE7advanceEl(%"class.thrust::zip_iterator.221"* %0, i64 %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.221"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElE7derivedEv(%"class.thrust::iterator_facade.222"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.222"*, align 8 store %"class.thrust::iterator_facade.222"* %this, %"class.thrust::iterator_facade.222"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.222"*, %"class.thrust::iterator_facade.222"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.222"* %this1 to %"class.thrust::zip_iterator.221"* ret %"class.thrust::zip_iterator.221"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEE7advanceEl(%"class.thrust::zip_iterator.221"* %this, i64 %n) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.221"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce = alloca %"class.thrust::detail::advance_iterator", align 8 store %"class.thrust::zip_iterator.221"* %this, %"class.thrust::zip_iterator.221"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::zip_iterator.221"*, %"class.thrust::zip_iterator.221"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.221", %"class.thrust::zip_iterator.221"* %this1, i32 0, i32 0 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail16advance_iteratorIlEC2El(%"class.thrust::detail::advance_iterator"* %agg.tmp, i64 %0) %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %1 = load i64, i64* %coerce.dive, align 8 %call = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EENS0_16advance_iteratorIlEEEET0_RT_SL_(%"class.thrust::tuple.223"* dereferenceable(16) %m_iterator_tuple, i64 %1) %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %coerce, i32 0, i32 0 store i64 %call, i64* %coerce.dive2, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EENS0_16advance_iteratorIlEEEET0_RT_SL_(%"class.thrust::tuple.223"* dereferenceable(16) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"class.thrust::tuple.223"*, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"class.thrust::tuple.223"* %t, %"class.thrust::tuple.223"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.223"*, %"class.thrust::tuple.223"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.223"* %0 to %"struct.thrust::detail::cons.224"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.224"* %1) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.212"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.223"*, %"class.thrust::tuple.223"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.223"* %2 to %"struct.thrust::detail::cons.224"* %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.220"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.224"* %3) %4 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp to i8* %5 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %6 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SH_(%"struct.thrust::detail::cons.220"* dereferenceable(8) %call1, i64 %6) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %7 = load i64, i64* %coerce.dive5, align 8 ret i64 %7 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.212"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.224"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.224"*, align 8 store %"struct.thrust::detail::cons.224"* %this, %"struct.thrust::detail::cons.224"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.224"*, %"struct.thrust::detail::cons.224"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.224", %"struct.thrust::detail::cons.224"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.212"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.220"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS1_INS2_INS3_IjS9_SA_SA_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.224"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.224"*, align 8 store %"struct.thrust::detail::cons.224"* %this, %"struct.thrust::detail::cons.224"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.224"*, %"struct.thrust::detail::cons.224"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.224", %"struct.thrust::detail::cons.224"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.220"* %tail } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEC2ESI_(%"class.thrust::zip_iterator.216"* %this, %"struct.thrust::pair"* %iterator_tuple.coerce0, i32* %iterator_tuple.coerce1) unnamed_addr #9 comdat align 2 { entry: %iterator_tuple = alloca %"class.thrust::tuple.218", align 8 %this.addr = alloca %"class.thrust::zip_iterator.216"*, align 8 %0 = bitcast %"class.thrust::tuple.218"* %iterator_tuple to { %"struct.thrust::pair"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %iterator_tuple.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i32* }, { %"struct.thrust::pair"*, i32* }* %0, i32 0, i32 1 store i32* %iterator_tuple.coerce1, i32** %2, align 8 store %"class.thrust::zip_iterator.216"* %this, %"class.thrust::zip_iterator.216"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.216"*, %"class.thrust::zip_iterator.216"** %this.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.216"* %this1 to %"class.thrust::iterator_facade.217"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.216", %"class.thrust::zip_iterator.216"* %this1, i32 0, i32 0 %4 = bitcast %"class.thrust::tuple.218"* %m_iterator_tuple to i8* %5 = bitcast %"class.thrust::tuple.218"* %iterator_tuple to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 16, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EC2ERKS7_RKSF_(%"class.thrust::tuple.218"* %this, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.218"*, align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.218"* %this, %"class.thrust::tuple.218"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.66"* %t0, %"class.thrust::detail::normal_iterator.66"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.218"*, %"class.thrust::tuple.218"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.218"* %this1 to %"struct.thrust::detail::cons.219"* %1 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEC2IKS7_KSF_KSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.219"* %0, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEC2IKS7_KSF_KSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.219"* %this, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.219"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.219"* %this, %"struct.thrust::detail::cons.219"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.66"* %t1, %"class.thrust::detail::normal_iterator.66"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t2, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.219"*, %"struct.thrust::detail::cons.219"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.219", %"struct.thrust::detail::cons.219"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.66"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.66"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.219", %"struct.thrust::detail::cons.219"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_(%"struct.thrust::detail::cons.220"* %tail, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_(%"class.thrust::detail::contiguous_storage.207"* %this, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.212", align 8 %last = alloca %"class.thrust::detail::normal_iterator.212", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.207"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %last, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 store %"class.thrust::detail::contiguous_storage.207"* %this, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8, !tbaa !1 %this8 = load %"class.thrust::detail::contiguous_storage.207"*, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this8, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.212"* %first to %"class.thrust::iterator_adaptor.213"* %call = call dereferenceable(8) %"class.thrust::pointer.141"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.213"* %0) %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.212"* %last to %"class.thrust::iterator_facade.214"* %4 = bitcast %"class.thrust::detail::normal_iterator.212"* %first to %"class.thrust::iterator_facade.214"* %call9 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_(%"class.thrust::iterator_facade.214"* dereferenceable(1) %3, %"class.thrust::iterator_facade.214"* dereferenceable(1) %4) %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive10, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 call void @_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %m_allocator, %"struct.thrust::pair"* %5, i64 %call9) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE3endEv(%"class.thrust::detail::contiguous_storage.207"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.212", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.207"*, align 8 store %"class.thrust::detail::contiguous_storage.207"* %this, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.207"*, %"class.thrust::detail::contiguous_storage.207"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.207", %"class.thrust::detail::contiguous_storage.207"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.212"* %m_begin to %"class.thrust::iterator_facade.214"* %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.207"* %this1) %call2 = call %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.214"* dereferenceable(1) %0, i64 %call) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.212", %"class.thrust::detail::normal_iterator.212"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.213", %"class.thrust::iterator_adaptor.213"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive8, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 ret %"struct.thrust::pair"* %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::pointer.141", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %a, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %0, %"struct.thrust::pair"* %4, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::pointer.141", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %agg.tmp2 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce = alloca %"class.thrust::pointer.141", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %a, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE3getERSB_(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %0) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %2 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.141"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 %call5 = call %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, %"struct.thrust::pair"* %5, i64 %4) %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %coerce, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %call5, %"struct.thrust::pair"** %coerce.dive7, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %first = alloca %"class.thrust::pointer.141", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.141"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive4, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 %call6 = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"struct.thrust::pair"* %5, i64 %4) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive7, i32 0, i32 0 store %"struct.thrust::pair"* %call6, %"struct.thrust::pair"** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive9, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 ret %"struct.thrust::pair"* %6 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEE3getERSB_(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %a) #8 comdat align 2 { entry: %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %a, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %0) ret %"struct.thrust::system::cuda::detail::tag"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %first = alloca %"class.thrust::pointer.141", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.141", align 8 %agg.tmp2 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.141"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 %call = call %"struct.thrust::pair"* @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_EN10workaround13parallel_pathERNSE_IS4_EES9_lSC_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %0, %"struct.thrust::pair"* %4, i64 %3) %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive7, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive8, align 8 ret %"struct.thrust::pair"* %5 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_EN10workaround13parallel_pathERNSE_IS4_EES9_lSC_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.141", align 8 %first = alloca %"class.thrust::pointer.141", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %narrow_n = alloca i32, align 4 %narrow_num_groups = alloca i32, align 4 %narrow_group_size = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.147", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp3 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp5 = alloca %"class.thrust::pointer.141", align 8 %agg.tmp6 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %num_groups = alloca i64, align 8 %group_size = alloca i64, align 8 %coerce13 = alloca %"class.thrust::tuple.152", align 8 %ref.tmp15 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp16 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp17 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp18 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp19 = alloca %"class.thrust::pointer.141", align 8 %agg.tmp20 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %ref.tmp25 = alloca i64, align 8 %agg.tmp.ensured = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp28 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp31 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp32 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp33 = alloca %"class.thrust::pointer.141", align 8 %agg.tmp34 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %ref.tmp37 = alloca i32, align 4 %agg.tmp.ensured40 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp41 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp46 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp47 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp48 = alloca %"class.thrust::pointer.141", align 8 %agg.tmp49 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEC2ERKS3_(%"struct.thrust::detail::wrapped_function.146"* %wrapped_f, %"struct.thrust::detail::allocator_traits_detail::gozer"* dereferenceable(1) %f) %1 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.start(i64 4, i8* %1) #5 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %conv = trunc i64 %2 to i32 store i32 %conv, i32* %narrow_n, align 4, !tbaa !11 %3 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %narrow_num_groups, align 4, !tbaa !11 %4 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %narrow_group_size, align 4, !tbaa !11 %call = call { i32*, i32* } @_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %narrow_group_size) %coerce.dive2 = getelementptr inbounds %"class.thrust::tuple.147", %"class.thrust::tuple.147"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.148"* %coerce.dive2 to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call, 1 store i32* %9, i32** %8, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, i64 2147483647, i64 2147483647, i64 2147483647) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %11 = bitcast %"class.thrust::pointer.141"* %agg.tmp5 to i8* %12 = bitcast %"class.thrust::pointer.141"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %13 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp6 to i8* %14 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 1, i32 1, i1 false), !tbaa.struct !41 %15 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp5, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive7, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive8, align 8 %call9 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"struct.thrust::pair"* %16, i32 %15) %17 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call9, i64* %17, align 4 %call10 = call dereferenceable(16) %"class.thrust::tuple.147"* @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.147"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %18 = load i64, i64* %n.addr, align 8, !tbaa !13 %19 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %20 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %mul = mul i32 %19, %20 %call11 = call zeroext i1 @_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j(i64 %18, i32 %mul) br i1 %call11, label %if.then, label %if.else if.then: ; preds = %entry %21 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.start(i64 8, i8* %21) #5 store i64 0, i64* %num_groups, align 8, !tbaa !13 %22 = bitcast i64* %group_size to i8* call void @llvm.lifetime.start(i64 8, i8* %22) #5 store i64 0, i64* %group_size, align 8, !tbaa !13 %call12 = call { i64*, i64* } @_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %group_size) %coerce.dive14 = getelementptr inbounds %"class.thrust::tuple.152", %"class.thrust::tuple.152"* %coerce13, i32 0, i32 0 %23 = bitcast %"struct.thrust::detail::cons.153"* %coerce.dive14 to { i64*, i64* }* %24 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %23, i32 0, i32 0 %25 = extractvalue { i64*, i64* } %call12, 0 store i64* %25, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %23, i32 0, i32 1 %27 = extractvalue { i64*, i64* } %call12, 1 store i64* %27, i64** %26, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp16, i64 2147483647, i64 2147483647, i64 2147483647) %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp18 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %28, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %29 = bitcast %"class.thrust::pointer.141"* %agg.tmp19 to i8* %30 = bitcast %"class.thrust::pointer.141"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %29, i8* %30, i64 8, i32 8, i1 false) %31 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp20 to i8* %32 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %31, i8* %32, i64 1, i32 1, i1 false), !tbaa.struct !41 %33 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive21 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp19, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive21, i32 0, i32 0 %34 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive22, align 8 %call23 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp16, %"struct.thrust::pair"* %34, i64 %33) %35 = bitcast %"struct.thrust::pair.82"* %ref.tmp15 to i64* store i64 %call23, i64* %35, align 4 %call24 = call dereferenceable(16) %"class.thrust::tuple.152"* @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.152"* %coerce13, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp15) %36 = load i64, i64* %n.addr, align 8, !tbaa !13 %37 = load i64, i64* %group_size, align 8, !tbaa !13 %call26 = call i64 @_ZN6thrust6detail4util9divide_riIllEET_S3_T0_(i64 %36, i64 %37) store i64 %call26, i64* %ref.tmp25, align 8, !tbaa !13 %call27 = call i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %ref.tmp25) store i64 %call27, i64* %num_groups, align 8, !tbaa !13 %38 = load i64, i64* %num_groups, align 8, !tbaa !13 %39 = load i64, i64* %group_size, align 8, !tbaa !13 %40 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %41 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %40 to %"struct.thrust::detail::execution_policy_base.121"* %call29 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %41) %42 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call29 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call30 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %42) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp28, i64 %38, i64 %39, i64 0, %struct.CUstream_st* %call30) %43 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp32 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %43, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %44 = bitcast %"class.thrust::pointer.141"* %agg.tmp33 to i8* %45 = bitcast %"class.thrust::pointer.141"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %44, i8* %45, i64 8, i32 8, i1 false) %46 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp34 to i8* %47 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %46, i8* %47, i64 1, i32 1, i1 false), !tbaa.struct !41 %48 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive35 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp33, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive35, i32 0, i32 0 %49 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive36, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp28, %"struct.thrust::pair"* %49, i64 %48) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured) #5 %50 = bitcast i64* %group_size to i8* call void @llvm.lifetime.end(i64 8, i8* %50) #5 %51 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %51) #5 br label %if.end if.else: ; preds = %entry %52 = load i32, i32* %narrow_n, align 4, !tbaa !11 %53 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %call38 = call i32 @_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_(i32 %52, i32 %53) store i32 %call38, i32* %ref.tmp37, align 4, !tbaa !11 %call39 = call i32 @_ZN6thrust3minIjEET_RKS1_S3_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %ref.tmp37) store i32 %call39, i32* %narrow_num_groups, align 4, !tbaa !11 %54 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %conv42 = zext i32 %54 to i64 %55 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %conv43 = zext i32 %55 to i64 %56 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %57 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %56 to %"struct.thrust::detail::execution_policy_base.121"* %call44 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %57) %58 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call44 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call45 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %58) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp41, i64 %conv42, i64 %conv43, i64 0, %struct.CUstream_st* %call45) %59 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp47 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %59, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %60 = bitcast %"class.thrust::pointer.141"* %agg.tmp48 to i8* %61 = bitcast %"class.thrust::pointer.141"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %60, i8* %61, i64 8, i32 8, i1 false) %62 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp49 to i8* %63 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %62, i8* %63, i64 1, i32 1, i1 false), !tbaa.struct !41 %64 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive50 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %agg.tmp48, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive50, i32 0, i32 0 %65 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive51, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured40, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp41, %"struct.thrust::pair"* %65, i32 %64) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured40) #5 br label %if.end if.end: ; preds = %if.else, %if.then %66 = bitcast %"class.thrust::pointer.141"* %first to %"class.thrust::iterator_facade.143"* %67 = load i64, i64* %n.addr, align 8, !tbaa !13 %call52 = call %"struct.thrust::pair"* @_ZN6thrustplINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE(%"class.thrust::iterator_facade.143"* dereferenceable(1) %66, i64 %67) %coerce.dive53 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive54 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive53, i32 0, i32 0 store %"struct.thrust::pair"* %call52, %"struct.thrust::pair"** %coerce.dive54, align 8 %68 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %68) #5 %69 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %69) #5 %70 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.end(i64 4, i8* %70) #5 %71 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %71) #5 %coerce.dive55 = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %retval, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive55, i32 0, i32 0 %72 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive56, align 8 ret %"struct.thrust::pair"* %72 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce, i32 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::pointer.141", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::pointer.141"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEEjNS_9null_typeESN_SN_SN_SN_SN_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %agg.tmp4) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce, i64 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::pointer.141", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::pointer.141"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEElNS_9null_typeESN_SN_SN_SN_SN_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %agg.tmp4) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce, i64 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::pointer.141", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::pointer.141"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %agg.tmp4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"struct.thrust::pair"* %arg2.coerce, i32 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::pointer.141", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.141", %"class.thrust::pointer.141"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.142", %"class.thrust::iterator_adaptor.142"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %arg2.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::pointer.141"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %agg.tmp4) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEEjNS_9null_typeESN_SN_SN_SN_SN_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::pointer.141"* dereferenceable(8) %a2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %a3, i32* dereferenceable(4) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::pointer.141"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %a4.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.406", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %a2, %"class.thrust::pointer.141"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %a3, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8, !tbaa !7 store i32* %a4, i32** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8 %3 = load i32*, i32** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_(%"class.thrust::tuple.406"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::pointer.141"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i32* dereferenceable(4) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %agg.result, %"class.thrust::tuple.406"* dereferenceable(24) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_(%"class.thrust::tuple.406"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::pointer.141"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::pointer.141"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %t1, %"class.thrust::pointer.141"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %3 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKj(%"class.thrust::tuple.406"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::pointer.141"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i32* dereferenceable(4) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEEjNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %this, %"class.thrust::tuple.406"* dereferenceable(24) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"*, align 8 %args.addr = alloca %"class.thrust::tuple.406"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.406"* %args, %"class.thrust::tuple.406"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.406"*, %"class.thrust::tuple.406"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.406"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.406"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKj(%"class.thrust::tuple.406"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::pointer.141"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.406"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::pointer.141"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.406"* %this, %"class.thrust::tuple.406"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %t1, %"class.thrust::pointer.141"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.406"*, %"class.thrust::tuple.406"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.406"* %this1 to %"struct.thrust::detail::cons.407"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KjKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.407"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::pointer.141"* dereferenceable(8) %2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KjKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.407"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::pointer.141"* dereferenceable(8) %t2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t3, i32* dereferenceable(4) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.407"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::pointer.141"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t4.addr = alloca i32*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.407"* %this, %"struct.thrust::detail::cons.407"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %t2, %"class.thrust::pointer.141"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t3, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8, !tbaa !7 store i32* %t4, i32** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.407"*, %"struct.thrust::detail::cons.407"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.407", %"struct.thrust::detail::cons.407"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.407", %"struct.thrust::detail::cons.407"* %this1, i32 0, i32 1 %3 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8 %5 = load i32*, i32** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKSA_KSE_KjKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.408"* %tail, %"class.thrust::pointer.141"* dereferenceable(8) %3, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %4, i32* dereferenceable(4) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKSA_KSE_KjKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.408"* %this, %"class.thrust::pointer.141"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.408"*, align 8 %t1.addr = alloca %"class.thrust::pointer.141"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.408"* %this, %"struct.thrust::detail::cons.408"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.141"* %t1, %"class.thrust::pointer.141"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.408"*, %"struct.thrust::detail::cons.408"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.408", %"struct.thrust::detail::cons.408"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %t1.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %head to i8* %2 = bitcast %"class.thrust::pointer.141"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.408", %"struct.thrust::detail::cons.408"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEC2IKS5_KjKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.158"* %tail, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESG_EENS_6detail16wrapped_functionINSI_23allocator_traits_detail5gozerEvEElNS_9null_typeESN_SN_SN_SN_SN_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESE_EENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESS_SS_SS_SS_SS_EEEESM_RKSO_RKSP_RKSQ_RKSR_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::pointer.141"* dereferenceable(8) %a2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %a3, i64* dereferenceable(8) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::pointer.141"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %a4.addr = alloca i64*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.417", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %a2, %"class.thrust::pointer.141"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %a3, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8, !tbaa !7 store i64* %a4, i64** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8 %3 = load i64*, i64** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_(%"class.thrust::tuple.417"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::pointer.141"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i64* dereferenceable(8) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %agg.result, %"class.thrust::tuple.417"* dereferenceable(32) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSE_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESO_SO_SO_SO_SO_E4typeERKSK_RKSL_RKSM_RKSN_(%"class.thrust::tuple.417"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::pointer.141"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::pointer.141"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %t1, %"class.thrust::pointer.141"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %3 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKl(%"class.thrust::tuple.417"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::pointer.141"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i64* dereferenceable(8) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESF_EENS_6detail16wrapped_functionINSH_23allocator_traits_detail5gozerEvEElNS_9null_typeESM_SM_SM_SM_SM_EEEC2ES7_RKSN_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %this, %"class.thrust::tuple.417"* dereferenceable(32) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"*, align 8 %args.addr = alloca %"class.thrust::tuple.417"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.417"* %args, %"class.thrust::tuple.417"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.417"*, %"class.thrust::tuple.417"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.417"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.417"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 32, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_7pointerINS_4pairIaaEENS3_3tagENS_11use_defaultESC_EENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElNS_9null_typeESJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSD_RKSI_RKl(%"class.thrust::tuple.417"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::pointer.141"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.417"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::pointer.141"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.417"* %this, %"class.thrust::tuple.417"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %t1, %"class.thrust::pointer.141"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.417"*, %"class.thrust::tuple.417"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.417"* %this1 to %"struct.thrust::detail::cons.418"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KlKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.418"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::pointer.141"* dereferenceable(8) %2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_7pointerINS_4pairIaaEENS4_3tagENS_11use_defaultESD_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSE_KSI_KlKSJ_ST_ST_ST_ST_ST_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.418"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::pointer.141"* dereferenceable(8) %t2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t3, i64* dereferenceable(8) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.418"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::pointer.141"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t4.addr = alloca i64*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.418"* %this, %"struct.thrust::detail::cons.418"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.141"* %t2, %"class.thrust::pointer.141"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t3, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8, !tbaa !7 store i64* %t4, i64** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.418"*, %"struct.thrust::detail::cons.418"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.418", %"struct.thrust::detail::cons.418"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.418", %"struct.thrust::detail::cons.418"* %this1, i32 0, i32 1 %3 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8 %5 = load i64*, i64** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKSA_KSE_KlKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.419"* %tail, %"class.thrust::pointer.141"* dereferenceable(8) %3, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %4, i64* dereferenceable(8) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_7pointerINS_4pairIaaEENS_6system4cuda6detail3tagENS_11use_defaultES9_EENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKSA_KSE_KlKSF_SN_SN_SN_SN_SN_SN_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.419"* %this, %"class.thrust::pointer.141"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.419"*, align 8 %t1.addr = alloca %"class.thrust::pointer.141"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.419"* %this, %"struct.thrust::detail::cons.419"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.141"* %t1, %"class.thrust::pointer.141"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.419"*, %"struct.thrust::detail::cons.419"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.419", %"struct.thrust::detail::cons.419"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.141"*, %"class.thrust::pointer.141"** %t1.addr, align 8 %1 = bitcast %"class.thrust::pointer.141"* %head to i8* %2 = bitcast %"class.thrust::pointer.141"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.419", %"struct.thrust::detail::cons.419"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEC2IKS5_KlKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.164"* %tail, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 40, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 40, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 40, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 40, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %task to i8* call void @llvm.lifetime.start(i64 72, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 40, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %task to i8* call void @llvm.lifetime.end(i64 72, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.420"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.416", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 40, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !301 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.421"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEElNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.416"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 40, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.425"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.422"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 72, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 72, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESN_EENS0_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS0_9null_typeESU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESN_EENS0_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS0_9null_typeESU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESN_EENS0_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS0_9null_typeESU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 72, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESN_EENS0_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEElNS0_9null_typeESU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.424"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 32, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 32, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 32, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 32, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchESB_SV_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %task to i8* call void @llvm.lifetime.start(i64 64, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 32, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 64, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %task to i8* call void @llvm.lifetime.end(i64 64, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.409"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.405", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 32, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !303 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_SV_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 64, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.410"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESM_EENS_6detail16wrapped_functionINSO_23allocator_traits_detail5gozerEvEEjNS_9null_typeEST_ST_ST_ST_ST_EEEEEC2ESB_SV_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.405"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 32, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.414"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.411"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 64, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stSX_EN10workaround14supported_pathEjjmS10_SX_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 64, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESN_EENS0_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_7pointerINS_4pairIaaEENS2_3tagENS_11use_defaultESN_EENS_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS_9null_typeESU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESN_EENS0_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESN_EENS0_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 64, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_7pointerINS0_4pairIaaEENS3_3tagENS0_11use_defaultESN_EENS0_6detail16wrapped_functionINSP_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.413"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_(%"struct.thrust::detail::no_throw_allocator.208"* dereferenceable(8) %a) #1 comdat { entry: %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.208"*, align 8 store %"struct.thrust::detail::no_throw_allocator.208"* %a, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::no_throw_allocator.208"*, %"struct.thrust::detail::no_throw_allocator.208"** %a.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.208"* %0 to %"class.thrust::detail::temporary_allocator.209"* %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.209"* %1) ret %"struct.thrust::system::cuda::detail::tag"* %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIjS7_NS_11use_defaultESD_EEEESF_(%"class.thrust::detail::contiguous_storage.198"* %this, i32* %first.coerce, i32* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.199", align 8 %last = alloca %"class.thrust::detail::normal_iterator.199", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.198"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 store i32* %first.coerce, i32** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %last, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive6, i32 0, i32 0 store i32* %last.coerce, i32** %coerce.dive7, align 8 store %"class.thrust::detail::contiguous_storage.198"* %this, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8, !tbaa !1 %this8 = load %"class.thrust::detail::contiguous_storage.198"*, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this8, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.199"* %first to %"class.thrust::iterator_adaptor.200"* %call = call dereferenceable(8) %"class.thrust::pointer.202"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.200"* %0) %1 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.202"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.199"* %last to %"class.thrust::iterator_facade.201"* %4 = bitcast %"class.thrust::detail::normal_iterator.199"* %first to %"class.thrust::iterator_facade.201"* %call9 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElSA_jS7_SB_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.201"* dereferenceable(1) %3, %"class.thrust::iterator_facade.201"* dereferenceable(1) %4) %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive10, i32 0, i32 0 %5 = load i32*, i32** %coerce.dive11, align 8 call void @_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEENS_7pointerIjS7_NS_11use_defaultESB_EElEEvRT_T0_T1_(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %m_allocator, i32* %5, i64 %call9) ret void } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE3endEv(%"class.thrust::detail::contiguous_storage.198"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.199", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.198"*, align 8 store %"class.thrust::detail::contiguous_storage.198"* %this, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.198"*, %"class.thrust::detail::contiguous_storage.198"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.198", %"class.thrust::detail::contiguous_storage.198"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.199"* %m_begin to %"class.thrust::iterator_facade.201"* %call = call i64 @_ZNK6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.198"* %this1) %call2 = call i32* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEET_RKNS_15iterator_facadeISE_T0_T1_T2_T3_T4_EENSE_15difference_typeE(%"class.thrust::iterator_facade.201"* dereferenceable(1) %0, i64 %call) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive4, i32 0, i32 0 store i32* %call2, i32** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive8, i32 0, i32 0 %1 = load i32*, i32** %coerce.dive9, align 8 ret i32* %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEENS_7pointerIjS7_NS_11use_defaultESB_EElEEvRT_T0_T1_(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %a, i32* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::pointer.202", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.202", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %p.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator"* %a, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator"*, %"struct.thrust::detail::no_throw_allocator"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.202"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.202"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive2, i32 0, i32 0 %4 = load i32*, i32** %coerce.dive3, align 8 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEENS_7pointerIjS8_NS_11use_defaultESC_EElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERSF_SG_T1_(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8) %0, i32* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElSA_jS7_SB_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.201"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.201"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.201"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.201"*, align 8 store %"class.thrust::iterator_facade.201"* %lhs, %"class.thrust::iterator_facade.201"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.201"* %rhs, %"class.thrust::iterator_facade.201"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.201"*, %"class.thrust::iterator_facade.201"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.201"* %0 to %"class.thrust::detail::normal_iterator.199"* %2 = load %"class.thrust::iterator_facade.201"*, %"class.thrust::iterator_facade.201"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.201"* %2 to %"class.thrust::detail::normal_iterator.199"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEESB_EENS2_20distance_from_resultIT_T0_E4typeERKSD_RKSE_(%"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEENS_7pointerIjS8_NS_11use_defaultESC_EElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERSF_SG_T1_(%"struct.thrust::detail::no_throw_allocator"* dereferenceable(8), i32* %.coerce, i64) #1 comdat { entry: %2 = alloca %"class.thrust::pointer.202", align 8 %.addr = alloca %"struct.thrust::detail::no_throw_allocator"*, align 8 %.addr2 = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %2, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive, i32 0, i32 0 store i32* %.coerce, i32** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator"* %0, %"struct.thrust::detail::no_throw_allocator"** %.addr, align 8, !tbaa !7 store i64 %1, i64* %.addr2, align 8, !tbaa !13 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEESB_EENS2_20distance_from_resultIT_T0_E4typeERKSD_RKSE_(%"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.199"* %f1, %"class.thrust::detail::normal_iterator.199"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %f2, %"class.thrust::detail::normal_iterator.199"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEESB_EENT_15difference_typeERKSC_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES9_EEEESB_EENT_15difference_typeERKSC_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 store %"class.thrust::detail::normal_iterator.199"* %f1, %"class.thrust::detail::normal_iterator.199"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %f2, %"class.thrust::detail::normal_iterator.199"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.199"* %1 to %"class.thrust::iterator_adaptor.200"* %3 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.199"* %3 to %"class.thrust::iterator_adaptor.200"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E11distance_toISA_S9_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.200"* %2, %"class.thrust::iterator_adaptor.200"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E11distance_toISA_S9_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.200"* %this, %"class.thrust::iterator_adaptor.200"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.200"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.200"*, align 8 store %"class.thrust::iterator_adaptor.200"* %this, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.200"* %y, %"class.thrust::iterator_adaptor.200"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.200"*, %"class.thrust::iterator_adaptor.200"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.200"*, %"class.thrust::iterator_adaptor.200"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.202"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEES9_S8_S8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.200"* %0) %1 = bitcast %"class.thrust::pointer.202"* %call to %"class.thrust::iterator_facade.204"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %this1, i32 0, i32 0 %2 = bitcast %"class.thrust::pointer.202"* %m_iterator to %"class.thrust::iterator_facade.204"* %call2 = call i64 @_ZN6thrustmiINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElS7_jS5_S8_SA_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.204"* dereferenceable(1) %1, %"class.thrust::iterator_facade.204"* dereferenceable(1) %2) ret i64 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElS7_jS5_S8_SA_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.204"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.204"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.204"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.204"*, align 8 store %"class.thrust::iterator_facade.204"* %lhs, %"class.thrust::iterator_facade.204"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.204"* %rhs, %"class.thrust::iterator_facade.204"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.204"*, %"class.thrust::iterator_facade.204"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.204"* %0 to %"class.thrust::pointer.202"* %2 = load %"class.thrust::iterator_facade.204"*, %"class.thrust::iterator_facade.204"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.204"* %2 to %"class.thrust::pointer.202"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EES8_EENS_6detail20distance_from_resultIT_T0_E4typeERKSB_RKSC_(%"class.thrust::pointer.202"* dereferenceable(8) %1, %"class.thrust::pointer.202"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EES8_EENS_6detail20distance_from_resultIT_T0_E4typeERKSB_RKSC_(%"class.thrust::pointer.202"* dereferenceable(8) %f1, %"class.thrust::pointer.202"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::pointer.202"*, align 8 %f2.addr = alloca %"class.thrust::pointer.202"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::pointer.202"* %f1, %"class.thrust::pointer.202"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.202"* %f2, %"class.thrust::pointer.202"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %f1.addr, align 8 %1 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EES8_EENT_15difference_typeERKS9_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::pointer.202"* dereferenceable(8) %0, %"class.thrust::pointer.202"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES7_EES8_EENT_15difference_typeERKS9_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::pointer.202"* dereferenceable(8) %f1, %"class.thrust::pointer.202"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::pointer.202"*, align 8 %f2.addr = alloca %"class.thrust::pointer.202"*, align 8 store %"class.thrust::pointer.202"* %f1, %"class.thrust::pointer.202"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.202"* %f2, %"class.thrust::pointer.202"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %f1.addr, align 8 %2 = bitcast %"class.thrust::pointer.202"* %1 to %"class.thrust::iterator_adaptor.203"* %3 = load %"class.thrust::pointer.202"*, %"class.thrust::pointer.202"** %f2.addr, align 8 %4 = bitcast %"class.thrust::pointer.202"* %3 to %"class.thrust::iterator_adaptor.203"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE11distance_toIS7_S8_jS5_S9_SB_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.203"* %2, %"class.thrust::iterator_adaptor.203"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE11distance_toIS7_S8_jS5_S9_SB_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.203"* %this, %"class.thrust::iterator_adaptor.203"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.203"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.203"*, align 8 store %"class.thrust::iterator_adaptor.203"* %this, %"class.thrust::iterator_adaptor.203"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.203"* %y, %"class.thrust::iterator_adaptor.203"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.203"*, %"class.thrust::iterator_adaptor.203"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.203"*, %"class.thrust::iterator_adaptor.203"** %y.addr, align 8 %call = call dereferenceable(8) i32** @_ZNK6thrust16iterator_adaptorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPjjS5_NS_27random_access_traversal_tagENS_9referenceIjS7_S6_EElE4baseEv(%"class.thrust::iterator_adaptor.203"* %0) %1 = load i32*, i32** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %this1, i32 0, i32 0 %2 = load i32*, i32** %m_iterator, align 8, !tbaa !192 %sub.ptr.lhs.cast = ptrtoint i32* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i32* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 4 ret i64 %sub.ptr.div } ; Function Attrs: uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_4cuda6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE(%"struct.thrust::execution_policy.120"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system2) #0 comdat { entry: %system1.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 store %"struct.thrust::execution_policy.120"* %system1, %"struct.thrust::execution_policy.120"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %system2, %"struct.thrust::execution_policy.120"** %system2.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system1.addr, align 8 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6system6detail7generic20select_system_detail10min_systemINS0_4cuda6detail3tagEEERT_RNS_16execution_policyIS8_EESC_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %0, %"struct.thrust::execution_policy.120"* dereferenceable(1) %1) ret %"struct.thrust::system::cuda::detail::tag"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6system6detail7generic20select_system_detail10min_systemINS0_4cuda6detail3tagEEERT_RNS_16execution_policyIS8_EESC_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.120"* dereferenceable(1)) #1 comdat { entry: %system1.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 store %"struct.thrust::execution_policy.120"* %system1, %"struct.thrust::execution_policy.120"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %0, %"struct.thrust::execution_policy.120"** %.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system1.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2) ret %"struct.thrust::system::cuda::detail::tag"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIaNS_23device_malloc_allocatorIaEEE4sizeEv(%"class.thrust::detail::vector_base.54"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.54"*, align 8 store %"class.thrust::detail::vector_base.54"* %this, %"class.thrust::detail::vector_base.54"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.54"*, %"class.thrust::detail::vector_base.54"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.54", %"class.thrust::detail::vector_base.54"* %this1, i32 0, i32 1 %0 = load i64, i64* %m_size, align 8, !tbaa !63 ret i64 %0 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrusteqINS_4pairIaaEESaIS2_ES2_NS_23device_malloc_allocatorIS2_EEEEbRKNS_6detail11vector_baseIT_T0_EERKNS7_IT1_T2_EE(%"class.thrust::detail::vector_base.46"* dereferenceable(32) %lhs, %"class.thrust::detail::vector_base.62"* dereferenceable(32) %rhs) #0 comdat { entry: %lhs.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 %rhs.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.427", align 8 store %"class.thrust::detail::vector_base.46"* %lhs, %"class.thrust::detail::vector_base.46"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::detail::vector_base.62"* %rhs, %"class.thrust::detail::vector_base.62"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %lhs.addr, align 8 %call = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE4sizeEv(%"class.thrust::detail::vector_base.46"* %0) %1 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %rhs.addr, align 8 %call1 = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::vector_base.62"* %1) %cmp = icmp eq i64 %call, %call1 br i1 %cmp, label %land.rhs, label %land.end land.rhs: ; preds = %entry %2 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %lhs.addr, align 8 %call2 = call %"struct.thrust::pair"* @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %2) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive3, align 8 %3 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %lhs.addr, align 8 %call5 = call %"struct.thrust::pair"* @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE3endEv(%"class.thrust::detail::vector_base.46"* %3) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp4, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %call5, %"struct.thrust::pair"** %coerce.dive7, align 8 %4 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %rhs.addr, align 8 %call9 = call %"struct.thrust::pair"* @_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.62"* %4) %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp8, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive13, i32 0, i32 0 store %"struct.thrust::pair"* %call9, %"struct.thrust::pair"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive15, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp4, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive17, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp8, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive22, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive23, align 8 %call24 = call zeroext i1 @_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIaaEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_(%"struct.thrust::pair"* %5, %"struct.thrust::pair"* %6, %"struct.thrust::pair"* %7) br label %land.end land.end: ; preds = %land.rhs, %entry %8 = phi i1 [ false, %entry ], [ %call24, %land.rhs ] ret i1 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest15UnitTestFailureC2Ev(%"class.unittest::UnitTestFailure"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.unittest::UnitTestFailure"*, align 8 store %"class.unittest::UnitTestFailure"* %this, %"class.unittest::UnitTestFailure"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.unittest::UnitTestFailure"*, %"class.unittest::UnitTestFailure"** %this.addr, align 8 %0 = bitcast %"class.unittest::UnitTestFailure"* %this1 to %"class.unittest::UnitTestException"* call void @_ZN8unittest17UnitTestExceptionC2Ev(%"class.unittest::UnitTestException"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA2_cEERS0_RKT_(%"class.unittest::UnitTestException"* %this, [2 x i8]* dereferenceable(2) %t) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.unittest::UnitTestException"*, align 8 %t.addr = alloca [2 x i8]*, align 8 %oss = alloca %"class.std::basic_ostringstream", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 store %"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"** %this.addr, align 8, !tbaa !1 store [2 x i8]* %t, [2 x i8]** %t.addr, align 8, !tbaa !7 %this1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.start(i64 352, i8* %0) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::basic_ostringstream"* %oss, i32 16) %1 = bitcast %"class.std::basic_ostringstream"* %oss to %"class.std::basic_ostream"* %2 = load [2 x i8]*, [2 x i8]** %t.addr, align 8 %arraydecay = getelementptr inbounds [2 x i8], [2 x i8]* %2, i32 0, i32 0 %call = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* dereferenceable(272) %1, i8* %arraydecay) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %message = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %this1, i32 0, i32 0 invoke void @_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::basic_string"* sret %ref.tmp, %"class.std::basic_ostringstream"* %oss) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call5 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLERKSs(%"class.std::basic_string"* %message, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont2 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %3 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %3) #5 ret %"class.unittest::UnitTestException"* %this1 lpad: ; preds = %invoke.cont, %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont2 %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %10 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %10) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val7 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsISsEERS0_RKT_(%"class.unittest::UnitTestException"* %this, %"class.std::basic_string"* dereferenceable(8) %t) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.unittest::UnitTestException"*, align 8 %t.addr = alloca %"class.std::basic_string"*, align 8 %oss = alloca %"class.std::basic_ostringstream", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 store %"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"** %this.addr, align 8, !tbaa !1 store %"class.std::basic_string"* %t, %"class.std::basic_string"** %t.addr, align 8, !tbaa !7 %this1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.start(i64 352, i8* %0) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::basic_ostringstream"* %oss, i32 16) %1 = bitcast %"class.std::basic_ostringstream"* %oss to %"class.std::basic_ostream"* %2 = load %"class.std::basic_string"*, %"class.std::basic_string"** %t.addr, align 8 %call = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E(%"class.std::basic_ostream"* dereferenceable(272) %1, %"class.std::basic_string"* dereferenceable(8) %2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %message = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %this1, i32 0, i32 0 invoke void @_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::basic_string"* sret %ref.tmp, %"class.std::basic_ostringstream"* %oss) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call5 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLERKSs(%"class.std::basic_string"* %message, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont2 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %3 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %3) #5 ret %"class.unittest::UnitTestException"* %this1 lpad: ; preds = %invoke.cont, %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont2 %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %10 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %10) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val7 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIiEERS0_RKT_(%"class.unittest::UnitTestException"* %this, i32* dereferenceable(4) %t) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.unittest::UnitTestException"*, align 8 %t.addr = alloca i32*, align 8 %oss = alloca %"class.std::basic_ostringstream", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 store %"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"** %this.addr, align 8, !tbaa !1 store i32* %t, i32** %t.addr, align 8, !tbaa !7 %this1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.start(i64 352, i8* %0) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::basic_ostringstream"* %oss, i32 16) %1 = bitcast %"class.std::basic_ostringstream"* %oss to %"class.std::basic_ostream"* %2 = load i32*, i32** %t.addr, align 8 %3 = load i32, i32* %2, align 4, !tbaa !11 %call = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* %1, i32 %3) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %message = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %this1, i32 0, i32 0 invoke void @_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::basic_string"* sret %ref.tmp, %"class.std::basic_ostringstream"* %oss) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call5 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLERKSs(%"class.std::basic_string"* %message, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont2 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %4 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %4) #5 ret %"class.unittest::UnitTestException"* %this1 lpad: ; preds = %invoke.cont, %entry %5 = landingpad { i8*, i32 } cleanup %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont2 %8 = landingpad { i8*, i32 } cleanup %9 = extractvalue { i8*, i32 } %8, 0 store i8* %9, i8** %exn.slot, align 8 %10 = extractvalue { i8*, i32 } %8, 1 store i32 %10, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %11 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %11) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val7 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA3_cEERS0_RKT_(%"class.unittest::UnitTestException"* %this, [3 x i8]* dereferenceable(3) %t) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.unittest::UnitTestException"*, align 8 %t.addr = alloca [3 x i8]*, align 8 %oss = alloca %"class.std::basic_ostringstream", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 store %"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"** %this.addr, align 8, !tbaa !1 store [3 x i8]* %t, [3 x i8]** %t.addr, align 8, !tbaa !7 %this1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.start(i64 352, i8* %0) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::basic_ostringstream"* %oss, i32 16) %1 = bitcast %"class.std::basic_ostringstream"* %oss to %"class.std::basic_ostream"* %2 = load [3 x i8]*, [3 x i8]** %t.addr, align 8 %arraydecay = getelementptr inbounds [3 x i8], [3 x i8]* %2, i32 0, i32 0 %call = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* dereferenceable(272) %1, i8* %arraydecay) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %message = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %this1, i32 0, i32 0 invoke void @_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::basic_string"* sret %ref.tmp, %"class.std::basic_ostringstream"* %oss) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call5 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLERKSs(%"class.std::basic_string"* %message, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont2 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %3 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %3) #5 ret %"class.unittest::UnitTestException"* %this1 lpad: ; preds = %invoke.cont, %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont2 %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %10 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %10) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val7 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA22_cEERS0_RKT_(%"class.unittest::UnitTestException"* %this, [22 x i8]* dereferenceable(22) %t) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.unittest::UnitTestException"*, align 8 %t.addr = alloca [22 x i8]*, align 8 %oss = alloca %"class.std::basic_ostringstream", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 store %"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"** %this.addr, align 8, !tbaa !1 store [22 x i8]* %t, [22 x i8]** %t.addr, align 8, !tbaa !7 %this1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.start(i64 352, i8* %0) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::basic_ostringstream"* %oss, i32 16) %1 = bitcast %"class.std::basic_ostringstream"* %oss to %"class.std::basic_ostream"* %2 = load [22 x i8]*, [22 x i8]** %t.addr, align 8 %arraydecay = getelementptr inbounds [22 x i8], [22 x i8]* %2, i32 0, i32 0 %call = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* dereferenceable(272) %1, i8* %arraydecay) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %message = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %this1, i32 0, i32 0 invoke void @_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::basic_string"* sret %ref.tmp, %"class.std::basic_ostringstream"* %oss) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call5 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLERKSs(%"class.std::basic_string"* %message, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont2 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %3 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %3) #5 ret %"class.unittest::UnitTestException"* %this1 lpad: ; preds = %invoke.cont, %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont2 %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %10 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %10) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val7 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA9_cEERS0_RKT_(%"class.unittest::UnitTestException"* %this, [9 x i8]* dereferenceable(9) %t) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.unittest::UnitTestException"*, align 8 %t.addr = alloca [9 x i8]*, align 8 %oss = alloca %"class.std::basic_ostringstream", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 store %"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"** %this.addr, align 8, !tbaa !1 store [9 x i8]* %t, [9 x i8]** %t.addr, align 8, !tbaa !7 %this1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.start(i64 352, i8* %0) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::basic_ostringstream"* %oss, i32 16) %1 = bitcast %"class.std::basic_ostringstream"* %oss to %"class.std::basic_ostream"* %2 = load [9 x i8]*, [9 x i8]** %t.addr, align 8 %arraydecay = getelementptr inbounds [9 x i8], [9 x i8]* %2, i32 0, i32 0 %call = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* dereferenceable(272) %1, i8* %arraydecay) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %message = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %this1, i32 0, i32 0 invoke void @_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::basic_string"* sret %ref.tmp, %"class.std::basic_ostringstream"* %oss) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call5 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSspLERKSs(%"class.std::basic_string"* %message, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont2 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %3 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %3) #5 ret %"class.unittest::UnitTestException"* %this1 lpad: ; preds = %invoke.cont, %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont2 %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %oss) #5 %10 = bitcast %"class.std::basic_ostringstream"* %oss to i8* call void @llvm.lifetime.end(i64 352, i8* %10) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val7 } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest9type_nameIN6thrust11host_vectorINS1_4pairIaaEESaIS4_EEEEESsv(%"class.std::basic_string"* noalias sret %agg.result) #0 comdat { entry: %call = call i8* @_ZNKSt9type_info4nameEv(%"class.std::type_info"* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust11host_vectorINS_4pairIaaEESaIS2_EEE to %"class.std::type_info"*)) #5 call void @_ZN8unittest8demangleEPKc(%"class.std::basic_string"* sret %agg.result, i8* %call) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN8unittest15UnitTestFailureC2EOS0_(%"class.unittest::UnitTestFailure"* %this, %"class.unittest::UnitTestFailure"* dereferenceable(8)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.unittest::UnitTestFailure"*, align 8 %.addr = alloca %"class.unittest::UnitTestFailure"*, align 8 store %"class.unittest::UnitTestFailure"* %this, %"class.unittest::UnitTestFailure"** %this.addr, align 8, !tbaa !1 store %"class.unittest::UnitTestFailure"* %0, %"class.unittest::UnitTestFailure"** %.addr, align 8, !tbaa !7 %this1 = load %"class.unittest::UnitTestFailure"*, %"class.unittest::UnitTestFailure"** %this.addr, align 8 %1 = bitcast %"class.unittest::UnitTestFailure"* %this1 to %"class.unittest::UnitTestException"* %2 = load %"class.unittest::UnitTestFailure"*, %"class.unittest::UnitTestFailure"** %.addr, align 8 %3 = bitcast %"class.unittest::UnitTestFailure"* %2 to %"class.unittest::UnitTestException"* call void @_ZN8unittest17UnitTestExceptionC2EOS0_(%"class.unittest::UnitTestException"* %1, %"class.unittest::UnitTestException"* dereferenceable(8) %3) #5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN8unittest17UnitTestExceptionD2Ev(%"class.unittest::UnitTestException"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.unittest::UnitTestException"*, align 8 store %"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %this.addr, align 8 %message = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %this1, i32 0, i32 0 call void @_ZNSsD2Ev(%"class.std::basic_string"* %message) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::vector_base.62"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 1 %0 = load i64, i64* %m_size, align 8, !tbaa !99 ret i64 %0 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIaaEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_(%"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"* %first2.coerce) #0 comdat { entry: %first1 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp11 = alloca %"struct.thrust::detail::integral_constant.197", align 1 %ref.tmp = alloca %"struct.thrust::detail::is_same", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive7, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive8, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp9 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp10 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"struct.thrust::detail::is_same"* %ref.tmp to %"struct.thrust::detail::integral_constant.197"* %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive12, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp9, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive14, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp10, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive19, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive20, align 8 %call = call zeroext i1 @_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIaaEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_NS0_17integral_constantIbLb0EEE(%"struct.thrust::pair"* %7, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %9) ret i1 %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.62"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.427", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.62", %"class.thrust::detail::vector_base.62"* %this1, i32 0, i32 0 %call = call %"struct.thrust::pair"* @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.63"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive9, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust6detail12vector_equalINS0_15normal_iteratorIPKNS_4pairIaaEEEENS2_INS_10device_ptrIS5_EEEEEEbT_SB_T0_NS0_17integral_constantIbLb0EEE(%"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"* %first2.coerce) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %first1 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %0 = alloca %"struct.thrust::detail::integral_constant.197", align 1 %n = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %from_system1 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %from_system2 = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %to_system = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %rng1 = alloca %"class.thrust::detail::move_to_system", align 8 %agg.tmp14 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp15 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %rng2 = alloca %"class.thrust::detail::move_to_system.432", align 8 %agg.tmp20 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp38 = alloca %"class.thrust::detail::tagged_iterator", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp44 = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp51 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive7, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive8, align 8 %1 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp9 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive10, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp9, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive12, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive13, align 8 %call = call i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEENS_15iterator_traitsIT_E15difference_typeES9_S9_(%"struct.thrust::pair"* %6, %"struct.thrust::pair"* %7) store i64 %call, i64* %n, align 8, !tbaa !13 %8 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %8) #5 %9 = bitcast %"struct.thrust::system::cuda::detail::tag"* %from_system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %9) #5 %10 = bitcast %"struct.thrust::system::cpp::detail::tag"* %to_system to i8* call void @llvm.lifetime.start(i64 1, i8* %10) #5 %11 = bitcast %"class.thrust::detail::move_to_system"* %rng1 to i8* call void @llvm.lifetime.start(i64 16, i8* %11) #5 %12 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system1 to %"struct.thrust::execution_policy.88"* %13 = bitcast %"struct.thrust::system::cpp::detail::tag"* %to_system to %"struct.thrust::execution_policy.88"* %14 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp14 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.134"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp15 to i8* %17 = bitcast %"class.thrust::detail::normal_iterator.134"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp14, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive16, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp15, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive18, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 call void @_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagESB_EC2ERNS_16execution_policyISB_EESF_S7_S7_(%"class.thrust::detail::move_to_system"* %rng1, %"struct.thrust::execution_policy.88"* dereferenceable(1) %12, %"struct.thrust::execution_policy.88"* dereferenceable(1) %13, %"struct.thrust::pair"* %18, %"struct.thrust::pair"* %19) %20 = bitcast %"class.thrust::detail::move_to_system.432"* %rng2 to i8* call void @llvm.lifetime.start(i64 24, i8* %20) #5 %21 = bitcast %"struct.thrust::system::cuda::detail::tag"* %from_system2 to %"struct.thrust::execution_policy.120"* %22 = bitcast %"struct.thrust::system::cpp::detail::tag"* %to_system to %"struct.thrust::execution_policy.88"* %23 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp20 to i8* %24 = bitcast %"class.thrust::detail::normal_iterator.427"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %23, i8* %24, i64 8, i32 8, i1 false) %25 = bitcast %"class.thrust::detail::normal_iterator.427"* %first2 to %"class.thrust::iterator_facade.429"* %26 = load i64, i64* %n, align 8, !tbaa !13 %call22 = call %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.429"* dereferenceable(1) %25, i64 %26) %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp21, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive26, i32 0, i32 0 store %"struct.thrust::pair"* %call22, %"struct.thrust::pair"** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp20, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive31, i32 0, i32 0 %27 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp21, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive35, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive36, i32 0, i32 0 %28 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive37, align 8 call void @_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_6system4cuda6detail3tagENS9_3cpp6detail3tagEEC2ERNS_16execution_policyISC_EERNSH_ISF_EES8_S8_(%"class.thrust::detail::move_to_system.432"* %rng2, %"struct.thrust::execution_policy.120"* dereferenceable(1) %21, %"struct.thrust::execution_policy.88"* dereferenceable(1) %22, %"struct.thrust::pair"* %27, %"struct.thrust::pair"* %28) %29 = bitcast %"class.thrust::detail::move_to_system"* %rng1 to %"class.thrust::detail::tagged_iterator_range"* %call39 = invoke %"struct.thrust::pair"* @_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEE5beginEv(%"class.thrust::detail::tagged_iterator_range"* %29) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive40 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp38, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive41, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive42, i32 0, i32 0 store %"struct.thrust::pair"* %call39, %"struct.thrust::pair"** %coerce.dive43, align 8 %30 = bitcast %"class.thrust::detail::move_to_system"* %rng1 to %"class.thrust::detail::tagged_iterator_range"* %call46 = invoke %"struct.thrust::pair"* @_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEE3endEv(%"class.thrust::detail::tagged_iterator_range"* %30) to label %invoke.cont45 unwind label %lpad invoke.cont45: ; preds = %invoke.cont %coerce.dive47 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp44, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive49, i32 0, i32 0 store %"struct.thrust::pair"* %call46, %"struct.thrust::pair"** %coerce.dive50, align 8 %31 = bitcast %"class.thrust::detail::move_to_system.432"* %rng2 to %"class.thrust::detail::contiguous_storage.434"* %call53 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.434"* %31) to label %invoke.cont52 unwind label %lpad invoke.cont52: ; preds = %invoke.cont45 %coerce.dive54 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp51, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive55, i32 0, i32 0 %coerce.dive57 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive56, i32 0, i32 0 store %"struct.thrust::pair"* %call53, %"struct.thrust::pair"** %coerce.dive57, align 8 %coerce.dive58 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp38, i32 0, i32 0 %coerce.dive59 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive58, i32 0, i32 0 %coerce.dive60 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive59, i32 0, i32 0 %coerce.dive61 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive60, i32 0, i32 0 %32 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive61, align 8 %coerce.dive62 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp44, i32 0, i32 0 %coerce.dive63 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive62, i32 0, i32 0 %coerce.dive64 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive63, i32 0, i32 0 %coerce.dive65 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive64, i32 0, i32 0 %33 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive65, align 8 %coerce.dive66 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp51, i32 0, i32 0 %coerce.dive67 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive66, i32 0, i32 0 %coerce.dive68 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive67, i32 0, i32 0 %coerce.dive69 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive68, i32 0, i32 0 %34 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive69, align 8 %call71 = invoke zeroext i1 @_ZN6thrust5equalINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEEbT_SI_T0_(%"struct.thrust::pair"* %32, %"struct.thrust::pair"* %33, %"struct.thrust::pair"* %34) to label %invoke.cont70 unwind label %lpad invoke.cont70: ; preds = %invoke.cont52 call void bitcast (void (%"class.thrust::detail::temporary_array.433"*)* @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system3cpp6detail3tagEED2Ev to void (%"class.thrust::detail::move_to_system.432"*)*)(%"class.thrust::detail::move_to_system.432"* %rng2) #5 %35 = bitcast %"class.thrust::detail::move_to_system.432"* %rng2 to i8* call void @llvm.lifetime.end(i64 24, i8* %35) #5 %36 = bitcast %"class.thrust::detail::move_to_system"* %rng1 to i8* call void @llvm.lifetime.end(i64 16, i8* %36) #5 %37 = bitcast %"struct.thrust::system::cpp::detail::tag"* %to_system to i8* call void @llvm.lifetime.end(i64 1, i8* %37) #5 %38 = bitcast %"struct.thrust::system::cuda::detail::tag"* %from_system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %38) #5 %39 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %39) #5 %40 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %40) #5 ret i1 %call71 lpad: ; preds = %invoke.cont52, %invoke.cont45, %invoke.cont, %entry %41 = landingpad { i8*, i32 } cleanup %42 = extractvalue { i8*, i32 } %41, 0 store i8* %42, i8** %exn.slot, align 8 %43 = extractvalue { i8*, i32 } %41, 1 store i32 %43, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::temporary_array.433"*)* @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system3cpp6detail3tagEED2Ev to void (%"class.thrust::detail::move_to_system.432"*)*)(%"class.thrust::detail::move_to_system.432"* %rng2) #5 %44 = bitcast %"class.thrust::detail::move_to_system.432"* %rng2 to i8* call void @llvm.lifetime.end(i64 24, i8* %44) #5 %45 = bitcast %"class.thrust::detail::move_to_system"* %rng1 to i8* call void @llvm.lifetime.end(i64 16, i8* %45) #5 %46 = bitcast %"struct.thrust::system::cpp::detail::tag"* %to_system to i8* call void @llvm.lifetime.end(i64 1, i8* %46) #5 %47 = bitcast %"struct.thrust::system::cuda::detail::tag"* %from_system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %47) #5 %48 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %48) #5 %49 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %49) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val72 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val72 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagESB_EC2ERNS_16execution_policyISB_EESF_S7_S7_(%"class.thrust::detail::move_to_system"* %this, %"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"struct.thrust::execution_policy.88"* dereferenceable(1) %to_system, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) unnamed_addr #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %this.addr = alloca %"class.thrust::detail::move_to_system"*, align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %to_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store %"class.thrust::detail::move_to_system"* %this, %"class.thrust::detail::move_to_system"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %to_system, %"struct.thrust::execution_policy.88"** %to_system.addr, align 8, !tbaa !7 %this4 = load %"class.thrust::detail::move_to_system"*, %"class.thrust::detail::move_to_system"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::move_to_system"* %this4 to %"class.thrust::detail::tagged_iterator_range"* %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %to_system.addr, align 8 %2 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp5 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive8, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 call void @_ZN6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEC2INS_16execution_policyISB_EESF_EERKT_RKT0_S7_S7_(%"class.thrust::detail::tagged_iterator_range"* %0, %"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"struct.thrust::execution_policy.88"* dereferenceable(1) %2, %"struct.thrust::pair"* %7, %"struct.thrust::pair"* %8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.429"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.427", align 8 %i.addr = alloca %"class.thrust::iterator_facade.429"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.427", align 8 store %"class.thrust::iterator_facade.429"* %i, %"class.thrust::iterator_facade.429"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.427"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.429"*, %"class.thrust::iterator_facade.429"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.429"* %1 to %"class.thrust::detail::normal_iterator.427"* %3 = bitcast %"class.thrust::detail::normal_iterator.427"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %tmp to %"class.thrust::iterator_facade.429"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.427"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEpLEl(%"class.thrust::iterator_facade.429"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.427"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.427"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.427"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %10 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail14move_to_systemINS0_15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_6system4cuda6detail3tagENS9_3cpp6detail3tagEEC2ERNS_16execution_policyISC_EERNSH_ISF_EES8_S8_(%"class.thrust::detail::move_to_system.432"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %from_system, %"struct.thrust::execution_policy.88"* dereferenceable(1) %to_system, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) unnamed_addr #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %this.addr = alloca %"class.thrust::detail::move_to_system.432"*, align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %to_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 store %"class.thrust::detail::move_to_system.432"* %this, %"class.thrust::detail::move_to_system.432"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %from_system, %"struct.thrust::execution_policy.120"** %from_system.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %to_system, %"struct.thrust::execution_policy.88"** %to_system.addr, align 8, !tbaa !7 %this10 = load %"class.thrust::detail::move_to_system.432"*, %"class.thrust::detail::move_to_system.432"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::move_to_system.432"* %this10 to %"class.thrust::detail::temporary_array.433"* %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %to_system.addr, align 8 %2 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %from_system.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp11 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive15, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp11, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive20, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive21, align 8 call void @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system3cpp6detail3tagEEC2INS4_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEERNS_16execution_policyIS7_EERNSI_IT_EET0_SO_(%"class.thrust::detail::temporary_array.433"* %0, %"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"struct.thrust::execution_policy.120"* dereferenceable(1) %2, %"struct.thrust::pair"* %7, %"struct.thrust::pair"* %8) ret void } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust5equalINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEEbT_SI_T0_(%"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"* %first2.coerce) #0 comdat { entry: %first1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %last1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %system1 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %system2 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp12 = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp13 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %last1, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %first2, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to %"struct.thrust::execution_policy.88"* %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to %"struct.thrust::execution_policy.88"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %2, %"struct.thrust::execution_policy.88"* dereferenceable(1) %3) %4 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* %5 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp to i8* %6 = bitcast %"class.thrust::detail::tagged_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp12 to i8* %8 = bitcast %"class.thrust::detail::tagged_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.439"* %agg.tmp13 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.439"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive16, i32 0, i32 0 %11 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp12, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive20, i32 0, i32 0 %12 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp13, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive24, i32 0, i32 0 %13 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive25, align 8 %call26 = call zeroext i1 @_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEEEEbRKNS5_21execution_policy_baseIT_EET0_SN_T1_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %4, %"struct.thrust::pair"* %11, %"struct.thrust::pair"* %12, %"struct.thrust::pair"* %13) %14 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %14) #5 %15 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %15) #5 ret i1 %call26 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEE5beginEv(%"class.thrust::detail::tagged_iterator_range"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tagged_iterator", align 8 %this.addr = alloca %"class.thrust::detail::tagged_iterator_range"*, align 8 store %"class.thrust::detail::tagged_iterator_range"* %this, %"class.thrust::detail::tagged_iterator_range"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_iterator_range"*, %"class.thrust::detail::tagged_iterator_range"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::tagged_iterator_range", %"class.thrust::detail::tagged_iterator_range"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::tagged_iterator"* %retval to i8* %1 = bitcast %"class.thrust::detail::tagged_iterator"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive3, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEE3endEv(%"class.thrust::detail::tagged_iterator_range"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tagged_iterator", align 8 %this.addr = alloca %"class.thrust::detail::tagged_iterator_range"*, align 8 store %"class.thrust::detail::tagged_iterator_range"* %this, %"class.thrust::detail::tagged_iterator_range"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_iterator_range"*, %"class.thrust::detail::tagged_iterator_range"** %this.addr, align 8 %m_end = getelementptr inbounds %"class.thrust::detail::tagged_iterator_range", %"class.thrust::detail::tagged_iterator_range"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::tagged_iterator"* %retval to i8* %1 = bitcast %"class.thrust::detail::tagged_iterator"* %m_end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive3, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.434"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.439", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.434"*, align 8 store %"class.thrust::detail::contiguous_storage.434"* %this, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.434"*, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.439"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.439"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system3cpp6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.433"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_array.433"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.439", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.439", align 8 store %"class.thrust::detail::temporary_array.433"* %this, %"class.thrust::detail::temporary_array.433"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_array.433"*, %"class.thrust::detail::temporary_array.433"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array.433"* %this1 to %"class.thrust::detail::contiguous_storage.434"* %1 = bitcast %"class.thrust::detail::temporary_array.433"* %this1 to %"class.thrust::detail::contiguous_storage.434"* %call = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.434"* %1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive4, align 8 %2 = bitcast %"class.thrust::detail::temporary_array.433"* %this1 to %"class.thrust::detail::contiguous_storage.434"* %call7 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE3endEv(%"class.thrust::detail::contiguous_storage.434"* %2) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %call7, %"struct.thrust::pair"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive14, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp5, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive18, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_(%"class.thrust::detail::contiguous_storage.434"* %0, %"struct.thrust::pair"* %3, %"struct.thrust::pair"* %4) to label %invoke.cont20 unwind label %lpad invoke.cont20: ; preds = %invoke.cont6 %5 = bitcast %"class.thrust::detail::temporary_array.433"* %this1 to %"class.thrust::detail::contiguous_storage.434"* call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.434"* %5) #5 ret void lpad: ; preds = %invoke.cont6, %invoke.cont, %entry %6 = landingpad { i8*, i32 } catch i8* null %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 %9 = bitcast %"class.thrust::detail::temporary_array.433"* %this1 to %"class.thrust::detail::contiguous_storage.434"* call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.434"* %9) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail21tagged_iterator_rangeINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEC2INS_16execution_policyISB_EESF_EERKT_RKT0_S7_S7_(%"class.thrust::detail::tagged_iterator_range"* %this, %"struct.thrust::execution_policy.88"* dereferenceable(1), %"struct.thrust::execution_policy.88"* dereferenceable(1), %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) unnamed_addr #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.134", align 8 %last = alloca %"class.thrust::detail::normal_iterator.134", align 8 %this.addr = alloca %"class.thrust::detail::tagged_iterator_range"*, align 8 %.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %.addr4 = alloca %"struct.thrust::execution_policy.88"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.134", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.134", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store %"class.thrust::detail::tagged_iterator_range"* %this, %"class.thrust::detail::tagged_iterator_range"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.88"* %0, %"struct.thrust::execution_policy.88"** %.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %1, %"struct.thrust::execution_policy.88"** %.addr4, align 8, !tbaa !7 %this5 = load %"class.thrust::detail::tagged_iterator_range"*, %"class.thrust::detail::tagged_iterator_range"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::tagged_iterator_range", %"class.thrust::detail::tagged_iterator_range"* %this5, i32 0, i32 0 %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 call void @_ZN6thrust6detail15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEC2ES7_(%"class.thrust::detail::tagged_iterator"* %m_begin, %"struct.thrust::pair"* %4) %m_end = getelementptr inbounds %"class.thrust::detail::tagged_iterator_range", %"class.thrust::detail::tagged_iterator_range"* %this5, i32 0, i32 1 %5 = bitcast %"class.thrust::detail::normal_iterator.134"* %agg.tmp8 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.134"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %agg.tmp8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive9, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 call void @_ZN6thrust6detail15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEC2ES7_(%"class.thrust::detail::tagged_iterator"* %m_end, %"struct.thrust::pair"* %7) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEC2ES7_(%"class.thrust::detail::tagged_iterator"* %this, %"struct.thrust::pair"* %x.coerce) unnamed_addr #0 comdat align 2 { entry: %x = alloca %"class.thrust::detail::normal_iterator.134", align 8 %this.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %x, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %x.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"class.thrust::detail::tagged_iterator"* %this, %"class.thrust::detail::tagged_iterator"** %this.addr, align 8, !tbaa !1 %this2 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tagged_iterator"* %this2 to %"class.thrust::iterator_adaptor.430"* call void @_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lEC2ERKS8_(%"class.thrust::iterator_adaptor.430"* %0, %"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %x) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lEC2ERKS8_(%"class.thrust::iterator_adaptor.430"* %this, %"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.430"*, align 8 %iter.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 store %"class.thrust::iterator_adaptor.430"* %this, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.134"* %iter, %"class.thrust::detail::normal_iterator.134"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.430"*, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.430"* %this1 to %"class.thrust::iterator_facade.431"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %this1, i32 0, i32 0 %1 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %iter.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %m_iterator to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.427"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEpLEl(%"class.thrust::iterator_facade.429"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.429"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.429"* %this, %"class.thrust::iterator_facade.429"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.429"*, %"class.thrust::iterator_facade.429"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.427"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv(%"class.thrust::iterator_facade.429"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEEvRT_NSA_15difference_typeE(%"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.427"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv(%"class.thrust::iterator_facade.429"* %this1) ret %"class.thrust::detail::normal_iterator.427"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEEvRT_NSA_15difference_typeE(%"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.427"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.427"* %f, %"class.thrust::detail::normal_iterator.427"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.427"*, %"class.thrust::detail::normal_iterator.427"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.427"* %0 to %"class.thrust::iterator_adaptor.428"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E7advanceEl(%"class.thrust::iterator_adaptor.428"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.427"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv(%"class.thrust::iterator_facade.429"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.429"*, align 8 store %"class.thrust::iterator_facade.429"* %this, %"class.thrust::iterator_facade.429"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.429"*, %"class.thrust::iterator_facade.429"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.429"* %this1 to %"class.thrust::detail::normal_iterator.427"* ret %"class.thrust::detail::normal_iterator.427"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E7advanceEl(%"class.thrust::iterator_adaptor.428"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.428"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.428"* %this, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.428"*, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr.137"* %m_iterator to %"class.thrust::iterator_facade.140"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::device_ptr.137"* @_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEpLEl(%"class.thrust::iterator_facade.140"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.137"* @_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEpLEl(%"class.thrust::iterator_facade.140"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.140"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.140"* %this, %"class.thrust::iterator_facade.140"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.140"*, %"class.thrust::iterator_facade.140"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.137"* @_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv(%"class.thrust::iterator_facade.140"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIKNS_4pairIaaEEEEEEvRT_NS7_15difference_typeE(%"class.thrust::device_ptr.137"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::device_ptr.137"* @_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv(%"class.thrust::iterator_facade.140"* %this1) ret %"class.thrust::device_ptr.137"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIKNS_4pairIaaEEEEEEvRT_NS7_15difference_typeE(%"class.thrust::device_ptr.137"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::device_ptr.137"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::device_ptr.137"* %f, %"class.thrust::device_ptr.137"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.137"* %0 to %"class.thrust::iterator_adaptor.139"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7advanceEl(%"class.thrust::iterator_adaptor.139"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.137"* @_ZN6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv(%"class.thrust::iterator_facade.140"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.140"*, align 8 store %"class.thrust::iterator_facade.140"* %this, %"class.thrust::iterator_facade.140"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.140"*, %"class.thrust::iterator_facade.140"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.140"* %this1 to %"class.thrust::device_ptr.137"* ret %"class.thrust::device_ptr.137"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7advanceEl(%"class.thrust::iterator_adaptor.139"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.139"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.139"* %this, %"class.thrust::iterator_adaptor.139"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.139"*, %"class.thrust::iterator_adaptor.139"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !111 %add.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %1, i64 %0 store %"struct.thrust::pair"* %add.ptr, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !111 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayINS_4pairIaaEENS_6system3cpp6detail3tagEEC2INS4_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEERNS_16execution_policyIS7_EERNSI_IT_EET0_SO_(%"class.thrust::detail::temporary_array.433"* %this, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system, %"struct.thrust::execution_policy.120"* dereferenceable(1) %input_system, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %this.addr = alloca %"class.thrust::detail::temporary_array.433"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %input_system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %ref.tmp = alloca %"struct.thrust::detail::no_throw_allocator.435", align 8 %ref.tmp11 = alloca %"class.thrust::detail::temporary_allocator.436", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp14 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp28 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp29 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp30 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %coerce = alloca %"class.thrust::detail::normal_iterator.439", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 store %"class.thrust::detail::temporary_array.433"* %this, %"class.thrust::detail::temporary_array.433"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.88"* %system, %"struct.thrust::execution_policy.88"** %system.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %input_system, %"struct.thrust::execution_policy.120"** %input_system.addr, align 8, !tbaa !7 %this10 = load %"class.thrust::detail::temporary_array.433"*, %"class.thrust::detail::temporary_array.433"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array.433"* %this10 to %"class.thrust::detail::contiguous_storage.434"* %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEC2ERNS_16execution_policyIS7_EE(%"class.thrust::detail::temporary_allocator.436"* %ref.tmp11, %"struct.thrust::execution_policy.88"* dereferenceable(1) %1) invoke void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEC2ERKS9_(%"struct.thrust::detail::no_throw_allocator.435"* %ref.tmp, %"class.thrust::detail::temporary_allocator.436"* dereferenceable(8) %ref.tmp11) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEEC2ERKSB_(%"class.thrust::detail::contiguous_storage.434"* %0, %"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %ref.tmp) to label %invoke.cont13 unwind label %lpad12 invoke.cont13: ; preds = %invoke.cont call void bitcast (void (%"class.thrust::detail::tagged_allocator.437"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.435"*)*)(%"struct.thrust::detail::no_throw_allocator.435"* %ref.tmp) #5 call void bitcast (void (%"class.thrust::detail::tagged_allocator.437"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"class.thrust::detail::temporary_allocator.436"*)*)(%"class.thrust::detail::temporary_allocator.436"* %ref.tmp11) #5 %2 = bitcast %"class.thrust::detail::temporary_array.433"* %this10 to %"class.thrust::detail::contiguous_storage.434"* %3 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp14 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive18, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp14, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive23, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive24, align 8 %call = invoke i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_(%"struct.thrust::pair"* %7, %"struct.thrust::pair"* %8) to label %invoke.cont26 unwind label %lpad25 invoke.cont26: ; preds = %invoke.cont13 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.434"* %2, i64 %call) to label %invoke.cont27 unwind label %lpad25 invoke.cont27: ; preds = %invoke.cont26 %9 = bitcast %"class.thrust::detail::temporary_array.433"* %this10 to %"class.thrust::detail::contiguous_storage.434"* %10 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %input_system.addr, align 8 %11 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp28 to i8* %12 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %13 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp29 to i8* %14 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 8, i32 8, i1 false) %15 = bitcast %"class.thrust::detail::temporary_array.433"* %this10 to %"class.thrust::detail::contiguous_storage.434"* %call32 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.434"* %15) to label %invoke.cont31 unwind label %lpad25 invoke.cont31: ; preds = %invoke.cont27 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp30, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive35, i32 0, i32 0 store %"struct.thrust::pair"* %call32, %"struct.thrust::pair"** %coerce.dive36, align 8 %coerce.dive37 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp28, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive37, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive40, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive41, align 8 %coerce.dive42 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp29, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive42, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive45, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive46, align 8 %coerce.dive47 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp30, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive49, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive50, align 8 %call52 = invoke %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE18uninitialized_copyINS6_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEENSH_INS_7pointerIS3_S9_NS_11use_defaultESN_EEEERNS_16execution_policyIT_EET0_SU_SP_(%"class.thrust::detail::contiguous_storage.434"* %9, %"struct.thrust::execution_policy.120"* dereferenceable(1) %10, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %17, %"struct.thrust::pair"* %18) to label %invoke.cont51 unwind label %lpad25 invoke.cont51: ; preds = %invoke.cont31 %coerce.dive53 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %coerce, i32 0, i32 0 %coerce.dive54 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive53, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive55, i32 0, i32 0 store %"struct.thrust::pair"* %call52, %"struct.thrust::pair"** %coerce.dive56, align 8 ret void lpad: ; preds = %entry %19 = landingpad { i8*, i32 } cleanup %20 = extractvalue { i8*, i32 } %19, 0 store i8* %20, i8** %exn.slot, align 8 %21 = extractvalue { i8*, i32 } %19, 1 store i32 %21, i32* %ehselector.slot, align 4 br label %ehcleanup lpad12: ; preds = %invoke.cont %22 = landingpad { i8*, i32 } cleanup %23 = extractvalue { i8*, i32 } %22, 0 store i8* %23, i8** %exn.slot, align 8 %24 = extractvalue { i8*, i32 } %22, 1 store i32 %24, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator.437"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.435"*)*)(%"struct.thrust::detail::no_throw_allocator.435"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad12, %lpad call void bitcast (void (%"class.thrust::detail::tagged_allocator.437"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"class.thrust::detail::temporary_allocator.436"*)*)(%"class.thrust::detail::temporary_allocator.436"* %ref.tmp11) #5 br label %eh.resume lpad25: ; preds = %invoke.cont31, %invoke.cont27, %invoke.cont26, %invoke.cont13 %25 = landingpad { i8*, i32 } cleanup %26 = extractvalue { i8*, i32 } %25, 0 store i8* %26, i8** %exn.slot, align 8 %27 = extractvalue { i8*, i32 } %25, 1 store i32 %27, i32* %ehselector.slot, align 4 %28 = bitcast %"class.thrust::detail::temporary_array.433"* %this10 to %"class.thrust::detail::contiguous_storage.434"* call void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.434"* %28) #5 br label %eh.resume eh.resume: ; preds = %lpad25, %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val58 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val58 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEC2ERNS_16execution_policyIS7_EE(%"class.thrust::detail::temporary_allocator.436"* %this, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.436"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::temporary_allocator.436"* %this, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.88"* %system, %"struct.thrust::execution_policy.88"** %system.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator.436"*, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator.436"* %this1 to %"class.thrust::detail::tagged_allocator.437"* call void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev(%"class.thrust::detail::tagged_allocator.437"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.436", %"class.thrust::detail::temporary_allocator.436"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* %call = invoke dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store %"struct.thrust::system::cpp::detail::tag"* %call, %"struct.thrust::system::cpp::detail::tag"** %m_system, align 8, !tbaa !7 ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 %6 = bitcast %"class.thrust::detail::temporary_allocator.436"* %this1 to %"class.thrust::detail::tagged_allocator.437"* call void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev(%"class.thrust::detail::tagged_allocator.437"* %6) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEC2ERKS9_(%"struct.thrust::detail::no_throw_allocator.435"* %this, %"class.thrust::detail::temporary_allocator.436"* dereferenceable(8) %other) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator.436"*, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %this, %"struct.thrust::detail::no_throw_allocator.435"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator.436"* %other, %"class.thrust::detail::temporary_allocator.436"** %other.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator.435"* %this1 to %"class.thrust::detail::temporary_allocator.436"* %1 = load %"class.thrust::detail::temporary_allocator.436"*, %"class.thrust::detail::temporary_allocator.436"** %other.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEC2ERKS8_(%"class.thrust::detail::temporary_allocator.436"* %0, %"class.thrust::detail::temporary_allocator.436"* dereferenceable(8) %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEEC2ERKSB_(%"class.thrust::detail::contiguous_storage.434"* %this, %"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.434"*, align 8 %alloc.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.434"* %this, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::no_throw_allocator.435"* %alloc, %"struct.thrust::detail::no_throw_allocator.435"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.434"*, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %alloc.addr, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEC2ERKSA_(%"struct.thrust::detail::no_throw_allocator.435"* %m_allocator, %"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %0) %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 1 invoke void @_ZN6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.442"* %agg.tmp, %"struct.thrust::pair"* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 invoke void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.439"* %m_begin, %"struct.thrust::pair"* %1) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !305 ret void lpad: ; preds = %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator.437"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.435"*)*)(%"struct.thrust::detail::no_throw_allocator.435"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val4 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val4 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev(%"class.thrust::detail::tagged_allocator.437"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator.437"*, align 8 store %"class.thrust::detail::tagged_allocator.437"* %this, %"class.thrust::detail::tagged_allocator.437"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator.437"*, %"class.thrust::detail::tagged_allocator.437"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.434"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.434"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.439", align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %ref.tmp6 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %agg.tmp7 = alloca %"class.thrust::pointer.442", align 8 store %"class.thrust::detail::contiguous_storage.434"* %this, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.434"*, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_m(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %m_allocator, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.439"* %ref.tmp, %"struct.thrust::pair"* %2) %3 = bitcast %"class.thrust::detail::normal_iterator.439"* %m_begin to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.439"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 2 store i64 %5, i64* %m_size, align 8, !tbaa !305 br label %if.end if.else: ; preds = %entry %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.442"* %agg.tmp7, %"struct.thrust::pair"* null) %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive8, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.439"* %ref.tmp6, %"struct.thrust::pair"* %6) %7 = bitcast %"class.thrust::detail::normal_iterator.439"* %m_begin5 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.439"* %ref.tmp6 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %m_size10 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 2 store i64 0, i64* %m_size10, align 8, !tbaa !305 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_(%"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp10 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive14, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp10, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive19, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive20, align 8 %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_(%"struct.thrust::pair"* %4, %"struct.thrust::pair"* %5) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE18uninitialized_copyINS6_4cuda6detail3tagENS0_15normal_iteratorINS_10device_ptrIKS3_EEEEEENSH_INS_7pointerIS3_S9_NS_11use_defaultESN_EEEERNS_16execution_policyIT_EET0_SU_SP_(%"class.thrust::detail::contiguous_storage.434"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %from_system, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.439", align 8 %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::detail::normal_iterator.439", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.434"*, align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %agg.tmp15 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp16 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp17 = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %result, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive12, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive13, align 8 store %"class.thrust::detail::contiguous_storage.434"* %this, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %from_system, %"struct.thrust::execution_policy.120"** %from_system.addr, align 8, !tbaa !7 %this14 = load %"class.thrust::detail::contiguous_storage.434"*, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %from_system.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this14, i32 0, i32 0 %1 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp15 to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp16 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.439"* %result to %"class.thrust::iterator_adaptor.440"* %call = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.440"* %5) %6 = bitcast %"class.thrust::pointer.442"* %agg.tmp17 to i8* %7 = bitcast %"class.thrust::pointer.442"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp15, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive21, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive22, align 8 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp16, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive26, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp17, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive28, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive29, align 8 %call30 = call %"struct.thrust::pair"* @_ZN6thrust6detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS2_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKS9_EEEENS_7pointerIS9_SC_NS_11use_defaultESL_EEEET2_RNS_16execution_policyIT_EERT0_T1_SU_SN_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %0, %"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %m_allocator, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10) %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive31, i32 0, i32 0 store %"struct.thrust::pair"* %call30, %"struct.thrust::pair"** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive33, i32 0, i32 0 %11 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive34, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.439"* %retval, %"struct.thrust::pair"* %11) %coerce.dive35 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %retval, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive35, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive36, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive37, i32 0, i32 0 %12 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive38, align 8 ret %"struct.thrust::pair"* %12 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.434"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.434"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.434"* %this, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.434"*, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.434"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator.437"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.435"*)*)(%"struct.thrust::detail::no_throw_allocator.435"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator.437"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.435"*)*)(%"struct.thrust::detail::no_throw_allocator.435"* %m_allocator2) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev(%"class.thrust::detail::tagged_allocator.437"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator.437"*, align 8 store %"class.thrust::detail::tagged_allocator.437"* %this, %"class.thrust::detail::tagged_allocator.437"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator.437"*, %"class.thrust::detail::tagged_allocator.437"** %this.addr, align 8 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEC2ERKS8_(%"class.thrust::detail::temporary_allocator.436"* %this, %"class.thrust::detail::temporary_allocator.436"* dereferenceable(8) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.436"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator.436"*, align 8 store %"class.thrust::detail::temporary_allocator.436"* %this, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator.436"* %other, %"class.thrust::detail::temporary_allocator.436"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator.436"*, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator.436"* %this1 to %"class.thrust::detail::tagged_allocator.437"* call void @_ZN6thrust6detail16tagged_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev(%"class.thrust::detail::tagged_allocator.437"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.436", %"class.thrust::detail::temporary_allocator.436"* %this1, i32 0, i32 0 %1 = load %"class.thrust::detail::temporary_allocator.436"*, %"class.thrust::detail::temporary_allocator.436"** %other.addr, align 8 %m_system2 = getelementptr inbounds %"class.thrust::detail::temporary_allocator.436", %"class.thrust::detail::temporary_allocator.436"* %1, i32 0, i32 0 %ref = load %"struct.thrust::system::cpp::detail::tag"*, %"struct.thrust::system::cpp::detail::tag"** %m_system2, align 8, !tbaa !7 store %"struct.thrust::system::cpp::detail::tag"* %ref, %"struct.thrust::system::cpp::detail::tag"** %m_system, align 8, !tbaa !7 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEC2ERKSA_(%"struct.thrust::detail::no_throw_allocator.435"* %this, %"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %this, %"struct.thrust::detail::no_throw_allocator.435"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::no_throw_allocator.435"* %0, %"struct.thrust::detail::no_throw_allocator.435"** %.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %this.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.435"* %this1 to %"class.thrust::detail::temporary_allocator.436"* %2 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %.addr, align 8 %3 = bitcast %"struct.thrust::detail::no_throw_allocator.435"* %2 to %"class.thrust::detail::temporary_allocator.436"* call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEC2ERKS8_(%"class.thrust::detail::temporary_allocator.436"* %1, %"class.thrust::detail::temporary_allocator.436"* dereferenceable(8) %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.442"* %this, %"struct.thrust::pair"* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.442"*, align 8 %other.addr = alloca %"struct.thrust::pair"*, align 8 store %"class.thrust::pointer.442"* %this, %"class.thrust::pointer.442"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %other, %"struct.thrust::pair"** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.442"* %this1 to %"class.thrust::iterator_adaptor.443"* call void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_(%"class.thrust::iterator_adaptor.443"* %0, %"struct.thrust::pair"** dereferenceable(8) %other.addr) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.439"* %this, %"struct.thrust::pair"* %p.coerce) unnamed_addr #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.442", align 8 %this.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"class.thrust::detail::normal_iterator.439"* %this, %"class.thrust::detail::normal_iterator.439"** %this.addr, align 8, !tbaa !1 %this2 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.439"* %this2 to %"class.thrust::iterator_adaptor.440"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_(%"class.thrust::iterator_adaptor.440"* %0, %"class.thrust::pointer.442"* dereferenceable(8) %p) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_(%"class.thrust::iterator_adaptor.443"* %this, %"struct.thrust::pair"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.443"*, align 8 %iter.addr = alloca %"struct.thrust::pair"**, align 8 store %"class.thrust::iterator_adaptor.443"* %this, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"** %iter, %"struct.thrust::pair"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.443"*, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.443"* %this1 to %"class.thrust::iterator_facade.444"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"**, %"struct.thrust::pair"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %1, align 8, !tbaa !1 store %"struct.thrust::pair"* %2, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !309 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_(%"class.thrust::iterator_adaptor.440"* %this, %"class.thrust::pointer.442"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.440"*, align 8 %iter.addr = alloca %"class.thrust::pointer.442"*, align 8 store %"class.thrust::iterator_adaptor.440"* %this, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.442"* %iter, %"class.thrust::pointer.442"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.440"*, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.440"* %this1 to %"class.thrust::iterator_facade.441"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %this1, i32 0, i32 0 %1 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %iter.addr, align 8 %2 = bitcast %"class.thrust::pointer.442"* %m_iterator to i8* %3 = bitcast %"class.thrust::pointer.442"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_m(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a, i64 %n) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.435"* %0 to %"class.thrust::detail::temporary_allocator.436"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator.436"* %1, i64 %2) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %3 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator.436"* %this, i64 %cnt) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator.436"*, align 8 %cnt.addr = alloca i64, align 8 %result = alloca %"struct.thrust::pair.445", align 8 %ref.tmp = alloca %"struct.thrust::pair.446", align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %ref.tmp4 = alloca %"class.std::basic_string", align 8 %ref.tmp5 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 store %"class.thrust::detail::temporary_allocator.436"* %this, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::temporary_allocator.436"*, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8 %0 = bitcast %"struct.thrust::pair.445"* %result to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.436"* %this1) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call2 = call { %"struct.thrust::pair"*, i64 } @_ZN6thrust20get_temporary_bufferINS_4pairIaaEENS_6system3cpp6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.446"* %ref.tmp to { %"struct.thrust::pair"*, i64 }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { %"struct.thrust::pair"*, i64 } %call2, 0 store %"struct.thrust::pair"* %5, %"struct.thrust::pair"** %4, align 8 %6 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { %"struct.thrust::pair"*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 call void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.445"* %result, %"struct.thrust::pair.446"* dereferenceable(16) %ref.tmp) %second = getelementptr inbounds %"struct.thrust::pair.445", %"struct.thrust::pair.445"* %result, i32 0, i32 1 %8 = load i64, i64* %second, align 8, !tbaa !311 %9 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %cmp = icmp ult i64 %8, %9 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %first = getelementptr inbounds %"struct.thrust::pair.445", %"struct.thrust::pair.445"* %result, i32 0, i32 0 %10 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %11 = bitcast %"class.thrust::pointer.442"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 %13 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm(%"class.thrust::detail::temporary_allocator.436"* %this1, %"struct.thrust::pair"* %13, i64 %12) %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %14 = bitcast i8* %exception to %"class.thrust::system::detail::bad_alloc"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp5) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp4, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.44, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp5) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then invoke void @_ZN6thrust6system6detail9bad_allocC2ERKSs(%"class.thrust::system::detail::bad_alloc"* %14, %"class.std::basic_string"* dereferenceable(8) %ref.tmp4) to label %invoke.cont7 unwind label %lpad6 invoke.cont7: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system6detail9bad_allocE to i8*), i8* bitcast (void (%"class.thrust::system::detail::bad_alloc"*)* @_ZN6thrust6system6detail9bad_allocD2Ev to i8*)) #15 to label %unreachable unwind label %lpad6 lpad: ; preds = %if.then %15 = landingpad { i8*, i32 } cleanup %16 = extractvalue { i8*, i32 } %15, 0 store i8* %16, i8** %exn.slot, align 8 %17 = extractvalue { i8*, i32 } %15, 1 store i32 %17, i32* %ehselector.slot, align 4 br label %ehcleanup lpad6: ; preds = %invoke.cont7, %invoke.cont %18 = landingpad { i8*, i32 } cleanup %19 = extractvalue { i8*, i32 } %18, 0 store i8* %19, i8** %exn.slot, align 8 %20 = extractvalue { i8*, i32 } %18, 1 store i32 %20, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp4) #5 br label %ehcleanup ehcleanup: ; preds = %lpad6, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp5) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup %21 = bitcast %"struct.thrust::pair.445"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %21) #5 br label %eh.resume if.end: ; preds = %entry %first9 = getelementptr inbounds %"struct.thrust::pair.445", %"struct.thrust::pair.445"* %result, i32 0, i32 0 %22 = bitcast %"class.thrust::pointer.442"* %retval to i8* %23 = bitcast %"class.thrust::pointer.442"* %first9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 8, i32 8, i1 false) %24 = bitcast %"struct.thrust::pair.445"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %24) #5 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive11, i32 0, i32 0 %25 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive12, align 8 ret %"struct.thrust::pair"* %25 eh.resume: ; preds = %cleanup.done %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val13 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val13 unreachable: ; preds = %invoke.cont7 unreachable } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i64 } @_ZN6thrust20get_temporary_bufferINS_4pairIaaEENS_6system3cpp6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.446", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::pair.446", align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call { %"struct.thrust::pair"*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIaaEENS0_3cpp6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.446"* %agg.tmp to { %"struct.thrust::pair"*, i64 }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { %"struct.thrust::pair"*, i64 } %call2, 0 store %"struct.thrust::pair"* %5, %"struct.thrust::pair"** %4, align 8 %6 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { %"struct.thrust::pair"*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 %8 = bitcast %"struct.thrust::pair.446"* %agg.tmp to { %"struct.thrust::pair"*, i64 }* %9 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %8, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %9, align 8 %11 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %8, i32 0, i32 1 %12 = load i64, i64* %11, align 8 %call3 = call { %"struct.thrust::pair"*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIaaEENS_6system3cpp6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_(%"struct.thrust::pair"* %10, i64 %12) %13 = bitcast %"struct.thrust::pair.446"* %retval to { %"struct.thrust::pair"*, i64 }* %14 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %13, i32 0, i32 0 %15 = extractvalue { %"struct.thrust::pair"*, i64 } %call3, 0 store %"struct.thrust::pair"* %15, %"struct.thrust::pair"** %14, align 8 %16 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %13, i32 0, i32 1 %17 = extractvalue { %"struct.thrust::pair"*, i64 } %call3, 1 store i64 %17, i64* %16, align 8 %18 = bitcast %"struct.thrust::pair.446"* %retval to { %"struct.thrust::pair"*, i64 }* %19 = load { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %18, align 8 ret { %"struct.thrust::pair"*, i64 } %19 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.436"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.436"*, align 8 store %"class.thrust::detail::temporary_allocator.436"* %this, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_allocator.436"*, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8 %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.436", %"class.thrust::detail::temporary_allocator.436"* %this1, i32 0, i32 0 %ref = load %"struct.thrust::system::cpp::detail::tag"*, %"struct.thrust::system::cpp::detail::tag"** %m_system, align 8, !tbaa !7 ret %"struct.thrust::system::cpp::detail::tag"* %ref } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.445"* %this, %"struct.thrust::pair.446"* dereferenceable(16) %p) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.445"*, align 8 %p.addr = alloca %"struct.thrust::pair.446"*, align 8 store %"struct.thrust::pair.445"* %this, %"struct.thrust::pair.445"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.446"* %p, %"struct.thrust::pair.446"** %p.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.445"*, %"struct.thrust::pair.445"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.445", %"struct.thrust::pair.445"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.446"*, %"struct.thrust::pair.446"** %p.addr, align 8 %first2 = getelementptr inbounds %"struct.thrust::pair.446", %"struct.thrust::pair.446"* %0, i32 0, i32 0 %1 = bitcast %"class.thrust::pointer.442"* %first to i8* %2 = bitcast %"class.thrust::pointer.442"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.445", %"struct.thrust::pair.445"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::pair.446"*, %"struct.thrust::pair.446"** %p.addr, align 8 %second3 = getelementptr inbounds %"struct.thrust::pair.446", %"struct.thrust::pair.446"* %3, i32 0, i32 1 %4 = load i64, i64* %second3, align 8, !tbaa !314 store i64 %4, i64* %second, align 8, !tbaa !311 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm(%"class.thrust::detail::temporary_allocator.436"* %this, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.442", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator.436"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"class.thrust::detail::temporary_allocator.436"* %this, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::temporary_allocator.436"*, %"class.thrust::detail::temporary_allocator.436"** %this.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.436"* %this2) %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* %1 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.442"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust23return_temporary_bufferINS_6system3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0, %"struct.thrust::pair"* %3) ret void } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIaaEENS_6system3cpp6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_(%"struct.thrust::pair"* %p.coerce0, i64 %p.coerce1) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.446", align 8 %p = alloca %"struct.thrust::pair.446", align 8 %ptr = alloca %"class.thrust::pointer.442", align 8 %0 = bitcast %"struct.thrust::pair.446"* %p to { %"struct.thrust::pair"*, i64 }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %0, i32 0, i32 1 store i64 %p.coerce1, i64* %2, align 8 %3 = bitcast %"class.thrust::pointer.442"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %first = getelementptr inbounds %"struct.thrust::pair.446", %"struct.thrust::pair.446"* %p, i32 0, i32 0 %call = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.442"* dereferenceable(8) %first) call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.442"* %ptr, %"struct.thrust::pair"* %call) %second = getelementptr inbounds %"struct.thrust::pair.446", %"struct.thrust::pair.446"* %p, i32 0, i32 1 call void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl(%"struct.thrust::pair.446"* %retval, %"class.thrust::pointer.442"* dereferenceable(8) %ptr, i64* dereferenceable(8) %second) %4 = bitcast %"class.thrust::pointer.442"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %4) #5 %5 = bitcast %"struct.thrust::pair.446"* %retval to { %"struct.thrust::pair"*, i64 }* %6 = load { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %5, align 8 ret { %"struct.thrust::pair"*, i64 } %6 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIaaEENS0_3cpp6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.446", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %n.addr = alloca i64, align 8 %ptr = alloca %"class.thrust::pointer.442", align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.442"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust6mallocINS_4pairIaaEENS_6system3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive1, align 8 %call2 = call %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.442"* %ptr) %tobool = icmp ne %"struct.thrust::pair"* %call2, null br i1 %tobool, label %if.end, label %if.then if.then: ; preds = %entry store i64 0, i64* %n.addr, align 8, !tbaa !13 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %5 = bitcast %"class.thrust::pointer.442"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 %call5 = call { %"struct.thrust::pair"*, i64 } @_ZN6thrust9make_pairINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_(%"struct.thrust::pair"* %7, i64 %6) %8 = bitcast %"struct.thrust::pair.446"* %retval to { %"struct.thrust::pair"*, i64 }* %9 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %8, i32 0, i32 0 %10 = extractvalue { %"struct.thrust::pair"*, i64 } %call5, 0 store %"struct.thrust::pair"* %10, %"struct.thrust::pair"** %9, align 8 %11 = getelementptr inbounds { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %8, i32 0, i32 1 %12 = extractvalue { %"struct.thrust::pair"*, i64 } %call5, 1 store i64 %12, i64* %11, align 8 %13 = bitcast %"class.thrust::pointer.442"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.446"* %retval to { %"struct.thrust::pair"*, i64 }* %15 = load { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %14, align 8 ret { %"struct.thrust::pair"*, i64 } %15 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.442"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::pointer.442"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 store %"class.thrust::pointer.442"* %ptr, %"class.thrust::pointer.442"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.442"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive1, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEE3getESA_(%"struct.thrust::pair"* %3) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl(%"struct.thrust::pair.446"* %this, %"class.thrust::pointer.442"* dereferenceable(8) %x, i64* dereferenceable(8) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.446"*, align 8 %x.addr = alloca %"class.thrust::pointer.442"*, align 8 %y.addr = alloca i64*, align 8 store %"struct.thrust::pair.446"* %this, %"struct.thrust::pair.446"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.442"* %x, %"class.thrust::pointer.442"** %x.addr, align 8, !tbaa !7 store i64* %y, i64** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.446"*, %"struct.thrust::pair.446"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.446", %"struct.thrust::pair.446"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %x.addr, align 8 %1 = bitcast %"class.thrust::pointer.442"* %first to i8* %2 = bitcast %"class.thrust::pointer.442"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.446", %"struct.thrust::pair.446"* %this1, i32 0, i32 1 %3 = load i64*, i64** %y.addr, align 8 %4 = load i64, i64* %3, align 8, !tbaa !13 store i64 %4, i64* %second, align 8, !tbaa !314 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEE3getESA_(%"struct.thrust::pair"* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %ptr.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %call = call %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.442"* %ptr) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.442"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.442"*, align 8 store %"class.thrust::pointer.442"* %this, %"class.thrust::pointer.442"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.442"* %this1 to %"class.thrust::iterator_adaptor.443"* %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv(%"class.thrust::iterator_adaptor.443"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 ret %"struct.thrust::pair"* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv(%"class.thrust::iterator_adaptor.443"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.443"*, align 8 store %"class.thrust::iterator_adaptor.443"* %this, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.443"*, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %this1, i32 0, i32 0 ret %"struct.thrust::pair"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6mallocINS_4pairIaaEENS_6system3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %n.addr = alloca i64, align 8 %raw_ptr = alloca %"struct.thrust::pair"*, align 8 %ref.tmp = alloca %"class.thrust::pointer.442", align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::pair"** %raw_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic6mallocINS_4pairIaaEENS0_3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm(%"struct.thrust::execution_policy.88"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %ref.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive3, align 8 %call4 = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.442"* dereferenceable(8) %ref.tmp) store %"struct.thrust::pair"* %call4, %"struct.thrust::pair"** %raw_ptr, align 8, !tbaa !1 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %raw_ptr, align 8, !tbaa !1 call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.442"* %retval, %"struct.thrust::pair"* %4) %5 = bitcast %"struct.thrust::pair"** %raw_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive5, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 ret %"struct.thrust::pair"* %6 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair"*, i64 } @_ZN6thrust9make_pairINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_(%"struct.thrust::pair"* %x.coerce, i64 %y) #8 comdat { entry: %retval = alloca %"struct.thrust::pair.446", align 8 %x = alloca %"class.thrust::pointer.442", align 8 %y.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %x, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %x.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store i64 %y, i64* %y.addr, align 8, !tbaa !13 call void @_ZN6thrust4pairINS_7pointerINS0_IaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl(%"struct.thrust::pair.446"* %retval, %"class.thrust::pointer.442"* dereferenceable(8) %x, i64* dereferenceable(8) %y.addr) %0 = bitcast %"struct.thrust::pair.446"* %retval to { %"struct.thrust::pair"*, i64 }* %1 = load { %"struct.thrust::pair"*, i64 }, { %"struct.thrust::pair"*, i64 }* %0, align 8 ret { %"struct.thrust::pair"*, i64 } %1 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail7generic6mallocINS_4pairIaaEENS0_3cpp6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %n.addr = alloca i64, align 8 %void_ptr = alloca %"class.thrust::pointer.447", align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.447"* %void_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 2, %3 %call = call i8* @_ZN6thrust6mallocINS_6system3cpp6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, i64 %mul) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.447", %"class.thrust::pointer.447"* %void_ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.448", %"class.thrust::iterator_adaptor.448"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive1, align 8 %call2 = call i8* @_ZNK6thrust7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.447"* %void_ptr) %4 = bitcast i8* %call2 to %"struct.thrust::pair"* call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.442"* %retval, %"struct.thrust::pair"* %4) %5 = bitcast %"class.thrust::pointer.447"* %void_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 ret %"struct.thrust::pair"* %6 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZN6thrust6mallocINS_6system3cpp6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.447", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %n.addr = alloca i64, align 8 %raw_ptr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %raw_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call i8* @_ZN6thrust6system6detail10sequential6mallocINS0_3cpp6detail3tagEEEPvRNS2_16execution_policyIT_EEm(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %2, i64 %3) store i8* %call2, i8** %ref.tmp, align 8, !tbaa !1 %call3 = call i8* @_ZN6thrust16raw_pointer_castIPvEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_(i8** dereferenceable(8) %ref.tmp) store i8* %call3, i8** %raw_ptr, align 8, !tbaa !1 %4 = load i8*, i8** %raw_ptr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES5_EC2IvEEPT_(%"class.thrust::pointer.447"* %retval, i8* %4) %5 = bitcast i8** %raw_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.447", %"class.thrust::pointer.447"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.448", %"class.thrust::iterator_adaptor.448"* %coerce.dive, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive4, align 8 ret i8* %6 } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNK6thrust7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.447"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.447"*, align 8 store %"class.thrust::pointer.447"* %this, %"class.thrust::pointer.447"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.447"*, %"class.thrust::pointer.447"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.447"* %this1 to %"class.thrust::iterator_adaptor.448"* %call = call dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlE4baseEv(%"class.thrust::iterator_adaptor.448"* %0) %1 = load i8*, i8** %call, align 8, !tbaa !1 ret i8* %1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i8* @_ZN6thrust6system6detail10sequential6mallocINS0_3cpp6detail3tagEEEPvRNS2_16execution_policyIT_EEm(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), i64 %n) #9 comdat { entry: %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call noalias i8* @malloc(i64 %1) #5 ret i8* %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES5_EC2IvEEPT_(%"class.thrust::pointer.447"* %this, i8* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.447"*, align 8 %other.addr = alloca i8*, align 8 store %"class.thrust::pointer.447"* %this, %"class.thrust::pointer.447"** %this.addr, align 8, !tbaa !1 store i8* %other, i8** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.447"*, %"class.thrust::pointer.447"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.447"* %this1 to %"class.thrust::iterator_adaptor.448"* call void @_ZN6thrust16iterator_adaptorINS_7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlEC2ERKS8_(%"class.thrust::iterator_adaptor.448"* %0, i8** dereferenceable(8) %other.addr) ret void } ; Function Attrs: nounwind declare noalias i8* @malloc(i64) #4 ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlEC2ERKS8_(%"class.thrust::iterator_adaptor.448"* %this, i8** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.448"*, align 8 %iter.addr = alloca i8**, align 8 store %"class.thrust::iterator_adaptor.448"* %this, %"class.thrust::iterator_adaptor.448"** %this.addr, align 8, !tbaa !1 store i8** %iter, i8*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.448"*, %"class.thrust::iterator_adaptor.448"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.448"* %this1 to %"class.thrust::iterator_facade.449"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.448", %"class.thrust::iterator_adaptor.448"* %this1, i32 0, i32 0 %1 = load i8**, i8*** %iter.addr, align 8 %2 = load i8*, i8** %1, align 8, !tbaa !1 store i8* %2, i8** %m_iterator, align 8, !tbaa !316 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i8** @_ZNK6thrust16iterator_adaptorINS_7pointerIvNS_6system3cpp6detail3tagENS_11use_defaultES6_EEPvvS5_NS_27random_access_traversal_tagEvlE4baseEv(%"class.thrust::iterator_adaptor.448"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.448"*, align 8 store %"class.thrust::iterator_adaptor.448"* %this, %"class.thrust::iterator_adaptor.448"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.448"*, %"class.thrust::iterator_adaptor.448"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.448", %"class.thrust::iterator_adaptor.448"* %this1, i32 0, i32 0 ret i8** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust23return_temporary_bufferINS_6system3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"struct.thrust::pair"* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.442", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call2 to %"struct.thrust::execution_policy.88"* %2 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.442"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"struct.thrust::pair"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, %"struct.thrust::pair"* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.442", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %2 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.442"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZN6thrust4freeINS_6system3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, %"struct.thrust::pair"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust4freeINS_6system3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"struct.thrust::pair"* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::pointer.442", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %ptr.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call2 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.442"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust6system6detail10sequential4freeINS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"struct.thrust::pair"* %4) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system6detail10sequential4freeINS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"struct.thrust::pair"* %ptr.coerce) #8 comdat { entry: %ptr = alloca %"class.thrust::pointer.442", align 8 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %ptr.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 %call = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.442"* dereferenceable(8) %ptr) %1 = bitcast %"struct.thrust::pair"* %call to i8* call void @free(i8* %1) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_(%"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp11 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp10 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive15, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp10, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive20, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive21, align 8 %call = call i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENS_15iterator_traitsIT_E15difference_typeESE_SE_NS_27random_access_traversal_tagE(%"struct.thrust::pair"* %4, %"struct.thrust::pair"* %5) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENS_15iterator_traitsIT_E15difference_typeESE_SE_NS_27random_access_traversal_tagE(%"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to %"class.thrust::iterator_facade.429"* %2 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to %"class.thrust::iterator_facade.429"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElS8_S5_SC_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_(%"class.thrust::iterator_facade.429"* dereferenceable(1) %1, %"class.thrust::iterator_facade.429"* dereferenceable(1) %2) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElS8_S5_SC_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_(%"class.thrust::iterator_facade.429"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.429"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.429"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.429"*, align 8 store %"class.thrust::iterator_facade.429"* %lhs, %"class.thrust::iterator_facade.429"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.429"* %rhs, %"class.thrust::iterator_facade.429"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.429"*, %"class.thrust::iterator_facade.429"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.429"* %0 to %"class.thrust::detail::normal_iterator.427"* %2 = load %"class.thrust::iterator_facade.429"*, %"class.thrust::iterator_facade.429"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.429"* %2 to %"class.thrust::detail::normal_iterator.427"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES9_EENS2_20distance_from_resultIT_T0_E4typeERKSB_RKSC_(%"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES9_EENS2_20distance_from_resultIT_T0_E4typeERKSB_RKSC_(%"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.427"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.427"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.427"* %f1, %"class.thrust::detail::normal_iterator.427"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.427"* %f2, %"class.thrust::detail::normal_iterator.427"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.427"*, %"class.thrust::detail::normal_iterator.427"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.427"*, %"class.thrust::detail::normal_iterator.427"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES9_EENT_15difference_typeERKSA_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES9_EENT_15difference_typeERKSA_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.427"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.427"*, align 8 store %"class.thrust::detail::normal_iterator.427"* %f1, %"class.thrust::detail::normal_iterator.427"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.427"* %f2, %"class.thrust::detail::normal_iterator.427"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.427"*, %"class.thrust::detail::normal_iterator.427"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.427"* %1 to %"class.thrust::iterator_adaptor.428"* %3 = load %"class.thrust::detail::normal_iterator.427"*, %"class.thrust::detail::normal_iterator.427"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %3 to %"class.thrust::iterator_adaptor.428"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11distance_toIS8_S7_S9_S9_S9_S9_S9_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.428"* %2, %"class.thrust::iterator_adaptor.428"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11distance_toIS8_S7_S9_S9_S9_S9_S9_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.428"* %this, %"class.thrust::iterator_adaptor.428"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.428"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.428"*, align 8 store %"class.thrust::iterator_adaptor.428"* %this, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.428"* %y, %"class.thrust::iterator_adaptor.428"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.428"*, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.428"*, %"class.thrust::iterator_adaptor.428"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.137"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E4baseEv(%"class.thrust::iterator_adaptor.428"* %0) %1 = bitcast %"class.thrust::device_ptr.137"* %call to %"class.thrust::iterator_facade.140"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %this1, i32 0, i32 0 %2 = bitcast %"class.thrust::device_ptr.137"* %m_iterator to %"class.thrust::iterator_facade.140"* %call2 = call i64 @_ZN6thrustmiINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElS5_S3_S9_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.140"* dereferenceable(1) %1, %"class.thrust::iterator_facade.140"* dereferenceable(1) %2) ret i64 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElS5_S3_S9_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.140"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.140"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.140"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.140"*, align 8 store %"class.thrust::iterator_facade.140"* %lhs, %"class.thrust::iterator_facade.140"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.140"* %rhs, %"class.thrust::iterator_facade.140"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.140"*, %"class.thrust::iterator_facade.140"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.140"* %0 to %"class.thrust::device_ptr.137"* %2 = load %"class.thrust::iterator_facade.140"*, %"class.thrust::iterator_facade.140"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.140"* %2 to %"class.thrust::device_ptr.137"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIaaEEEES6_EENS_6detail20distance_from_resultIT_T0_E4typeERKS9_RKSA_(%"class.thrust::device_ptr.137"* dereferenceable(8) %1, %"class.thrust::device_ptr.137"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.137"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E4baseEv(%"class.thrust::iterator_adaptor.428"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.428"*, align 8 store %"class.thrust::iterator_adaptor.428"* %this, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.428"*, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %this1, i32 0, i32 0 ret %"class.thrust::device_ptr.137"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIaaEEEES6_EENS_6detail20distance_from_resultIT_T0_E4typeERKS9_RKSA_(%"class.thrust::device_ptr.137"* dereferenceable(8) %f1, %"class.thrust::device_ptr.137"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::device_ptr.137"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr.137"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::device_ptr.137"* %f1, %"class.thrust::device_ptr.137"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.137"* %f2, %"class.thrust::device_ptr.137"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %f1.addr, align 8 %1 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIaaEEEES6_EENT_15difference_typeERKS7_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr.137"* dereferenceable(8) %0, %"class.thrust::device_ptr.137"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIKNS_4pairIaaEEEES6_EENT_15difference_typeERKS7_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr.137"* dereferenceable(8) %f1, %"class.thrust::device_ptr.137"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::device_ptr.137"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr.137"*, align 8 store %"class.thrust::device_ptr.137"* %f1, %"class.thrust::device_ptr.137"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.137"* %f2, %"class.thrust::device_ptr.137"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %f1.addr, align 8 %2 = bitcast %"class.thrust::device_ptr.137"* %1 to %"class.thrust::iterator_adaptor.139"* %3 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %f2.addr, align 8 %4 = bitcast %"class.thrust::device_ptr.137"* %3 to %"class.thrust::iterator_adaptor.139"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE11distance_toIS5_S6_S3_SA_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.139"* %2, %"class.thrust::iterator_adaptor.139"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE11distance_toIS5_S6_S3_SA_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.139"* %this, %"class.thrust::iterator_adaptor.139"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.139"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.139"*, align 8 store %"class.thrust::iterator_adaptor.139"* %this, %"class.thrust::iterator_adaptor.139"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.139"* %y, %"class.thrust::iterator_adaptor.139"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.139"*, %"class.thrust::iterator_adaptor.139"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.139"*, %"class.thrust::iterator_adaptor.139"** %y.addr, align 8 %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE4baseEv(%"class.thrust::iterator_adaptor.139"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %this1, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !111 %sub.ptr.lhs.cast = ptrtoint %"struct.thrust::pair"* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %"struct.thrust::pair"* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 ret i64 %sub.ptr.div } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE4baseEv(%"class.thrust::iterator_adaptor.139"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.139"*, align 8 store %"class.thrust::iterator_adaptor.139"* %this, %"class.thrust::iterator_adaptor.139"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.139"*, %"class.thrust::iterator_adaptor.139"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %this1, i32 0, i32 0 ret %"struct.thrust::pair"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS2_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKS9_EEEENS_7pointerIS9_SC_NS_11use_defaultESL_EEEET2_RNS_16execution_policyIT_EERT0_T1_SU_SN_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %from_system, %"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::pointer.442", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp12 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp13 = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %result, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::execution_policy.120"* %from_system, %"struct.thrust::execution_policy.120"** %from_system.addr, align 8, !tbaa !7 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %from_system.addr, align 8 %1 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp12 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::pointer.442"* %agg.tmp13 to i8* %7 = bitcast %"class.thrust::pointer.442"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive17, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp12, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive22, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp13, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive24, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive25, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS3_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKSA_EEEENS_7pointerISA_SD_NS_11use_defaultESM_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESR_E4typeERNS_16execution_policyIT_EERSP_T1_S11_SR_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %0, %"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %1, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10) %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive26, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive28, i32 0, i32 0 %11 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive29, align 8 ret %"struct.thrust::pair"* %11 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.442"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.440"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.440"*, align 8 store %"class.thrust::iterator_adaptor.440"* %this, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.440"*, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %this1, i32 0, i32 0 ret %"class.thrust::pointer.442"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system4cuda6detail3tagENS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS3_3cpp6detail3tagEEEEENS0_15normal_iteratorINS_10device_ptrIKSA_EEEENS_7pointerISA_SD_NS_11use_defaultESM_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESR_E4typeERNS_16execution_policyIT_EERSP_T1_S11_SR_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %from_system, %"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::pointer.442", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp12 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp13 = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %result, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::execution_policy.120"* %from_system, %"struct.thrust::execution_policy.120"** %from_system.addr, align 8, !tbaa !7 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %from_system.addr, align 8 %1 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE3getERSB_(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %1) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::execution_policy.88"* %3 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp12 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::pointer.442"* %agg.tmp13 to i8* %8 = bitcast %"class.thrust::pointer.442"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive17, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp12, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive22, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp13, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive24, i32 0, i32 0 %11 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive25, align 8 %call26 = call %"struct.thrust::pair"* @_ZN6thrust6detail15two_system_copyINS_6system4cuda6detail3tagENS2_3cpp6detail3tagENS0_15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S8_NS_11use_defaultESH_EEEET2_RKNS_16execution_policyIT_EERKNSK_IT0_EET1_ST_SJ_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %0, %"struct.thrust::execution_policy.88"* dereferenceable(1) %2, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10, %"struct.thrust::pair"* %11) %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive27, i32 0, i32 0 store %"struct.thrust::pair"* %call26, %"struct.thrust::pair"** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive29, i32 0, i32 0 %12 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive30, align 8 ret %"struct.thrust::pair"* %12 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail15two_system_copyINS_6system4cuda6detail3tagENS2_3cpp6detail3tagENS0_15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S8_NS_11use_defaultESH_EEEET2_RKNS_16execution_policyIT_EERKNSK_IT0_EET1_ST_SJ_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system2, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::pointer.442", align 8 %system1.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp16 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp17 = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %result, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::execution_policy.120"* %system1, %"struct.thrust::execution_policy.120"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %system2, %"struct.thrust::execution_policy.88"** %system2.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system1.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.120"* %0 to %"struct.thrust::detail::execution_policy_base.121"* %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call12 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call12 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %3 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2.addr, align 8 %4 = bitcast %"struct.thrust::execution_policy.88"* %3 to %"struct.thrust::detail::execution_policy_base.85"* %call13 = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %4) %call14 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call13) %5 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call14 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %call15 = call { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } @_ZN6thrust6system4cuda6detail13select_systemINS2_3tagENS0_3cpp6detail3tagEEENS2_12cross_systemIT_T0_EERKNS2_16execution_policyIS9_EERKNS6_16execution_policyISA_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %2, %"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %5) %6 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %ref.tmp to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %7 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %6, i32 0, i32 0 %8 = extractvalue { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } %call15, 0 store %"struct.thrust::execution_policy.120"* %8, %"struct.thrust::execution_policy.120"** %7, align 8 %9 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %6, i32 0, i32 1 %10 = extractvalue { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* } %call15, 1 store %"struct.thrust::execution_policy.88"* %10, %"struct.thrust::execution_policy.88"** %9, align 8 %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.229"* %12 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp16 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::pointer.442"* %agg.tmp17 to i8* %17 = bitcast %"class.thrust::pointer.442"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive21, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive22, align 8 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp16, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive26, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp17, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive28, i32 0, i32 0 %20 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive29, align 8 %call30 = call %"struct.thrust::pair"* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS3_3tagENS1_3cpp6detail3tagEEENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISE_S8_NS_11use_defaultESJ_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SR_SL_(%"struct.thrust::detail::execution_policy_base.229"* dereferenceable(1) %11, %"struct.thrust::pair"* %18, %"struct.thrust::pair"* %19, %"struct.thrust::pair"* %20) %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive31, i32 0, i32 0 store %"struct.thrust::pair"* %call30, %"struct.thrust::pair"** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive33, i32 0, i32 0 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive34, align 8 ret %"struct.thrust::pair"* %21 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE3getERSB_(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a) #8 comdat align 2 { entry: %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %0) ret %"struct.thrust::system::cpp::detail::tag"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS3_3tagENS1_3cpp6detail3tagEEENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISE_S8_NS_11use_defaultESJ_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SR_SL_(%"struct.thrust::detail::execution_policy_base.229"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::pointer.442", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.229"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %agg.tmp13 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp14 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp15 = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %result, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::detail::execution_policy_base.229"* %exec, %"struct.thrust::detail::execution_policy_base.229"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.229"*, %"struct.thrust::detail::execution_policy_base.229"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.229"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS4_3tagENS2_3cpp6detail3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_(%"struct.thrust::detail::execution_policy_base.229"* dereferenceable(1) %0) %call12 = call dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system.227"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS4_3tagENS2_3cpp6detail3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.229"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %agg.tmp to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %call12 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp13 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp14 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::pointer.442"* %agg.tmp15 to i8* %8 = bitcast %"class.thrust::pointer.442"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %agg.tmp to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp13, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive19, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive20, align 8 %coerce.dive21 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp14, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive24, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive25, align 8 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp15, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive26, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive27, align 8 %call28 = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail4copyINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_(%"struct.thrust::execution_policy.120"* %11, %"struct.thrust::execution_policy.88"* %13, %"struct.thrust::pair"* %14, %"struct.thrust::pair"* %15, %"struct.thrust::pair"* %16) %coerce.dive29 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive29, i32 0, i32 0 store %"struct.thrust::pair"* %call28, %"struct.thrust::pair"** %coerce.dive30, align 8 %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive31, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive32, align 8 ret %"struct.thrust::pair"* %17 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail4copyINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_(%"struct.thrust::execution_policy.120"* %systems.coerce0, %"struct.thrust::execution_policy.88"* %systems.coerce1, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %last = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::pointer.442", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %agg.tmp12 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp13 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp14 = alloca %"class.thrust::pointer.442", align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %systems to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.120"* %systems.coerce0, %"struct.thrust::execution_policy.120"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.88"* %systems.coerce1, %"struct.thrust::execution_policy.88"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %result, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp12 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp13 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.427"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::pointer.442"* %agg.tmp14 to i8* %10 = bitcast %"class.thrust::pointer.442"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %agg.tmp to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp12, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive18, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp13, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive23, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive24, align 8 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp14, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive25, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive26, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_(%"struct.thrust::execution_policy.120"* %13, %"struct.thrust::execution_policy.88"* %15, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %17, %"struct.thrust::pair"* %18) %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive27, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive29, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive30, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::detail::execution_policy_base.229"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS4_3tagENS2_3cpp6detail3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_(%"struct.thrust::detail::execution_policy_base.229"* dereferenceable(1) %x) #9 comdat { entry: %x.addr = alloca %"struct.thrust::detail::execution_policy_base.229"*, align 8 store %"struct.thrust::detail::execution_policy_base.229"* %x, %"struct.thrust::detail::execution_policy_base.229"** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.229"*, %"struct.thrust::detail::execution_policy_base.229"** %x.addr, align 8 ret %"struct.thrust::detail::execution_policy_base.229"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_(%"struct.thrust::execution_policy.120"* %systems.coerce0, %"struct.thrust::execution_policy.88"* %systems.coerce1, %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.427", align 8 %end = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::pointer.442", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %agg.tmp12 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp13 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp14 = alloca %"class.thrust::pointer.442", align 8 %agg.tmp15 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp16 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %systems to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.120"* %systems.coerce0, %"struct.thrust::execution_policy.120"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.88"* %systems.coerce1, %"struct.thrust::execution_policy.88"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %end, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %result, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp12 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.427"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp13 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.427"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::pointer.442"* %agg.tmp14 to i8* %10 = bitcast %"class.thrust::pointer.442"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %agg.tmp to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %14, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp12, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive20, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp13, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive25, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive26, align 8 %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp14, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive27, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive28, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_(%"struct.thrust::execution_policy.120"* %13, %"struct.thrust::execution_policy.88"* %15, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %17, %"struct.thrust::pair"* %18) %coerce.dive29 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive29, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive30, align 8 %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive31, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive32, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_(%"struct.thrust::execution_policy.120"* %systems.coerce0, %"struct.thrust::execution_policy.88"* %systems.coerce1, %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.427", align 8 %end = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::pointer.442", align 8 %input_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %output_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %agg.tmp13 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp14 = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp15 = alloca %"class.thrust::pointer.442", align 8 %agg.tmp16 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp17 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp18 = alloca %"struct.thrust::detail::integral_constant", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %systems to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.120"* %systems.coerce0, %"struct.thrust::execution_policy.120"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.88"* %systems.coerce1, %"struct.thrust::execution_policy.88"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %end, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %result, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp13 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.427"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp14 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.427"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::pointer.442"* %agg.tmp15 to i8* %10 = bitcast %"class.thrust::pointer.442"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %agg.tmp to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %14, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp13, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive22, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp14, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive27, i32 0, i32 0 %17 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp15, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive29, i32 0, i32 0 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive30, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.120"* %13, %"struct.thrust::execution_policy.88"* %15, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %17, %"struct.thrust::pair"* %18) %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive31, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive33, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive34, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEENS_7pointerISC_S7_NS_11use_defaultESH_EEEET2_NS2_12cross_systemIT_T0_EET1_SO_SJ_NS_27random_access_traversal_tagESP_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.120"* %systems.coerce0, %"struct.thrust::execution_policy.88"* %systems.coerce1, %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system.227", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.427", align 8 %end = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::pointer.442", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %2 = alloca %"struct.thrust::detail::integral_constant", align 1 %n = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.427", align 8 %agg.tmp14 = alloca %"class.thrust::pointer.442", align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system.227"* %systems to { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %4 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %3, i32 0, i32 0 store %"struct.thrust::execution_policy.120"* %systems.coerce0, %"struct.thrust::execution_policy.120"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }, { %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.88"* }* %3, i32 0, i32 1 store %"struct.thrust::execution_policy.88"* %systems.coerce1, %"struct.thrust::execution_policy.88"** %5, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %begin.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %end, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %end.coerce, %"struct.thrust::pair"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %result, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 %6 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %6) #5 %7 = bitcast %"class.thrust::detail::normal_iterator.427"* %end to %"class.thrust::iterator_facade.429"* %8 = bitcast %"class.thrust::detail::normal_iterator.427"* %begin to %"class.thrust::iterator_facade.429"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElS8_S5_SC_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_(%"class.thrust::iterator_facade.429"* dereferenceable(1) %7, %"class.thrust::iterator_facade.429"* dereferenceable(1) %8) store i64 %call, i64* %n, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.427"* %agg.tmp to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.427"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = load i64, i64* %n, align 8, !tbaa !13 %12 = bitcast %"class.thrust::pointer.442"* %agg.tmp14 to i8* %13 = bitcast %"class.thrust::pointer.442"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %agg.tmp, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive18, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp14, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive20, i32 0, i32 0 %15 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive21, align 8 call void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEElNS_7pointerISC_S7_NS_11use_defaultESH_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %systems, %"struct.thrust::pair"* %14, i64 %11, %"struct.thrust::pair"* %15) %16 = bitcast %"class.thrust::pointer.442"* %result to %"class.thrust::iterator_facade.444"* %17 = load i64, i64* %n, align 8, !tbaa !13 %call22 = call %"struct.thrust::pair"* @_ZN6thrustplINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE(%"class.thrust::iterator_facade.444"* dereferenceable(1) %16, i64 %17) %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive23, i32 0, i32 0 store %"struct.thrust::pair"* %call22, %"struct.thrust::pair"** %coerce.dive24, align 8 %18 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %18) #5 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive25, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive26, align 8 ret %"struct.thrust::pair"* %19 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS2_3tagENS0_3cpp6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEElNS_7pointerISC_S7_NS_11use_defaultESH_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system.227"* dereferenceable(16) %systems, %"struct.thrust::pair"* %first.coerce, i64 %n, %"struct.thrust::pair"* %result.coerce) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.427", align 8 %result = alloca %"class.thrust::pointer.442", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system.227"*, align 8 %n.addr = alloca i64, align 8 %dst = alloca i8*, align 8 %ref.tmp = alloca %"class.thrust::pointer.442", align 8 %coerce = alloca %"class.thrust::reference.450", align 8 %src = alloca i8*, align 8 %ref.tmp14 = alloca %"class.thrust::device_ptr.137", align 8 %coerce16 = alloca %"class.thrust::device_reference.451", align 8 %kind = alloca i32, align 4 %s = alloca %struct.CUstream_st*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %result, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %result.coerce, %"struct.thrust::pair"** %coerce.dive6, align 8 store %"struct.thrust::system::cuda::detail::cross_system.227"* %systems, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %dst to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = bitcast %"class.thrust::pointer.442"* %result to %"class.thrust::iterator_facade.444"* %call = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv(%"class.thrust::iterator_facade.444"* %1) %coerce.dive7 = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %coerce, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive9, align 8 %call10 = call %"struct.thrust::pair"* @_ZNK6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EadEv(%"class.thrust::reference.450"* %coerce) %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %ref.tmp, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive11, i32 0, i32 0 store %"struct.thrust::pair"* %call10, %"struct.thrust::pair"** %coerce.dive12, align 8 %call13 = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.442"* dereferenceable(8) %ref.tmp) %2 = bitcast %"struct.thrust::pair"* %call13 to i8* store i8* %2, i8** %dst, align 8, !tbaa !1 %3 = bitcast i8** %src to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = bitcast %"class.thrust::detail::normal_iterator.427"* %first to %"class.thrust::iterator_facade.429"* %call15 = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEdeEv(%"class.thrust::iterator_facade.429"* %4) %coerce.dive17 = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %coerce16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive20, i32 0, i32 0 store %"struct.thrust::pair"* %call15, %"struct.thrust::pair"** %coerce.dive21, align 8 %5 = bitcast %"class.thrust::device_reference.451"* %coerce16 to %"class.thrust::reference.452"* %call22 = call %"struct.thrust::pair"* @_ZNK6thrust9referenceIKNS_4pairIaaEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEadEv(%"class.thrust::reference.452"* %5) %coerce.dive23 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %ref.tmp14, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive24, i32 0, i32 0 store %"struct.thrust::pair"* %call22, %"struct.thrust::pair"** %coerce.dive25, align 8 %call26 = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_10device_ptrIKNS_4pairIaaEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS8_(%"class.thrust::device_ptr.137"* dereferenceable(8) %ref.tmp14) %6 = bitcast %"struct.thrust::pair"* %call26 to i8* store i8* %6, i8** %src, align 8, !tbaa !1 %7 = bitcast i32* %kind to i8* call void @llvm.lifetime.start(i64 4, i8* %7) #5 %8 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8 %system1 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system.227", %"struct.thrust::system::cuda::detail::cross_system.227"* %8, i32 0, i32 0 %ref = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system1, align 8, !tbaa !7 %9 = bitcast %"struct.thrust::execution_policy.120"* %ref to %"struct.thrust::detail::execution_policy_base.121"* %call27 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %9) %10 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call27 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %11 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8 %system2 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system.227", %"struct.thrust::system::cuda::detail::cross_system.227"* %11, i32 0, i32 1 %ref28 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2, align 8, !tbaa !7 %12 = bitcast %"struct.thrust::execution_policy.88"* %ref28 to %"struct.thrust::detail::execution_policy_base.85"* %call29 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %12) %13 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call29 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %call30 = call i32 @_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS2_3tagENS0_3cpp6detail3tagEEE14cudaMemcpyKindRKNS2_16execution_policyIT_EERKNS7_16execution_policyIT0_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %10, %"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %13) store i32 %call30, i32* %kind, align 4, !tbaa !97 %14 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %14) #5 %15 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8 %system131 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system.227", %"struct.thrust::system::cuda::detail::cross_system.227"* %15, i32 0, i32 0 %ref32 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system131, align 8, !tbaa !7 %16 = bitcast %"struct.thrust::execution_policy.120"* %ref32 to %"struct.thrust::detail::execution_policy_base.121"* %call33 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %16) %17 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call33 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %18 = load %"struct.thrust::system::cuda::detail::cross_system.227"*, %"struct.thrust::system::cuda::detail::cross_system.227"** %systems.addr, align 8 %system234 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system.227", %"struct.thrust::system::cuda::detail::cross_system.227"* %18, i32 0, i32 1 %ref35 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system234, align 8, !tbaa !7 %19 = bitcast %"struct.thrust::execution_policy.88"* %ref35 to %"struct.thrust::detail::execution_policy_base.85"* %call36 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %19) %20 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call36 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %call37 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS2_3tagENS0_3cpp6detail3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EERKNS7_16execution_policyIT0_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %17, %"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %20) store %struct.CUstream_st* %call37, %struct.CUstream_st** %s, align 8, !tbaa !1 %21 = load i8*, i8** %dst, align 8, !tbaa !1 %22 = load i8*, i8** %src, align 8, !tbaa !1 %23 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 %23, 2 %24 = load i32, i32* %kind, align 4, !tbaa !97 %25 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail19trivial_copy_detail23checked_cudaMemcpyAsyncEPvPKvm14cudaMemcpyKindP11CUstream_st(i8* %21, i8* %22, i64 %mul, i32 %24, %struct.CUstream_st* %25) %26 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail11synchronizeEP11CUstream_stPKc(%struct.CUstream_st* %26, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.30, i32 0, i32 0)) %27 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %27) #5 %28 = bitcast i32* %kind to i8* call void @llvm.lifetime.end(i64 4, i8* %28) #5 %29 = bitcast i8** %src to i8* call void @llvm.lifetime.end(i64 8, i8* %29) #5 %30 = bitcast i8** %dst to i8* call void @llvm.lifetime.end(i64 8, i8* %30) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrustplINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE(%"class.thrust::iterator_facade.444"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %i.addr = alloca %"class.thrust::iterator_facade.444"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::pointer.442", align 8 store %"class.thrust::iterator_facade.444"* %i, %"class.thrust::iterator_facade.444"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.442"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.444"*, %"class.thrust::iterator_facade.444"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.444"* %1 to %"class.thrust::pointer.442"* %3 = bitcast %"class.thrust::pointer.442"* %tmp to i8* %4 = bitcast %"class.thrust::pointer.442"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::pointer.442"* %tmp to %"class.thrust::iterator_facade.444"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl(%"class.thrust::iterator_facade.444"* %5, i64 %6) %7 = bitcast %"class.thrust::pointer.442"* %retval to i8* %8 = bitcast %"class.thrust::pointer.442"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::pointer.442"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive1, align 8 ret %"struct.thrust::pair"* %10 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv(%"class.thrust::iterator_facade.444"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.450", align 8 %this.addr = alloca %"class.thrust::iterator_facade.444"*, align 8 store %"class.thrust::iterator_facade.444"* %this, %"class.thrust::iterator_facade.444"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.444"*, %"class.thrust::iterator_facade.444"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.444"* %this1) %call2 = call %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_(%"class.thrust::pointer.442"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive6, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EadEv(%"class.thrust::reference.450"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %this.addr = alloca %"class.thrust::reference.450"*, align 8 store %"class.thrust::reference.450"* %this, %"class.thrust::reference.450"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.450"*, %"class.thrust::reference.450"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.442"* %retval to i8* %1 = bitcast %"class.thrust::pointer.442"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_10device_ptrIKNS_4pairIaaEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS8_(%"class.thrust::device_ptr.137"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::device_ptr.137"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.137", align 8 store %"class.thrust::device_ptr.137"* %ptr, %"class.thrust::device_ptr.137"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.137"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.137"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive1, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive2, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIKNS_4pairIaaEEEEE3getES6_(%"struct.thrust::pair"* %3) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElEdeEv(%"class.thrust::iterator_facade.429"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.451", align 8 %this.addr = alloca %"class.thrust::iterator_facade.429"*, align 8 store %"class.thrust::iterator_facade.429"* %this, %"class.thrust::iterator_facade.429"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.429"*, %"class.thrust::iterator_facade.429"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.427"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv(%"class.thrust::iterator_facade.429"* %this1) %call2 = call %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENT_9referenceERKSA_(%"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive10, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust9referenceIKNS_4pairIaaEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEadEv(%"class.thrust::reference.452"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.137", align 8 %this.addr = alloca %"class.thrust::reference.452"*, align 8 store %"class.thrust::reference.452"* %this, %"class.thrust::reference.452"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.452"*, %"class.thrust::reference.452"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr.137"* %retval to i8* %1 = bitcast %"class.thrust::device_ptr.137"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive2, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS2_3tagENS0_3cpp6detail3tagEEE14cudaMemcpyKindRKNS2_16execution_policyIT_EERKNS7_16execution_policyIT0_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1), %"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1)) #1 comdat { entry: %.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %.addr1 = alloca %"struct.thrust::system::cpp::detail::execution_policy.86"*, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %0, %"struct.thrust::system::cuda::detail::execution_policy.119"** %.addr, align 8, !tbaa !7 store %"struct.thrust::system::cpp::detail::execution_policy.86"* %1, %"struct.thrust::system::cpp::detail::execution_policy.86"** %.addr1, align 8, !tbaa !7 ret i32 2 } ; Function Attrs: uwtable define linkonce_odr %struct.CUstream_st* @_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS2_3tagENS0_3cpp6detail3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EERKNS7_16execution_policyIT0_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1)) #0 comdat { entry: %retval = alloca %struct.CUstream_st*, align 8 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %.addr = alloca %"struct.thrust::system::cpp::detail::execution_policy.86"*, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store %"struct.thrust::system::cpp::detail::execution_policy.86"* %0, %"struct.thrust::system::cpp::detail::execution_policy.86"** %.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %call = call zeroext i1 @_ZN6thrust6system4cuda6detail19trivial_copy_detail12_GLOBAL__N_115is_valid_policyINS2_16execution_policyINS2_3tagEEEEEbRKT_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1) br i1 %call, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 to %"struct.thrust::detail::execution_policy_base.121"* %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERKT_RKNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %3) %4 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call2 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %4) store %struct.CUstream_st* %call2, %struct.CUstream_st** %retval, align 8 br label %return if.end: ; preds = %entry %call3 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail13legacy_streamEv() store %struct.CUstream_st* %call3, %struct.CUstream_st** %retval, align 8 br label %return return: ; preds = %if.end, %if.then %5 = load %struct.CUstream_st*, %struct.CUstream_st** %retval, align 8 ret %struct.CUstream_st* %5 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEENT_9referenceERKSB_(%"class.thrust::pointer.442"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.450", align 8 %f.addr = alloca %"class.thrust::pointer.442"*, align 8 store %"class.thrust::pointer.442"* %f, %"class.thrust::pointer.442"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %f.addr, align 8 %call = call %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_E11dereferenceEv(%"class.thrust::pointer.442"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive4, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.442"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.444"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.444"*, align 8 store %"class.thrust::iterator_facade.444"* %this, %"class.thrust::iterator_facade.444"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.444"*, %"class.thrust::iterator_facade.444"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.444"* %this1 to %"class.thrust::pointer.442"* ret %"class.thrust::pointer.442"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_E11dereferenceEv(%"class.thrust::pointer.442"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.450", align 8 %this.addr = alloca %"class.thrust::pointer.442"*, align 8 store %"class.thrust::pointer.442"* %this, %"class.thrust::pointer.442"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %this.addr, align 8 call void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_(%"class.thrust::reference.450"* %retval, %"class.thrust::pointer.442"* dereferenceable(8) %this1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EC2ERKS9_(%"class.thrust::reference.450"* %this, %"class.thrust::pointer.442"* dereferenceable(8) %ptr) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.450"*, align 8 %ptr.addr = alloca %"class.thrust::pointer.442"*, align 8 store %"class.thrust::reference.450"* %this, %"class.thrust::reference.450"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.442"* %ptr, %"class.thrust::pointer.442"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.450"*, %"class.thrust::reference.450"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.442"* %m_ptr to i8* %2 = bitcast %"class.thrust::pointer.442"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIKNS_4pairIaaEEEEE3getES6_(%"struct.thrust::pair"* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::device_ptr.137", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %ptr.coerce, %"struct.thrust::pair"** %coerce.dive2, align 8 %0 = bitcast %"class.thrust::device_ptr.137"* %ptr to %"class.thrust::pointer.138"* %call = call %"struct.thrust::pair"* @_ZNK6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE3getEv(%"class.thrust::pointer.138"* %0) ret %"struct.thrust::pair"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE3getEv(%"class.thrust::pointer.138"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.138"*, align 8 store %"class.thrust::pointer.138"* %this, %"class.thrust::pointer.138"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.138"*, %"class.thrust::pointer.138"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.138"* %this1 to %"class.thrust::iterator_adaptor.139"* %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE4baseEv(%"class.thrust::iterator_adaptor.139"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 ret %"struct.thrust::pair"* %1 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEEEENT_9referenceERKSA_(%"class.thrust::detail::normal_iterator.427"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.451", align 8 %f.addr = alloca %"class.thrust::detail::normal_iterator.427"*, align 8 store %"class.thrust::detail::normal_iterator.427"* %f, %"class.thrust::detail::normal_iterator.427"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.427"*, %"class.thrust::detail::normal_iterator.427"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.427"* %0 to %"class.thrust::iterator_adaptor.428"* %call = call %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11dereferenceEv(%"class.thrust::iterator_adaptor.428"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.427"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS6_EElE7derivedEv(%"class.thrust::iterator_facade.429"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.429"*, align 8 store %"class.thrust::iterator_facade.429"* %this, %"class.thrust::iterator_facade.429"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.429"*, %"class.thrust::iterator_facade.429"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.429"* %this1 to %"class.thrust::detail::normal_iterator.427"* ret %"class.thrust::detail::normal_iterator.427"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_E11dereferenceEv(%"class.thrust::iterator_adaptor.428"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.451", align 8 %this.addr = alloca %"class.thrust::iterator_adaptor.428"*, align 8 store %"class.thrust::iterator_adaptor.428"* %this, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.428"*, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr.137"* %m_iterator to %"class.thrust::iterator_facade.140"* %call = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEdeEv(%"class.thrust::iterator_facade.140"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive9, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 ret %"struct.thrust::pair"* %1 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEdeEv(%"class.thrust::iterator_facade.140"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.451", align 8 %this.addr = alloca %"class.thrust::iterator_facade.140"*, align 8 store %"class.thrust::iterator_facade.140"* %this, %"class.thrust::iterator_facade.140"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.140"*, %"class.thrust::iterator_facade.140"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.137"* @_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv(%"class.thrust::iterator_facade.140"* %this1) %call2 = call %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIKNS_4pairIaaEEEEEENT_9referenceERKS7_(%"class.thrust::device_ptr.137"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive10, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIKNS_4pairIaaEEEEEENT_9referenceERKS7_(%"class.thrust::device_ptr.137"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.451", align 8 %f.addr = alloca %"class.thrust::device_ptr.137"*, align 8 store %"class.thrust::device_ptr.137"* %f, %"class.thrust::device_ptr.137"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.137"* %0 to %"class.thrust::pointer.138"* %call = call %"struct.thrust::pair"* @_ZNK6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE11dereferenceEv(%"class.thrust::pointer.138"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive8, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.137"* @_ZNK6thrust15iterator_facadeINS_10device_ptrIKNS_4pairIaaEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElE7derivedEv(%"class.thrust::iterator_facade.140"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.140"*, align 8 store %"class.thrust::iterator_facade.140"* %this, %"class.thrust::iterator_facade.140"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.140"*, %"class.thrust::iterator_facade.140"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.140"* %this1 to %"class.thrust::device_ptr.137"* ret %"class.thrust::device_ptr.137"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEE11dereferenceEv(%"class.thrust::pointer.138"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.451", align 8 %this.addr = alloca %"class.thrust::pointer.138"*, align 8 store %"class.thrust::pointer.138"* %this, %"class.thrust::pointer.138"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.138"*, %"class.thrust::pointer.138"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.138"* %this1 to %"class.thrust::device_ptr.137"* call void @_ZN6thrust16device_referenceIKNS_4pairIaaEEEC2ERKNS_10device_ptrIS3_EE(%"class.thrust::device_reference.451"* %retval, %"class.thrust::device_ptr.137"* dereferenceable(8) %0) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.451", %"class.thrust::device_reference.451"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive4, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16device_referenceIKNS_4pairIaaEEEC2ERKNS_10device_ptrIS3_EE(%"class.thrust::device_reference.451"* %this, %"class.thrust::device_ptr.137"* dereferenceable(8) %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_reference.451"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr.137"*, align 8 store %"class.thrust::device_reference.451"* %this, %"class.thrust::device_reference.451"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.137"* %ptr, %"class.thrust::device_ptr.137"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_reference.451"*, %"class.thrust::device_reference.451"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_reference.451"* %this1 to %"class.thrust::reference.452"* %1 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %ptr.addr, align 8 call void @_ZN6thrust9referenceIKNS_4pairIaaEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEC2ERKS5_(%"class.thrust::reference.452"* %0, %"class.thrust::device_ptr.137"* dereferenceable(8) %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust9referenceIKNS_4pairIaaEENS_10device_ptrIS3_EENS_16device_referenceIS3_EEEC2ERKS5_(%"class.thrust::reference.452"* %this, %"class.thrust::device_ptr.137"* dereferenceable(8) %ptr) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.452"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr.137"*, align 8 store %"class.thrust::reference.452"* %this, %"class.thrust::reference.452"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.137"* %ptr, %"class.thrust::device_ptr.137"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.452"*, %"class.thrust::reference.452"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.452", %"class.thrust::reference.452"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.137"* %m_ptr to i8* %2 = bitcast %"class.thrust::device_ptr.137"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl(%"class.thrust::iterator_facade.444"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.444"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.444"* %this, %"class.thrust::iterator_facade.444"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.444"*, %"class.thrust::iterator_facade.444"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.444"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE(%"class.thrust::pointer.442"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.444"* %this1) ret %"class.thrust::pointer.442"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_NSB_15difference_typeE(%"class.thrust::pointer.442"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::pointer.442"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::pointer.442"* %f, %"class.thrust::pointer.442"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %f.addr, align 8 %1 = bitcast %"class.thrust::pointer.442"* %0 to %"class.thrust::iterator_adaptor.443"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl(%"class.thrust::iterator_adaptor.443"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.444"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.444"*, align 8 store %"class.thrust::iterator_facade.444"* %this, %"class.thrust::iterator_facade.444"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.444"*, %"class.thrust::iterator_facade.444"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.444"* %this1 to %"class.thrust::pointer.442"* ret %"class.thrust::pointer.442"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7advanceEl(%"class.thrust::iterator_adaptor.443"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.443"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.443"* %this, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.443"*, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !309 %add.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %1, i64 %0 store %"struct.thrust::pair"* %add.ptr, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !309 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail23allocator_traits_detail6systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEEENS0_9enable_ifIXsr17has_member_systemIT_EE5valueERNS0_16allocator_systemISE_E4typeEE4typeERSE_(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a) #1 comdat { entry: %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.435"* %0 to %"class.thrust::detail::temporary_allocator.436"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.436"* %1) ret %"struct.thrust::system::cpp::detail::tag"* %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.434"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.434"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.439", align 8 %agg.tmp6 = alloca %"class.thrust::pointer.442", align 8 store %"class.thrust::detail::contiguous_storage.434"* %this, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.434"*, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.434"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.439"* %m_begin to %"class.thrust::iterator_adaptor.440"* %call2 = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.440"* %0) %1 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.442"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.434"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 %3 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %m_allocator, %"struct.thrust::pair"* %3, i64 %call3) %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.442"* %agg.tmp6, %"struct.thrust::pair"* null) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive7, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive8, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.439"* %ref.tmp, %"struct.thrust::pair"* %4) %5 = bitcast %"class.thrust::detail::normal_iterator.439"* %m_begin5 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.439"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !305 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.434"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.434"*, align 8 store %"class.thrust::detail::contiguous_storage.434"* %this, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.434"*, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !305 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #8 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.442", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.442"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %0, %"struct.thrust::pair"* %4, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.442", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.442"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm(%"struct.thrust::detail::no_throw_allocator.435"* %0, %"struct.thrust::pair"* %4, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm(%"struct.thrust::detail::no_throw_allocator.435"* %this, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %p = alloca %"class.thrust::pointer.442", align 8 %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %this, %"struct.thrust::detail::no_throw_allocator.435"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator.435"* %this2 to %"class.thrust::detail::temporary_allocator.436"* %1 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.442"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 invoke void @_ZN6thrust6detail19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm(%"class.thrust::detail::temporary_allocator.436"* %0, %"struct.thrust::pair"* %4, i64 %3) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry br label %try.cont lpad: ; preds = %entry %5 = landingpad { i8*, i32 } catch i8* null %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %8 = call i8* @__cxa_begin_catch(i8* %exn) #5 call void @__cxa_end_catch() br label %try.cont try.cont: ; preds = %catch, %invoke.cont ret void } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEEEEbRKNS5_21execution_policy_baseIT_EET0_SN_T1_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %system, %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"* %first2.coerce) #0 comdat { entry: %first1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %last1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %system.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp13 = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp14 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %last1, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %first2, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %system, %"struct.thrust::detail::execution_policy_base.85"** %system.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %system.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call12 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call12 to %"struct.thrust::execution_policy.88"* %2 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::tagged_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp13 to i8* %5 = bitcast %"class.thrust::detail::tagged_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.439"* %agg.tmp14 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.439"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive17, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp13, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive21, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive22, align 8 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp14, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive25, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive26, align 8 %call27 = call zeroext i1 @_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEEEEbRNS_16execution_policyIT_EET0_SO_T1_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10) ret i1 %call27 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEEEEbRNS_16execution_policyIT_EET0_SO_T1_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"* %first2.coerce) #0 comdat { entry: %first1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %last1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %agg.tmp = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp12 = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp13 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %agg.tmp14 = alloca %"struct.thrust::detail::equal_to", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %last1, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %first2, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %2 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::tagged_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp12 to i8* %5 = bitcast %"class.thrust::detail::tagged_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.439"* %agg.tmp13 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.439"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive17, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp12, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive21, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive22, align 8 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp13, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive25, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive26, align 8 %call = call zeroext i1 @_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEEbRKNS5_21execution_policy_baseIT_EET0_SP_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10) ret i1 %call } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust5equalINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEEbRKNS5_21execution_policy_baseIT_EET0_SP_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %system, %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"* %first2.coerce) #0 comdat { entry: %first1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %last1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %binary_pred = alloca %"struct.thrust::detail::equal_to", align 1 %system.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp13 = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp14 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %agg.tmp15 = alloca %"struct.thrust::detail::equal_to", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %last1, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %first2, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %system, %"struct.thrust::detail::execution_policy_base.85"** %system.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %system.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call12 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call12 to %"struct.thrust::execution_policy.88"* %2 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::tagged_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp13 to i8* %5 = bitcast %"class.thrust::detail::tagged_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.439"* %agg.tmp14 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.439"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive18, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp13, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive22, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp14, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive26, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive27, align 8 %call28 = call zeroext i1 @_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEEbRNS_16execution_policyIT_EET0_SQ_T1_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10) ret i1 %call28 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust6system6detail7generic5equalINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEEbRNS_16execution_policyIT_EET0_SQ_T1_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"* %first2.coerce) #0 comdat { entry: %first1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %last1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %binary_pred = alloca %"struct.thrust::detail::equal_to", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %ref.tmp = alloca %"struct.thrust::pair.453", align 8 %agg.tmp = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp12 = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp13 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %agg.tmp14 = alloca %"struct.thrust::detail::equal_to", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %last1, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %first2, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %2 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::tagged_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp12 to i8* %5 = bitcast %"class.thrust::detail::tagged_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.439"* %agg.tmp13 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.439"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive17, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp12, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive21, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive22, align 8 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp13, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive25, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive26, align 8 %call = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust8mismatchINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEENS8_IT0_T1_EERKNS5_21execution_policy_baseIT_EESK_SK_SL_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10) %11 = bitcast %"struct.thrust::pair.453"* %ref.tmp to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %12 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11, i32 0, i32 0 %13 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 0 store %"struct.thrust::pair"* %13, %"struct.thrust::pair"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11, i32 0, i32 1 %15 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 1 store %"struct.thrust::pair"* %15, %"struct.thrust::pair"** %14, align 8 %first = getelementptr inbounds %"struct.thrust::pair.453", %"struct.thrust::pair.453"* %ref.tmp, i32 0, i32 0 %16 = bitcast %"class.thrust::detail::tagged_iterator"* %first to %"class.thrust::iterator_facade.431"* %17 = bitcast %"class.thrust::detail::tagged_iterator"* %last1 to %"class.thrust::iterator_facade.431"* %call27 = call zeroext i1 @_ZN6thrusteqINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lSD_S5_SC_SE_SF_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSG_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.431"* dereferenceable(1) %16, %"class.thrust::iterator_facade.431"* dereferenceable(1) %17) ret i1 %call27 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrusteqINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lSD_S5_SC_SE_SF_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSG_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.431"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.431"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.431"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.431"*, align 8 store %"class.thrust::iterator_facade.431"* %lhs, %"class.thrust::iterator_facade.431"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.431"* %rhs, %"class.thrust::iterator_facade.431"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.431"*, %"class.thrust::iterator_facade.431"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.431"* %0 to %"class.thrust::detail::tagged_iterator"* %2 = load %"class.thrust::iterator_facade.431"*, %"class.thrust::iterator_facade.431"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.431"* %2 to %"class.thrust::detail::tagged_iterator"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEESE_EEbRKT_RKT0_(%"class.thrust::detail::tagged_iterator"* dereferenceable(8) %1, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust8mismatchINS_6system3cpp6detail3tagENS_6detail15tagged_iteratorINS5_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS7_INS_7pointerIS9_S4_NS_11use_defaultESF_EEEENS5_8equal_toIS9_EEEENS8_IT0_T1_EERKNS5_21execution_policy_baseIT_EESK_SK_SL_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"* %first2.coerce) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.453", align 8 %first1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %last1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %pred = alloca %"struct.thrust::detail::equal_to", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp13 = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp14 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %agg.tmp15 = alloca %"struct.thrust::detail::equal_to", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %last1, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %first2, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call12 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call12 to %"struct.thrust::execution_policy.88"* %2 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::tagged_iterator"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp13 to i8* %5 = bitcast %"class.thrust::detail::tagged_iterator"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.439"* %agg.tmp14 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.439"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive18, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp13, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive22, i32 0, i32 0 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp14, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive26, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive27, align 8 %call28 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6system6detail7generic8mismatchINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEENSA_IT0_T1_EERNS_16execution_policyIT_EESM_SM_SN_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"struct.thrust::pair"* %8, %"struct.thrust::pair"* %9, %"struct.thrust::pair"* %10) %11 = bitcast %"struct.thrust::pair.453"* %retval to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %12 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11, i32 0, i32 0 %13 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call28, 0 store %"struct.thrust::pair"* %13, %"struct.thrust::pair"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11, i32 0, i32 1 %15 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call28, 1 store %"struct.thrust::pair"* %15, %"struct.thrust::pair"** %14, align 8 %16 = bitcast %"struct.thrust::pair.453"* %retval to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %17 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %16, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %17 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEESE_EEbRKT_RKT0_(%"class.thrust::detail::tagged_iterator"* dereferenceable(8) %f1, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 %f2.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 store %"class.thrust::detail::tagged_iterator"* %f1, %"class.thrust::detail::tagged_iterator"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::tagged_iterator"* %f2, %"class.thrust::detail::tagged_iterator"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %f1.addr, align 8 %1 = bitcast %"class.thrust::detail::tagged_iterator"* %0 to %"class.thrust::iterator_adaptor.430"* %2 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %f2.addr, align 8 %3 = bitcast %"class.thrust::detail::tagged_iterator"* %2 to %"class.thrust::iterator_adaptor.430"* %call = call zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE5equalISD_S8_S5_SC_SE_SF_lEEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.430"* %1, %"class.thrust::iterator_adaptor.430"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE5equalISD_S8_S5_SC_SE_SF_lEEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.430"* %this, %"class.thrust::iterator_adaptor.430"* dereferenceable(8) %x) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.430"*, align 8 %x.addr = alloca %"class.thrust::iterator_adaptor.430"*, align 8 store %"class.thrust::iterator_adaptor.430"* %this, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.430"* %x, %"class.thrust::iterator_adaptor.430"** %x.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.430"*, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.134"* %m_iterator to %"class.thrust::iterator_facade.136"* %1 = load %"class.thrust::iterator_adaptor.430"*, %"class.thrust::iterator_adaptor.430"** %x.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE4baseEv(%"class.thrust::iterator_adaptor.430"* %1) %2 = bitcast %"class.thrust::detail::normal_iterator.134"* %call to %"class.thrust::iterator_facade.136"* %call2 = call zeroext i1 @_ZN6thrusteqINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSE_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.136"* dereferenceable(1) %0, %"class.thrust::iterator_facade.136"* dereferenceable(1) %2) ret i1 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrusteqINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSE_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.136"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.136"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.136"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.136"*, align 8 store %"class.thrust::iterator_facade.136"* %lhs, %"class.thrust::iterator_facade.136"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.136"* %rhs, %"class.thrust::iterator_facade.136"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.136"*, %"class.thrust::iterator_facade.136"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.136"* %0 to %"class.thrust::detail::normal_iterator.134"* %2 = load %"class.thrust::iterator_facade.136"*, %"class.thrust::iterator_facade.136"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.136"* %2 to %"class.thrust::detail::normal_iterator.134"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES8_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE4baseEv(%"class.thrust::iterator_adaptor.430"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.430"*, align 8 store %"class.thrust::iterator_adaptor.430"* %this, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.430"*, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.134"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES8_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 store %"class.thrust::detail::normal_iterator.134"* %f1, %"class.thrust::detail::normal_iterator.134"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.134"* %f2, %"class.thrust::detail::normal_iterator.134"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %f1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %0 to %"class.thrust::iterator_adaptor.135"* %2 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %f2.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.134"* %2 to %"class.thrust::iterator_adaptor.135"* %call = call zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E5equalIS7_S6_S8_S8_S8_S8_S8_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.135"* %1, %"class.thrust::iterator_adaptor.135"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E5equalIS7_S6_S8_S8_S8_S8_S8_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.135"* %this, %"class.thrust::iterator_adaptor.135"* dereferenceable(8) %x) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.135"*, align 8 %x.addr = alloca %"class.thrust::iterator_adaptor.135"*, align 8 store %"class.thrust::iterator_adaptor.135"* %this, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.135"* %x, %"class.thrust::iterator_adaptor.135"** %x.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.135"*, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !107 %1 = load %"class.thrust::iterator_adaptor.135"*, %"class.thrust::iterator_adaptor.135"** %x.addr, align 8 %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.135"* %1) %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 %cmp = icmp eq %"struct.thrust::pair"* %0, %2 ret i1 %cmp } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6system6detail7generic8mismatchINS0_3cpp6detail3tagENS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES6_EENS9_INS_7pointerISB_S6_NS_11use_defaultESH_EEEENS7_8equal_toISB_EEEENSA_IT0_T1_EERNS_16execution_policyIT_EESM_SM_SN_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"* %first2.coerce) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.453", align 8 %first1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %last1 = alloca %"class.thrust::detail::tagged_iterator", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %pred = alloca %"struct.thrust::detail::equal_to", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %zipped_first = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp = alloca %"class.thrust::tuple.456", align 8 %zipped_last = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp16 = alloca %"class.thrust::tuple.456", align 8 %result = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp22 = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp23 = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp24 = alloca %"struct.thrust::detail::tuple_binary_predicate", align 1 %agg.tmp28 = alloca %"class.thrust::detail::tagged_iterator", align 8 %agg.tmp31 = alloca %"class.thrust::detail::normal_iterator.439", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %first1.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %last1, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %last1.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %first2, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair"* %first2.coerce, %"struct.thrust::pair"** %coerce.dive11, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %0 = bitcast %"class.thrust::zip_iterator.454"* %zipped_first to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %call = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust10make_tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESL_SL_SL_SL_SL_SL_SL_E4typeERKSJ_RKSK_(%"class.thrust::detail::tagged_iterator"* dereferenceable(8) %first1, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %first2) %coerce.dive12 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %agg.tmp, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive12 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 0 %3 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 0 store %"struct.thrust::pair"* %3, %"struct.thrust::pair"** %2, align 8 %4 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 1 %5 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 1 store %"struct.thrust::pair"* %5, %"struct.thrust::pair"** %4, align 8 %6 = bitcast %"class.thrust::tuple.456"* %agg.tmp to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %7 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %6, i32 0, i32 0 %8 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %7, align 8 %9 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %6, i32 0, i32 1 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %9, align 8 %call13 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_(%"struct.thrust::pair"* %8, %"struct.thrust::pair"* %10) %coerce.dive14 = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %zipped_first, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive14, i32 0, i32 0 %11 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive15 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %12 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11, i32 0, i32 0 %13 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call13, 0 store %"struct.thrust::pair"* %13, %"struct.thrust::pair"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11, i32 0, i32 1 %15 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call13, 1 store %"struct.thrust::pair"* %15, %"struct.thrust::pair"** %14, align 8 %16 = bitcast %"class.thrust::zip_iterator.454"* %zipped_last to i8* call void @llvm.lifetime.start(i64 16, i8* %16) #5 %call17 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust10make_tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESL_SL_SL_SL_SL_SL_SL_E4typeERKSJ_RKSK_(%"class.thrust::detail::tagged_iterator"* dereferenceable(8) %last1, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %first2) %coerce.dive18 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %agg.tmp16, i32 0, i32 0 %17 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive18 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %18 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %17, i32 0, i32 0 %19 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call17, 0 store %"struct.thrust::pair"* %19, %"struct.thrust::pair"** %18, align 8 %20 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %17, i32 0, i32 1 %21 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call17, 1 store %"struct.thrust::pair"* %21, %"struct.thrust::pair"** %20, align 8 %22 = bitcast %"class.thrust::tuple.456"* %agg.tmp16 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %23 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %22, i32 0, i32 0 %24 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %23, align 8 %25 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %22, i32 0, i32 1 %26 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %25, align 8 %call19 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_(%"struct.thrust::pair"* %24, %"struct.thrust::pair"* %26) %coerce.dive20 = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %zipped_last, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive20, i32 0, i32 0 %27 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive21 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %28 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %27, i32 0, i32 0 %29 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call19, 0 store %"struct.thrust::pair"* %29, %"struct.thrust::pair"** %28, align 8 %30 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %27, i32 0, i32 1 %31 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call19, 1 store %"struct.thrust::pair"* %31, %"struct.thrust::pair"** %30, align 8 %32 = bitcast %"class.thrust::zip_iterator.454"* %result to i8* call void @llvm.lifetime.start(i64 16, i8* %32) #5 %33 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %34 = bitcast %"struct.thrust::execution_policy.88"* %33 to %"struct.thrust::detail::execution_policy_base.85"* %35 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp22 to i8* %36 = bitcast %"class.thrust::zip_iterator.454"* %zipped_first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %35, i8* %36, i64 16, i32 8, i1 false) %37 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp23 to i8* %38 = bitcast %"class.thrust::zip_iterator.454"* %zipped_last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %37, i8* %38, i64 16, i32 8, i1 false) call void @_ZN6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEC2ERKS5_(%"struct.thrust::detail::tuple_binary_predicate"* %agg.tmp24, %"struct.thrust::detail::equal_to"* dereferenceable(1) %pred) %39 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp22 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %40 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %39, i32 0, i32 0 %41 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %40, align 8 %42 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %39, i32 0, i32 1 %43 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %42, align 8 %44 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp23 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %45 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %44, i32 0, i32 0 %46 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %45, align 8 %47 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %44, i32 0, i32 1 %48 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %47, align 8 %call25 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust11find_if_notINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESR_SR_T1_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %34, %"struct.thrust::pair"* %41, %"struct.thrust::pair"* %43, %"struct.thrust::pair"* %46, %"struct.thrust::pair"* %48) %coerce.dive26 = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %result, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive26, i32 0, i32 0 %49 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive27 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %50 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %49, i32 0, i32 0 %51 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call25, 0 store %"struct.thrust::pair"* %51, %"struct.thrust::pair"** %50, align 8 %52 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %49, i32 0, i32 1 %53 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call25, 1 store %"struct.thrust::pair"* %53, %"struct.thrust::pair"** %52, align 8 %call29 = call dereferenceable(16) %"class.thrust::tuple.456"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.454"* %result) %54 = bitcast %"class.thrust::tuple.456"* %call29 to %"struct.thrust::detail::cons.457"* %call30 = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust3getILi0ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_(%"struct.thrust::detail::cons.457"* dereferenceable(16) %54) %55 = bitcast %"class.thrust::detail::tagged_iterator"* %agg.tmp28 to i8* %56 = bitcast %"class.thrust::detail::tagged_iterator"* %call30 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %55, i8* %56, i64 8, i32 8, i1 false) %call32 = call dereferenceable(16) %"class.thrust::tuple.456"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.454"* %result) %57 = bitcast %"class.thrust::tuple.456"* %call32 to %"struct.thrust::detail::cons.457"* %call33 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust3getILi1ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_(%"struct.thrust::detail::cons.457"* dereferenceable(16) %57) %58 = bitcast %"class.thrust::detail::normal_iterator.439"* %agg.tmp31 to i8* %59 = bitcast %"class.thrust::detail::normal_iterator.439"* %call33 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %58, i8* %59, i64 8, i32 8, i1 false) %coerce.dive34 = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %agg.tmp28, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive35, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive36, i32 0, i32 0 %60 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive37, align 8 %coerce.dive38 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %agg.tmp31, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive40, i32 0, i32 0 %61 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive41, align 8 %call42 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust9make_pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS4_IT_T0_EESI_SJ_(%"struct.thrust::pair"* %60, %"struct.thrust::pair"* %61) %62 = bitcast %"struct.thrust::pair.453"* %retval to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %63 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %62, i32 0, i32 0 %64 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call42, 0 store %"struct.thrust::pair"* %64, %"struct.thrust::pair"** %63, align 8 %65 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %62, i32 0, i32 1 %66 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call42, 1 store %"struct.thrust::pair"* %66, %"struct.thrust::pair"** %65, align 8 %67 = bitcast %"class.thrust::zip_iterator.454"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %67) #5 %68 = bitcast %"class.thrust::zip_iterator.454"* %zipped_last to i8* call void @llvm.lifetime.end(i64 16, i8* %68) #5 %69 = bitcast %"class.thrust::zip_iterator.454"* %zipped_first to i8* call void @llvm.lifetime.end(i64 16, i8* %69) #5 %70 = bitcast %"struct.thrust::pair.453"* %retval to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %71 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %70, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %71 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_(%"struct.thrust::pair"* %t.coerce0, %"struct.thrust::pair"* %t.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.454", align 8 %t = alloca %"class.thrust::tuple.456", align 8 %agg.tmp = alloca %"class.thrust::tuple.456", align 8 %0 = bitcast %"class.thrust::tuple.456"* %t to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %t.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 1 store %"struct.thrust::pair"* %t.coerce1, %"struct.thrust::pair"** %2, align 8 %3 = bitcast %"class.thrust::tuple.456"* %agg.tmp to i8* %4 = bitcast %"class.thrust::tuple.456"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::tuple.456"* %agg.tmp to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %6 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %5, i32 0, i32 0 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %6, align 8 %8 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %5, i32 0, i32 1 %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %8, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_(%"class.thrust::zip_iterator.454"* %retval, %"struct.thrust::pair"* %7, %"struct.thrust::pair"* %9) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive, i32 0, i32 0 %10 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive1 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %10, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %11 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust10make_tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESL_SL_SL_SL_SL_SL_SL_E4typeERKSJ_RKSK_(%"class.thrust::detail::tagged_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %t1) #8 comdat { entry: %retval = alloca %"class.thrust::tuple.456", align 8 %t0.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 store %"class.thrust::detail::tagged_iterator"* %t0, %"class.thrust::detail::tagged_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.439"* %t1, %"class.thrust::detail::normal_iterator.439"** %t1.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %t1.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EC2ERKSD_RKSH_(%"class.thrust::tuple.456"* %retval, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %1) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %retval, i32 0, i32 0 %2 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %3 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %2, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %3 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust11find_if_notINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESR_SR_T1_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"* %first.coerce1, %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"* %last.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.454", align 8 %first = alloca %"class.thrust::zip_iterator.454", align 8 %last = alloca %"class.thrust::zip_iterator.454", align 8 %pred = alloca %"struct.thrust::detail::tuple_binary_predicate", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::tuple_binary_predicate", align 1 %0 = bitcast %"class.thrust::zip_iterator.454"* %first to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 1 store %"struct.thrust::pair"* %first.coerce1, %"struct.thrust::pair"** %2, align 8 %3 = bitcast %"class.thrust::zip_iterator.454"* %last to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %3, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %3, i32 0, i32 1 store %"struct.thrust::pair"* %last.coerce1, %"struct.thrust::pair"** %5, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %6 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %6) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %7 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %8 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp to i8* %9 = bitcast %"class.thrust::zip_iterator.454"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 16, i32 8, i1 false) %10 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp2 to i8* %11 = bitcast %"class.thrust::zip_iterator.454"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 16, i32 8, i1 false) %12 = bitcast %"struct.thrust::detail::tuple_binary_predicate"* %agg.tmp3 to i8* %13 = bitcast %"struct.thrust::detail::tuple_binary_predicate"* %pred to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 1, i32 1, i1 false), !tbaa.struct !41 %14 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %15 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %14, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %15, align 8 %17 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %14, i32 0, i32 1 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %17, align 8 %19 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp2 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %20 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %19, i32 0, i32 0 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %20, align 8 %22 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %19, i32 0, i32 1 %23 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %22, align 8 %call4 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6system6detail7generic11find_if_notINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIaaEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEET0_RNS_16execution_policyIT_EEST_ST_T1_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %7, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %18, %"struct.thrust::pair"* %21, %"struct.thrust::pair"* %23) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive, i32 0, i32 0 %24 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive5 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %25 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %24, i32 0, i32 0 %26 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call4, 0 store %"struct.thrust::pair"* %26, %"struct.thrust::pair"** %25, align 8 %27 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %24, i32 0, i32 1 %28 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call4, 1 store %"struct.thrust::pair"* %28, %"struct.thrust::pair"** %27, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive6, i32 0, i32 0 %29 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive7 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %30 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %29, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %30 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEC2ERKS5_(%"struct.thrust::detail::tuple_binary_predicate"* %this, %"struct.thrust::detail::equal_to"* dereferenceable(1) %p) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::tuple_binary_predicate"*, align 8 %p.addr = alloca %"struct.thrust::detail::equal_to"*, align 8 store %"struct.thrust::detail::tuple_binary_predicate"* %this, %"struct.thrust::detail::tuple_binary_predicate"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::equal_to"* %p, %"struct.thrust::detail::equal_to"** %p.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::tuple_binary_predicate"*, %"struct.thrust::detail::tuple_binary_predicate"** %this.addr, align 8 %pred = getelementptr inbounds %"struct.thrust::detail::tuple_binary_predicate", %"struct.thrust::detail::tuple_binary_predicate"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::equal_to"*, %"struct.thrust::detail::equal_to"** %p.addr, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust9make_pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEEEENS4_IT_T0_EESI_SJ_(%"struct.thrust::pair"* %x.coerce, %"struct.thrust::pair"* %y.coerce) #8 comdat { entry: %retval = alloca %"struct.thrust::pair.453", align 8 %x = alloca %"class.thrust::detail::tagged_iterator", align 8 %y = alloca %"class.thrust::detail::normal_iterator.439", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::tagged_iterator", %"class.thrust::detail::tagged_iterator"* %x, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.134", %"class.thrust::detail::normal_iterator.134"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %x.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %y, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %y.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 call void @_ZN6thrust4pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS0_IaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS4_SB_NS_11use_defaultESE_EEEEEC2ERKSC_RKSG_(%"struct.thrust::pair.453"* %retval, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %x, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %y) %0 = bitcast %"struct.thrust::pair.453"* %retval to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %1 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust3getILi0ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_(%"struct.thrust::detail::cons.457"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.457"*, align 8 store %"struct.thrust::detail::cons.457"* %c, %"struct.thrust::detail::cons.457"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.457"*, %"struct.thrust::detail::cons.457"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEESF_NS0_4consINS5_INS_7pointerIS7_SE_NS_11use_defaultESK_EEEENS_9null_typeEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.457"* dereferenceable(16) %0) ret %"class.thrust::detail::tagged_iterator"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::tuple.456"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.454"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 store %"class.thrust::zip_iterator.454"* %this, %"class.thrust::zip_iterator.454"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.456"* %m_iterator_tuple } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust3getILi1ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_(%"struct.thrust::detail::cons.457"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.457"*, align 8 store %"struct.thrust::detail::cons.457"* %c, %"struct.thrust::detail::cons.457"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.457"*, %"struct.thrust::detail::cons.457"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS0_15tagged_iteratorINS4_IPKS7_EESB_EENS0_4consISE_NS_9null_typeEEEEET_RKNSM_IT0_T1_EE(%"struct.thrust::detail::cons.457"* dereferenceable(16) %0) ret %"class.thrust::detail::normal_iterator.439"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_(%"class.thrust::zip_iterator.454"* %this, %"struct.thrust::pair"* %iterator_tuple.coerce0, %"struct.thrust::pair"* %iterator_tuple.coerce1) unnamed_addr #9 comdat align 2 { entry: %iterator_tuple = alloca %"class.thrust::tuple.456", align 8 %this.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 %0 = bitcast %"class.thrust::tuple.456"* %iterator_tuple to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %iterator_tuple.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 1 store %"struct.thrust::pair"* %iterator_tuple.coerce1, %"struct.thrust::pair"** %2, align 8 store %"class.thrust::zip_iterator.454"* %this, %"class.thrust::zip_iterator.454"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %this.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.454"* %this1 to %"class.thrust::iterator_facade.455"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %this1, i32 0, i32 0 %4 = bitcast %"class.thrust::tuple.456"* %m_iterator_tuple to i8* %5 = bitcast %"class.thrust::tuple.456"* %iterator_tuple to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 16, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EC2ERKSD_RKSH_(%"class.thrust::tuple.456"* %this, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.456"*, align 8 %t0.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.456"* %this, %"class.thrust::tuple.456"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tagged_iterator"* %t0, %"class.thrust::detail::tagged_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.439"* %t1, %"class.thrust::detail::normal_iterator.439"** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.456"*, %"class.thrust::tuple.456"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.456"* %this1 to %"struct.thrust::detail::cons.457"* %1 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %t1.addr, align 8 call void @_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEEC2IKSD_KSH_KSI_SO_SO_SO_SO_SO_SO_SO_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.457"* %0, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEEC2IKSD_KSH_KSI_SO_SO_SO_SO_SO_SO_SO_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.457"* %this, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.457"*, align 8 %t1.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.457"* %this, %"struct.thrust::detail::cons.457"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tagged_iterator"* %t1, %"class.thrust::detail::tagged_iterator"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.439"* %t2, %"class.thrust::detail::normal_iterator.439"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.457"*, %"struct.thrust::detail::cons.457"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.457", %"struct.thrust::detail::cons.457"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::tagged_iterator"* %head to i8* %2 = bitcast %"class.thrust::detail::tagged_iterator"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.457", %"struct.thrust::detail::cons.457"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_(%"struct.thrust::detail::cons.458"* %tail, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_(%"struct.thrust::detail::cons.458"* %this, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.458"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.458"* %this, %"struct.thrust::detail::cons.458"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.439"* %t1, %"class.thrust::detail::normal_iterator.439"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.458"*, %"struct.thrust::detail::cons.458"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.458", %"struct.thrust::detail::cons.458"* %this9, i32 0, i32 0 %9 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %t1.addr, align 8 %10 = bitcast %"class.thrust::detail::normal_iterator.439"* %head to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.439"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6system6detail7generic11find_if_notINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIaaEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEET0_RNS_16execution_policyIT_EEST_ST_T1_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"* %first.coerce1, %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"* %last.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.454", align 8 %first = alloca %"class.thrust::zip_iterator.454", align 8 %last = alloca %"class.thrust::zip_iterator.454", align 8 %pred = alloca %"struct.thrust::detail::tuple_binary_predicate", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp2 = alloca %"struct.thrust::detail::unary_negate", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::unary_negate", align 1 %0 = bitcast %"class.thrust::zip_iterator.454"* %first to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 1 store %"struct.thrust::pair"* %first.coerce1, %"struct.thrust::pair"** %2, align 8 %3 = bitcast %"class.thrust::zip_iterator.454"* %last to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %3, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %3, i32 0, i32 1 store %"struct.thrust::pair"* %last.coerce1, %"struct.thrust::pair"** %5, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %6 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %7 = bitcast %"struct.thrust::execution_policy.88"* %6 to %"struct.thrust::detail::execution_policy_base.85"* %8 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp to i8* %9 = bitcast %"class.thrust::zip_iterator.454"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 16, i32 8, i1 false) %10 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp1 to i8* %11 = bitcast %"class.thrust::zip_iterator.454"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 16, i32 8, i1 false) call void @_ZN6thrust6detail4not1INS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEENS0_12unary_negateIT_EERKS9_(%"struct.thrust::detail::tuple_binary_predicate"* dereferenceable(1) %pred) %12 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %13 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %12, i32 0, i32 0 %14 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %13, align 8 %15 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %12, i32 0, i32 1 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %15, align 8 %17 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp1 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %18 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %17, i32 0, i32 0 %19 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %18, align 8 %20 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %17, i32 0, i32 1 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %20, align 8 %call = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust7find_ifINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_12unary_negateINS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEEEET0_RKNS7_21execution_policy_baseIT_EEST_ST_T1_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %7, %"struct.thrust::pair"* %14, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %19, %"struct.thrust::pair"* %21) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive3 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %23 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %22, i32 0, i32 0 %24 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 0 store %"struct.thrust::pair"* %24, %"struct.thrust::pair"** %23, align 8 %25 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %22, i32 0, i32 1 %26 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 1 store %"struct.thrust::pair"* %26, %"struct.thrust::pair"** %25, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive4, i32 0, i32 0 %27 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive5 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %28 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %27, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %28 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust7find_ifINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS7_15normal_iteratorIPKNS_4pairIaaEEEES4_EENS9_INS_7pointerISB_S4_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS7_12unary_negateINS7_22tuple_binary_predicateINS7_8equal_toISB_EEEEEEEET0_RKNS7_21execution_policy_baseIT_EEST_ST_T1_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"* %first.coerce1, %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"* %last.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.454", align 8 %first = alloca %"class.thrust::zip_iterator.454", align 8 %last = alloca %"class.thrust::zip_iterator.454", align 8 %pred = alloca %"struct.thrust::detail::unary_negate", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.454", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::unary_negate", align 1 %0 = bitcast %"class.thrust::zip_iterator.454"* %first to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 1 store %"struct.thrust::pair"* %first.coerce1, %"struct.thrust::pair"** %2, align 8 %3 = bitcast %"class.thrust::zip_iterator.454"* %last to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %3, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %3, i32 0, i32 1 store %"struct.thrust::pair"* %last.coerce1, %"struct.thrust::pair"** %5, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %6 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %6) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %7 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %8 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp to i8* %9 = bitcast %"class.thrust::zip_iterator.454"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 16, i32 8, i1 false) %10 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp2 to i8* %11 = bitcast %"class.thrust::zip_iterator.454"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 16, i32 8, i1 false) %12 = bitcast %"struct.thrust::detail::unary_negate"* %agg.tmp3 to i8* %13 = bitcast %"struct.thrust::detail::unary_negate"* %pred to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 1, i32 1, i1 false), !tbaa.struct !41 %14 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %15 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %14, i32 0, i32 0 %16 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %15, align 8 %17 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %14, i32 0, i32 1 %18 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %17, align 8 %19 = bitcast %"class.thrust::zip_iterator.454"* %agg.tmp2 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %20 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %19, i32 0, i32 0 %21 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %20, align 8 %22 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %19, i32 0, i32 1 %23 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %22, align 8 %call4 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6system6detail10sequential7find_ifINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIaaEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_12unary_negateINS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEEEET0_RNS2_16execution_policyIT_EESV_SV_T1_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %7, %"struct.thrust::pair"* %16, %"struct.thrust::pair"* %18, %"struct.thrust::pair"* %21, %"struct.thrust::pair"* %23) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive, i32 0, i32 0 %24 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive5 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %25 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %24, i32 0, i32 0 %26 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call4, 0 store %"struct.thrust::pair"* %26, %"struct.thrust::pair"** %25, align 8 %27 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %24, i32 0, i32 1 %28 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call4, 1 store %"struct.thrust::pair"* %28, %"struct.thrust::pair"** %27, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive6, i32 0, i32 0 %29 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive7 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %30 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %29, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %30 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail4not1INS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEENS0_12unary_negateIT_EERKS9_(%"struct.thrust::detail::tuple_binary_predicate"* dereferenceable(1) %pred) #0 comdat { entry: %retval = alloca %"struct.thrust::detail::unary_negate", align 1 %pred.addr = alloca %"struct.thrust::detail::tuple_binary_predicate"*, align 8 store %"struct.thrust::detail::tuple_binary_predicate"* %pred, %"struct.thrust::detail::tuple_binary_predicate"** %pred.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::tuple_binary_predicate"*, %"struct.thrust::detail::tuple_binary_predicate"** %pred.addr, align 8 call void @_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEC2ERKS7_(%"struct.thrust::detail::unary_negate"* %retval, %"struct.thrust::detail::tuple_binary_predicate"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6system6detail10sequential7find_ifINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS9_15normal_iteratorIPKNS_4pairIaaEEEES6_EENSB_INS_7pointerISD_S6_NS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_SM_EEEENS9_12unary_negateINS9_22tuple_binary_predicateINS9_8equal_toISD_EEEEEEEET0_RNS2_16execution_policyIT_EESV_SV_T1_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"* %first.coerce1, %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"* %last.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.454", align 8 %first = alloca %"class.thrust::zip_iterator.454", align 8 %last = alloca %"class.thrust::zip_iterator.454", align 8 %pred = alloca %"struct.thrust::detail::unary_negate", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %wrapped_pred = alloca %"struct.thrust::detail::wrapped_function.459", align 1 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.460", align 8 %cleanup.dest.slot = alloca i32 %1 = bitcast %"class.thrust::zip_iterator.454"* %first to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce0, %"struct.thrust::pair"** %2, align 8 %3 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 1 store %"struct.thrust::pair"* %first.coerce1, %"struct.thrust::pair"** %3, align 8 %4 = bitcast %"class.thrust::zip_iterator.454"* %last to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %5 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce0, %"struct.thrust::pair"** %5, align 8 %6 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4, i32 0, i32 1 store %"struct.thrust::pair"* %last.coerce1, %"struct.thrust::pair"** %6, align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 %7 = bitcast %"struct.thrust::detail::wrapped_function.459"* %wrapped_pred to i8* call void @llvm.lifetime.start(i64 1, i8* %7) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEEbEC2ERKS9_(%"struct.thrust::detail::wrapped_function.459"* %wrapped_pred, %"struct.thrust::detail::unary_negate"* dereferenceable(1) %pred) br label %while.cond while.cond: ; preds = %if.end, %entry %8 = bitcast %"class.thrust::zip_iterator.454"* %first to %"class.thrust::iterator_facade.455"* %9 = bitcast %"class.thrust::zip_iterator.454"* %last to %"class.thrust::iterator_facade.455"* %call = call zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_ST_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSU_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.455"* dereferenceable(1) %8, %"class.thrust::iterator_facade.455"* dereferenceable(1) %9) br i1 %call, label %while.body, label %while.end while.body: ; preds = %while.cond %10 = bitcast %"class.thrust::zip_iterator.454"* %first to %"class.thrust::iterator_facade.455"* %call1 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEdeEv(%"class.thrust::iterator_facade.455"* %10) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.460", %"class.thrust::detail::tuple_of_iterator_references.460"* %ref.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %coerce.dive, i32 0, i32 0 %11 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive2 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %12 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11, i32 0, i32 0 %13 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call1, 0 store %"struct.thrust::pair"* %13, %"struct.thrust::pair"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11, i32 0, i32 1 %15 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call1, 1 store %"struct.thrust::pair"* %15, %"struct.thrust::pair"** %14, align 8 %call3 = call zeroext i1 @_ZNK6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEEbEclINS0_28tuple_of_iterator_referencesIRKS6_NS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESL_EESL_EENS_9null_typeESO_SO_SO_SO_SO_SO_SO_EEEEbRKT_(%"struct.thrust::detail::wrapped_function.459"* %wrapped_pred, %"class.thrust::detail::tuple_of_iterator_references.460"* dereferenceable(16) %ref.tmp) br i1 %call3, label %if.then, label %if.end if.then: ; preds = %while.body %16 = bitcast %"class.thrust::zip_iterator.454"* %retval to i8* %17 = bitcast %"class.thrust::zip_iterator.454"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 16, i32 8, i1 false) store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %while.body %18 = bitcast %"class.thrust::zip_iterator.454"* %first to %"class.thrust::iterator_facade.455"* %call4 = call dereferenceable(16) %"class.thrust::zip_iterator.454"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEppEv(%"class.thrust::iterator_facade.455"* %18) br label %while.cond while.end: ; preds = %while.cond %19 = bitcast %"class.thrust::zip_iterator.454"* %retval to i8* %20 = bitcast %"class.thrust::zip_iterator.454"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %19, i8* %20, i64 16, i32 8, i1 false) store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %while.end, %if.then %21 = bitcast %"struct.thrust::detail::wrapped_function.459"* %wrapped_pred to i8* call void @llvm.lifetime.end(i64 1, i8* %21) #5 %coerce.dive5 = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::tuple.456", %"class.thrust::tuple.456"* %coerce.dive5, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.457"* %coerce.dive6 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %23 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %22, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %23 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEEbEC2ERKS9_(%"struct.thrust::detail::wrapped_function.459"* %this, %"struct.thrust::detail::unary_negate"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.459"*, align 8 %f.addr = alloca %"struct.thrust::detail::unary_negate"*, align 8 store %"struct.thrust::detail::wrapped_function.459"* %this, %"struct.thrust::detail::wrapped_function.459"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::unary_negate"* %f, %"struct.thrust::detail::unary_negate"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.459"*, %"struct.thrust::detail::wrapped_function.459"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.459", %"struct.thrust::detail::wrapped_function.459"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::unary_negate"*, %"struct.thrust::detail::unary_negate"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::unary_negate"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::unary_negate"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElSM_SN_SE_SO_ST_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSU_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.455"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.455"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.455"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.455"*, align 8 store %"class.thrust::iterator_facade.455"* %lhs, %"class.thrust::iterator_facade.455"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.455"* %rhs, %"class.thrust::iterator_facade.455"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.455"*, %"class.thrust::iterator_facade.455"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.455"* %0 to %"class.thrust::zip_iterator.454"* %2 = load %"class.thrust::iterator_facade.455"*, %"class.thrust::iterator_facade.455"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.455"* %2 to %"class.thrust::zip_iterator.454"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEESN_EEbRKT_RKT0_(%"class.thrust::zip_iterator.454"* dereferenceable(16) %1, %"class.thrust::zip_iterator.454"* dereferenceable(16) %3) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6detail16wrapped_functionINS0_12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEEbEclINS0_28tuple_of_iterator_referencesIRKS6_NS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESL_EESL_EENS_9null_typeESO_SO_SO_SO_SO_SO_SO_EEEEbRKT_(%"struct.thrust::detail::wrapped_function.459"* %this, %"class.thrust::detail::tuple_of_iterator_references.460"* dereferenceable(16) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.459"*, align 8 %x.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.460"*, align 8 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.464", align 8 %agg.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.460", align 8 store %"struct.thrust::detail::wrapped_function.459"* %this, %"struct.thrust::detail::wrapped_function.459"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tuple_of_iterator_references.460"* %x, %"class.thrust::detail::tuple_of_iterator_references.460"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.459"*, %"struct.thrust::detail::wrapped_function.459"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.459", %"struct.thrust::detail::wrapped_function.459"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tuple_of_iterator_references.460"*, %"class.thrust::detail::tuple_of_iterator_references.460"** %x.addr, align 8 %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references.460"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::tuple_of_iterator_references.460"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::tuple_of_iterator_references.460"* %agg.tmp to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %3, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %4, align 8 %6 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %3, i32 0, i32 1 %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %6, align 8 %call = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust18raw_reference_castIRKNS_4pairIaaEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS_6detail21enable_if_unwrappableINSF_28tuple_of_iterator_referencesIT_T0_T1_T2_T3_T4_T5_T6_T7_T8_EENSF_13raw_referenceISS_E4typeEE4typeESS_(%"struct.thrust::pair"* %5, %"struct.thrust::pair"* %7) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.464", %"class.thrust::detail::tuple_of_iterator_references.464"* %ref.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::tuple.465", %"class.thrust::tuple.465"* %coerce.dive, i32 0, i32 0 %8 = bitcast %"struct.thrust::detail::cons.466"* %coerce.dive2 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %9 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %8, i32 0, i32 0 %10 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 0 store %"struct.thrust::pair"* %10, %"struct.thrust::pair"** %9, align 8 %11 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %8, i32 0, i32 1 %12 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 1 store %"struct.thrust::pair"* %12, %"struct.thrust::pair"** %11, align 8 %call3 = call zeroext i1 @_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEclINS0_28tuple_of_iterator_referencesIRKS5_RS5_NS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEEbRKT_(%"struct.thrust::detail::unary_negate"* %m_f, %"class.thrust::detail::tuple_of_iterator_references.464"* dereferenceable(16) %ref.tmp) ret i1 %call3 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEdeEv(%"class.thrust::iterator_facade.455"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.460", align 8 %this.addr = alloca %"class.thrust::iterator_facade.455"*, align 8 store %"class.thrust::iterator_facade.455"* %this, %"class.thrust::iterator_facade.455"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.455"*, %"class.thrust::iterator_facade.455"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator.454"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv(%"class.thrust::iterator_facade.455"* %this1) %call2 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEENT_9referenceERKSO_(%"class.thrust::zip_iterator.454"* dereferenceable(16) %call) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.460", %"class.thrust::detail::tuple_of_iterator_references.460"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %coerce.dive, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive3 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 0 %2 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call2, 0 store %"struct.thrust::pair"* %2, %"struct.thrust::pair"** %1, align 8 %3 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 1 %4 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call2, 1 store %"struct.thrust::pair"* %4, %"struct.thrust::pair"** %3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.460", %"class.thrust::detail::tuple_of_iterator_references.460"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %coerce.dive4, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive5 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %6 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %5, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %6 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.454"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElEppEv(%"class.thrust::iterator_facade.455"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.455"*, align 8 store %"class.thrust::iterator_facade.455"* %this, %"class.thrust::iterator_facade.455"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.455"*, %"class.thrust::iterator_facade.455"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator.454"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv(%"class.thrust::iterator_facade.455"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEEvRT_(%"class.thrust::zip_iterator.454"* dereferenceable(16) %call) %call2 = call dereferenceable(16) %"class.thrust::zip_iterator.454"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv(%"class.thrust::iterator_facade.455"* %this1) ret %"class.thrust::zip_iterator.454"* %call2 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEESN_EEbRKT_RKT0_(%"class.thrust::zip_iterator.454"* dereferenceable(16) %f1, %"class.thrust::zip_iterator.454"* dereferenceable(16) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 store %"class.thrust::zip_iterator.454"* %f1, %"class.thrust::zip_iterator.454"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.454"* %f2, %"class.thrust::zip_iterator.454"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %f2.addr, align 8 %call = call zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE5equalISK_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.454"* %0, %"class.thrust::zip_iterator.454"* dereferenceable(16) %1) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE5equalISK_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.454"* %this, %"class.thrust::zip_iterator.454"* dereferenceable(16) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 store %"class.thrust::zip_iterator.454"* %this, %"class.thrust::zip_iterator.454"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.454"* %other, %"class.thrust::zip_iterator.454"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::tuple.456"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.454"* %this1) %0 = bitcast %"class.thrust::tuple.456"* %call to %"struct.thrust::detail::cons.457"* %call2 = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust3getILi0ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_(%"struct.thrust::detail::cons.457"* dereferenceable(16) %0) %1 = bitcast %"class.thrust::detail::tagged_iterator"* %call2 to %"class.thrust::iterator_facade.431"* %2 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %other.addr, align 8 %call3 = call dereferenceable(16) %"class.thrust::tuple.456"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.454"* %2) %3 = bitcast %"class.thrust::tuple.456"* %call3 to %"struct.thrust::detail::cons.457"* %call4 = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust3getILi0ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_(%"struct.thrust::detail::cons.457"* dereferenceable(16) %3) %4 = bitcast %"class.thrust::detail::tagged_iterator"* %call4 to %"class.thrust::iterator_facade.431"* %call5 = call zeroext i1 @_ZN6thrusteqINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lSD_S5_SC_SE_SF_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSG_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.431"* dereferenceable(1) %1, %"class.thrust::iterator_facade.431"* dereferenceable(1) %4) ret i1 %call5 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEclINS0_28tuple_of_iterator_referencesIRKS5_RS5_NS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEEbRKT_(%"struct.thrust::detail::unary_negate"* %this, %"class.thrust::detail::tuple_of_iterator_references.464"* dereferenceable(16) %x) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::unary_negate"*, align 8 %x.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.464"*, align 8 store %"struct.thrust::detail::unary_negate"* %this, %"struct.thrust::detail::unary_negate"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tuple_of_iterator_references.464"* %x, %"class.thrust::detail::tuple_of_iterator_references.464"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::unary_negate"*, %"struct.thrust::detail::unary_negate"** %this.addr, align 8 %pred = getelementptr inbounds %"struct.thrust::detail::unary_negate", %"struct.thrust::detail::unary_negate"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tuple_of_iterator_references.464"*, %"class.thrust::detail::tuple_of_iterator_references.464"** %x.addr, align 8 %call = call zeroext i1 @_ZNK6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEclINS0_28tuple_of_iterator_referencesIRKS4_RS4_NS_9null_typeESC_SC_SC_SC_SC_SC_SC_EEEEbRKT_(%"struct.thrust::detail::tuple_binary_predicate"* %pred, %"class.thrust::detail::tuple_of_iterator_references.464"* dereferenceable(16) %0) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust18raw_reference_castIRKNS_4pairIaaEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EENS_6detail21enable_if_unwrappableINSF_28tuple_of_iterator_referencesIT_T0_T1_T2_T3_T4_T5_T6_T7_T8_EENSF_13raw_referenceISS_E4typeEE4typeESS_(%"struct.thrust::pair"* %t.coerce0, %"struct.thrust::pair"* %t.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.464", align 8 %t = alloca %"class.thrust::detail::tuple_of_iterator_references.460", align 8 %f = alloca %"struct.thrust::detail::raw_reference_caster", align 1 %ref.tmp = alloca %"class.thrust::tuple.465", align 8 %agg.tmp = alloca %"struct.thrust::detail::raw_reference_caster", align 1 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.460"* %t to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 0 store %"struct.thrust::pair"* %t.coerce0, %"struct.thrust::pair"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 1 store %"struct.thrust::pair"* %t.coerce1, %"struct.thrust::pair"** %2, align 8 %3 = bitcast %"struct.thrust::detail::raw_reference_caster"* %f to i8* call void @llvm.lifetime.start(i64 1, i8* %3) #5 %call = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20raw_reference_detail26raw_reference_tuple_helperENS0_28tuple_of_iterator_referencesIRKNS_4pairIaaEENS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_20raw_reference_casterEEENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISM_EE5valueEE4typeERKSM_T1_(%"class.thrust::detail::tuple_of_iterator_references.460"* dereferenceable(16) %t) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.465", %"class.thrust::tuple.465"* %ref.tmp, i32 0, i32 0 %4 = bitcast %"struct.thrust::detail::cons.466"* %coerce.dive to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %5 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4, i32 0, i32 0 %6 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 0 store %"struct.thrust::pair"* %6, %"struct.thrust::pair"** %5, align 8 %7 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4, i32 0, i32 1 %8 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 1 store %"struct.thrust::pair"* %8, %"struct.thrust::pair"** %7, align 8 call void @_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIaaEERS3_NS_9null_typeES7_S7_S7_S7_S7_S7_S7_EC2ERKNS_5tupleIS5_S6_S7_S7_S7_S7_S7_S7_S7_S7_EE(%"class.thrust::detail::tuple_of_iterator_references.464"* %retval, %"class.thrust::tuple.465"* dereferenceable(16) %ref.tmp) %9 = bitcast %"struct.thrust::detail::raw_reference_caster"* %f to i8* call void @llvm.lifetime.end(i64 1, i8* %9) #5 %coerce.dive1 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.464", %"class.thrust::detail::tuple_of_iterator_references.464"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::tuple.465", %"class.thrust::tuple.465"* %coerce.dive1, i32 0, i32 0 %10 = bitcast %"struct.thrust::detail::cons.466"* %coerce.dive2 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %11 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %10, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %11 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6detail22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEclINS0_28tuple_of_iterator_referencesIRKS4_RS4_NS_9null_typeESC_SC_SC_SC_SC_SC_SC_EEEEbRKT_(%"struct.thrust::detail::tuple_binary_predicate"* %this, %"class.thrust::detail::tuple_of_iterator_references.464"* dereferenceable(16) %t) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::tuple_binary_predicate"*, align 8 %t.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.464"*, align 8 store %"struct.thrust::detail::tuple_binary_predicate"* %this, %"struct.thrust::detail::tuple_binary_predicate"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tuple_of_iterator_references.464"* %t, %"class.thrust::detail::tuple_of_iterator_references.464"** %t.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::tuple_binary_predicate"*, %"struct.thrust::detail::tuple_binary_predicate"** %this.addr, align 8 %pred = getelementptr inbounds %"struct.thrust::detail::tuple_binary_predicate", %"struct.thrust::detail::tuple_binary_predicate"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tuple_of_iterator_references.464"*, %"class.thrust::detail::tuple_of_iterator_references.464"** %t.addr, align 8 %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references.464"* %0 to %"struct.thrust::detail::cons.466"* %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust3getILi0ERKNS_4pairIaaEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_(%"struct.thrust::detail::cons.466"* dereferenceable(16) %1) %2 = load %"class.thrust::detail::tuple_of_iterator_references.464"*, %"class.thrust::detail::tuple_of_iterator_references.464"** %t.addr, align 8 %3 = bitcast %"class.thrust::detail::tuple_of_iterator_references.464"* %2 to %"struct.thrust::detail::cons.466"* %call2 = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust3getILi1ERKNS_4pairIaaEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_(%"struct.thrust::detail::cons.466"* dereferenceable(16) %3) %call3 = call zeroext i1 @_ZNK6thrust6detail8equal_toINS_4pairIaaEEEclIS3_EEbRKS3_RKT_(%"struct.thrust::detail::equal_to"* %pred, %"struct.thrust::pair"* dereferenceable(2) %call, %"struct.thrust::pair"* dereferenceable(2) %call2) ret i1 %call3 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZNK6thrust6detail8equal_toINS_4pairIaaEEEclIS3_EEbRKS3_RKT_(%"struct.thrust::detail::equal_to"* %this, %"struct.thrust::pair"* dereferenceable(2) %lhs, %"struct.thrust::pair"* dereferenceable(2) %rhs) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::equal_to"*, align 8 %lhs.addr = alloca %"struct.thrust::pair"*, align 8 %rhs.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::detail::equal_to"* %this, %"struct.thrust::detail::equal_to"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %lhs, %"struct.thrust::pair"** %lhs.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %rhs, %"struct.thrust::pair"** %rhs.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::equal_to"*, %"struct.thrust::detail::equal_to"** %this.addr, align 8 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %lhs.addr, align 8 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %rhs.addr, align 8 %call = call zeroext i1 @_ZN6thrusteqIaaEEbRKNS_4pairIT_T0_EES6_(%"struct.thrust::pair"* dereferenceable(2) %0, %"struct.thrust::pair"* dereferenceable(2) %1) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust3getILi0ERKNS_4pairIaaEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_(%"struct.thrust::detail::cons.466"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.466"*, align 8 store %"struct.thrust::detail::cons.466"* %c, %"struct.thrust::detail::cons.466"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.466"*, %"struct.thrust::detail::cons.466"** %c.addr, align 8 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIaaEES7_NS0_4consIRS5_NS_9null_typeEEEEET_RKNS8_IT0_T1_EE(%"struct.thrust::detail::cons.466"* dereferenceable(16) %0) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust3getILi1ERKNS_4pairIaaEENS_6detail4consIRS2_NS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSE_(%"struct.thrust::detail::cons.466"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.466"*, align 8 store %"struct.thrust::detail::cons.466"* %c, %"struct.thrust::detail::cons.466"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.466"*, %"struct.thrust::detail::cons.466"** %c.addr, align 8 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIaaEERKS5_NS0_4consIS6_NS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.466"* dereferenceable(16) %0) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr zeroext i1 @_ZN6thrusteqIaaEEbRKNS_4pairIT_T0_EES6_(%"struct.thrust::pair"* dereferenceable(2) %x, %"struct.thrust::pair"* dereferenceable(2) %y) #9 comdat { entry: %x.addr = alloca %"struct.thrust::pair"*, align 8 %y.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::pair"* %x, %"struct.thrust::pair"** %x.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %y, %"struct.thrust::pair"** %y.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %x.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %0, i32 0, i32 0 %1 = load i8, i8* %first, align 1, !tbaa !26 %conv = sext i8 %1 to i32 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %y.addr, align 8 %first1 = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %2, i32 0, i32 0 %3 = load i8, i8* %first1, align 1, !tbaa !26 %conv2 = sext i8 %3 to i32 %cmp = icmp eq i32 %conv, %conv2 br i1 %cmp, label %land.rhs, label %land.end land.rhs: ; preds = %entry %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %x.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %4, i32 0, i32 1 %5 = load i8, i8* %second, align 1, !tbaa !29 %conv3 = sext i8 %5 to i32 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %y.addr, align 8 %second4 = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %6, i32 0, i32 1 %7 = load i8, i8* %second4, align 1, !tbaa !29 %conv5 = sext i8 %7 to i32 %cmp6 = icmp eq i32 %conv3, %conv5 br label %land.end land.end: ; preds = %land.rhs, %entry %8 = phi i1 [ false, %entry ], [ %cmp6, %land.rhs ] ret i1 %8 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIaaEES7_NS0_4consIRS5_NS_9null_typeEEEEET_RKNS8_IT0_T1_EE(%"struct.thrust::detail::cons.466"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.466"*, align 8 store %"struct.thrust::detail::cons.466"* %t, %"struct.thrust::detail::cons.466"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.466"*, %"struct.thrust::detail::cons.466"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.466", %"struct.thrust::detail::cons.466"* %0, i32 0, i32 0 %ref = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %head, align 8, !tbaa !7 ret %"struct.thrust::pair"* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIaaEERKS5_NS0_4consIS6_NS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.466"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.466"*, align 8 store %"struct.thrust::detail::cons.466"* %t, %"struct.thrust::detail::cons.466"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.466"*, %"struct.thrust::detail::cons.466"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.466", %"struct.thrust::detail::cons.466"* %0, i32 0, i32 1 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIaaEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.111"* dereferenceable(8) %tail) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIaaEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.111"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.111"*, align 8 store %"struct.thrust::detail::cons.111"* %t, %"struct.thrust::detail::cons.111"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.111"*, %"struct.thrust::detail::cons.111"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.111", %"struct.thrust::detail::cons.111"* %0, i32 0, i32 0 %ref = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %head, align 8, !tbaa !7 ret %"struct.thrust::pair"* %ref } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20raw_reference_detail26raw_reference_tuple_helperENS0_28tuple_of_iterator_referencesIRKNS_4pairIaaEENS_9referenceIS6_NS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeESI_SI_SI_SI_SI_SI_SI_EENS0_20raw_reference_casterEEENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISM_EE5valueEE4typeERKSM_T1_(%"class.thrust::detail::tuple_of_iterator_references.460"* dereferenceable(16) %t) #0 comdat { entry: %retval = alloca %"class.thrust::tuple.465", align 8 %f = alloca %"struct.thrust::detail::raw_reference_caster", align 1 %t.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.460"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::raw_reference_caster", align 1 store %"class.thrust::detail::tuple_of_iterator_references.460"* %t, %"class.thrust::detail::tuple_of_iterator_references.460"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.460"*, %"class.thrust::detail::tuple_of_iterator_references.460"** %t.addr, align 8 %call = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6detail23tuple_transform_functorINS0_28tuple_of_iterator_referencesIRKNS_4pairIaaEENS_9referenceIS4_NS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS0_20raw_reference_detail26raw_reference_tuple_helperENS0_20raw_reference_casterELj2EE27do_it_on_the_host_or_deviceERKSH_SK_(%"class.thrust::detail::tuple_of_iterator_references.460"* dereferenceable(16) %0) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.465", %"class.thrust::tuple.465"* %retval, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.466"* %coerce.dive to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 0 %3 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 0 store %"struct.thrust::pair"* %3, %"struct.thrust::pair"** %2, align 8 %4 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 1 %5 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 1 store %"struct.thrust::pair"* %5, %"struct.thrust::pair"** %4, align 8 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.465", %"class.thrust::tuple.465"* %retval, i32 0, i32 0 %6 = bitcast %"struct.thrust::detail::cons.466"* %coerce.dive1 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %7 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %6, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %7 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIaaEERS3_NS_9null_typeES7_S7_S7_S7_S7_S7_S7_EC2ERKNS_5tupleIS5_S6_S7_S7_S7_S7_S7_S7_S7_S7_EE(%"class.thrust::detail::tuple_of_iterator_references.464"* %this, %"class.thrust::tuple.465"* dereferenceable(16) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.464"*, align 8 %other.addr = alloca %"class.thrust::tuple.465"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.464"* %this, %"class.thrust::detail::tuple_of_iterator_references.464"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.465"* %other, %"class.thrust::tuple.465"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::tuple_of_iterator_references.464"*, %"class.thrust::detail::tuple_of_iterator_references.464"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.464"* %this1 to %"class.thrust::tuple.465"* %1 = load %"class.thrust::tuple.465"*, %"class.thrust::tuple.465"** %other.addr, align 8 %2 = bitcast %"class.thrust::tuple.465"* %0 to i8* %3 = bitcast %"class.thrust::tuple.465"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 16, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6detail23tuple_transform_functorINS0_28tuple_of_iterator_referencesIRKNS_4pairIaaEENS_9referenceIS4_NS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EENS0_20raw_reference_detail26raw_reference_tuple_helperENS0_20raw_reference_casterELj2EE27do_it_on_the_host_or_deviceERKSH_SK_(%"class.thrust::detail::tuple_of_iterator_references.460"* dereferenceable(16) %t) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::tuple.465", align 8 %f = alloca %"struct.thrust::detail::raw_reference_caster", align 1 %t.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.460"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.460"* %t, %"class.thrust::detail::tuple_of_iterator_references.460"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.460"*, %"class.thrust::detail::tuple_of_iterator_references.460"** %t.addr, align 8 %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references.460"* %0 to %"struct.thrust::detail::cons.462"* %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust3getILi0ERKNS_4pairIaaEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.462"* dereferenceable(16) %1) %call1 = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail20raw_reference_casterclINS_4pairIaaEEEENS0_13raw_referenceIKT_E4typeERS7_(%"struct.thrust::detail::raw_reference_caster"* %f, %"struct.thrust::pair"* dereferenceable(2) %call) %2 = load %"class.thrust::detail::tuple_of_iterator_references.460"*, %"class.thrust::detail::tuple_of_iterator_references.460"** %t.addr, align 8 %3 = bitcast %"class.thrust::detail::tuple_of_iterator_references.460"* %2 to %"struct.thrust::detail::cons.462"* %call2 = call dereferenceable(8) %"class.thrust::reference.450"* @_ZN6thrust3getILi1ERKNS_4pairIaaEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.462"* dereferenceable(16) %3) %call3 = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail20raw_reference_casterclINS_9referenceINS_4pairIaaEENS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EEEENS0_13raw_referenceIKT_E4typeERSG_(%"struct.thrust::detail::raw_reference_caster"* %f, %"class.thrust::reference.450"* dereferenceable(8) %call2) call void @_ZN6thrust5tupleIRKNS_4pairIaaEERS2_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EC2ES4_S5_(%"class.thrust::tuple.465"* %retval, %"struct.thrust::pair"* dereferenceable(2) %call1, %"struct.thrust::pair"* dereferenceable(2) %call3) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.465", %"class.thrust::tuple.465"* %retval, i32 0, i32 0 %4 = bitcast %"struct.thrust::detail::cons.466"* %coerce.dive to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %5 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %5 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail20raw_reference_casterclINS_4pairIaaEEEENS0_13raw_referenceIKT_E4typeERS7_(%"struct.thrust::detail::raw_reference_caster"* %this, %"struct.thrust::pair"* dereferenceable(2) %ref) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::raw_reference_caster"*, align 8 %ref.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::detail::raw_reference_caster"* %this, %"struct.thrust::detail::raw_reference_caster"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %ref, %"struct.thrust::pair"** %ref.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::raw_reference_caster"*, %"struct.thrust::detail::raw_reference_caster"** %this.addr, align 8 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %ref.addr, align 8 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust18raw_reference_castINS_4pairIaaEEEENS_6detail13raw_referenceIKT_E4typeERS6_(%"struct.thrust::pair"* dereferenceable(2) %0) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust3getILi0ERKNS_4pairIaaEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.462"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.462"*, align 8 store %"struct.thrust::detail::cons.462"* %c, %"struct.thrust::detail::cons.462"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.462"*, %"struct.thrust::detail::cons.462"** %c.addr, align 8 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIaaEES7_NS0_4consINS_9referenceIS5_NS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeEEEEET_RKNS8_IT0_T1_EE(%"struct.thrust::detail::cons.462"* dereferenceable(16) %0) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail20raw_reference_casterclINS_9referenceINS_4pairIaaEENS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EEEENS0_13raw_referenceIKT_E4typeERSG_(%"struct.thrust::detail::raw_reference_caster"* %this, %"class.thrust::reference.450"* dereferenceable(8) %ref) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::raw_reference_caster"*, align 8 %ref.addr = alloca %"class.thrust::reference.450"*, align 8 store %"struct.thrust::detail::raw_reference_caster"* %this, %"struct.thrust::detail::raw_reference_caster"** %this.addr, align 8, !tbaa !1 store %"class.thrust::reference.450"* %ref, %"class.thrust::reference.450"** %ref.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::raw_reference_caster"*, %"struct.thrust::detail::raw_reference_caster"** %this.addr, align 8 %0 = load %"class.thrust::reference.450"*, %"class.thrust::reference.450"** %ref.addr, align 8 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust18raw_reference_castINS_9referenceINS_4pairIaaEENS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultES9_EES9_EEEENS_6detail13raw_referenceIKT_E4typeERSF_(%"class.thrust::reference.450"* dereferenceable(8) %0) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::reference.450"* @_ZN6thrust3getILi1ERKNS_4pairIaaEENS_6detail4consINS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESD_EESD_EENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.462"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.462"*, align 8 store %"struct.thrust::detail::cons.462"* %c, %"struct.thrust::detail::cons.462"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.462"*, %"struct.thrust::detail::cons.462"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::reference.450"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS_9referenceINS_4pairIaaEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EERKS6_NS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE(%"struct.thrust::detail::cons.462"* dereferenceable(16) %0) ret %"class.thrust::reference.450"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleIRKNS_4pairIaaEERS2_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EC2ES4_S5_(%"class.thrust::tuple.465"* %this, %"struct.thrust::pair"* dereferenceable(2) %t0, %"struct.thrust::pair"* dereferenceable(2) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.465"*, align 8 %t0.addr = alloca %"struct.thrust::pair"*, align 8 %t1.addr = alloca %"struct.thrust::pair"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.465"* %this, %"class.thrust::tuple.465"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %t0, %"struct.thrust::pair"** %t0.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %t1, %"struct.thrust::pair"** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.465"*, %"class.thrust::tuple.465"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.465"* %this1 to %"struct.thrust::detail::cons.466"* %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t0.addr, align 8 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t1.addr, align 8 call void @_ZN6thrust6detail4consIRKNS_4pairIaaEENS1_IRS3_NS_9null_typeEEEEC2IS4_S3_KS7_SB_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.466"* %0, %"struct.thrust::pair"* dereferenceable(2) %1, %"struct.thrust::pair"* dereferenceable(2) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust18raw_reference_castINS_4pairIaaEEEENS_6detail13raw_referenceIKT_E4typeERS6_(%"struct.thrust::pair"* dereferenceable(2) %ref) #8 comdat { entry: %ref.addr = alloca %"struct.thrust::pair"*, align 8 %ref.tmp = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::pair"* %ref, %"struct.thrust::pair"** %ref.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %ref.addr, align 8 store %"struct.thrust::pair"* %0, %"struct.thrust::pair"** %ref.tmp, align 8, !tbaa !1 %call = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castIPKNS_4pairIaaEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"struct.thrust::pair"** dereferenceable(8) %ref.tmp) ret %"struct.thrust::pair"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_4pairIaaEES7_NS0_4consINS_9referenceIS5_NS_7pointerIS5_NS_6system3cpp6detail3tagENS_11use_defaultESF_EESF_EENS_9null_typeEEEEET_RKNS8_IT0_T1_EE(%"struct.thrust::detail::cons.462"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.462"*, align 8 store %"struct.thrust::detail::cons.462"* %t, %"struct.thrust::detail::cons.462"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.462"*, %"struct.thrust::detail::cons.462"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.462", %"struct.thrust::detail::cons.462"* %0, i32 0, i32 0 %ref = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %head, align 8, !tbaa !7 ret %"struct.thrust::pair"* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust18raw_reference_castINS_9referenceINS_4pairIaaEENS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultES9_EES9_EEEENS_6detail13raw_referenceIKT_E4typeERSF_(%"class.thrust::reference.450"* dereferenceable(8) %ref) #8 comdat { entry: %ref.addr = alloca %"class.thrust::reference.450"*, align 8 %ref.tmp = alloca %"class.thrust::pointer.442", align 8 store %"class.thrust::reference.450"* %ref, %"class.thrust::reference.450"** %ref.addr, align 8, !tbaa !7 %0 = load %"class.thrust::reference.450"*, %"class.thrust::reference.450"** %ref.addr, align 8 %call = call %"struct.thrust::pair"* @_ZNK6thrust9referenceINS_4pairIaaEENS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultES8_EES8_EadEv(%"class.thrust::reference.450"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %ref.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive1, align 8 %call2 = call %"struct.thrust::pair"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.442"* dereferenceable(8) %ref.tmp) ret %"struct.thrust::pair"* %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::reference.450"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS_9referenceINS_4pairIaaEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EERKS6_NS0_4consISE_NS_9null_typeEEEEET_RKNSJ_IT0_T1_EE(%"struct.thrust::detail::cons.462"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.462"*, align 8 store %"struct.thrust::detail::cons.462"* %t, %"struct.thrust::detail::cons.462"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.462"*, %"struct.thrust::detail::cons.462"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.462", %"struct.thrust::detail::cons.462"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::reference.450"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_9referenceINS_4pairIaaEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.463"* dereferenceable(8) %tail) ret %"class.thrust::reference.450"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::reference.450"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_9referenceINS_4pairIaaEENS_7pointerIS6_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.463"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.463"*, align 8 store %"struct.thrust::detail::cons.463"* %t, %"struct.thrust::detail::cons.463"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.463"*, %"struct.thrust::detail::cons.463"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.463", %"struct.thrust::detail::cons.463"* %0, i32 0, i32 0 ret %"class.thrust::reference.450"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIRKNS_4pairIaaEENS1_IRS3_NS_9null_typeEEEEC2IS4_S3_KS7_SB_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.466"* %this, %"struct.thrust::pair"* dereferenceable(2) %t1, %"struct.thrust::pair"* dereferenceable(2) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.466"*, align 8 %t1.addr = alloca %"struct.thrust::pair"*, align 8 %t2.addr = alloca %"struct.thrust::pair"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.466"* %this, %"struct.thrust::detail::cons.466"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %t1, %"struct.thrust::pair"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %t2, %"struct.thrust::pair"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.466"*, %"struct.thrust::detail::cons.466"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.466", %"struct.thrust::detail::cons.466"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t1.addr, align 8 store %"struct.thrust::pair"* %0, %"struct.thrust::pair"** %head, align 8, !tbaa !7 %tail = getelementptr inbounds %"struct.thrust::detail::cons.466", %"struct.thrust::detail::cons.466"* %this1, i32 0, i32 1 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRNS_4pairIaaEENS_9null_typeEEC2IS3_EERT_RKS5_SB_SB_SB_SB_SB_SB_SB_SB_(%"struct.thrust::detail::cons.111"* %tail, %"struct.thrust::pair"* dereferenceable(2) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEENT_9referenceERKSO_(%"class.thrust::zip_iterator.454"* dereferenceable(16) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.460", align 8 %f.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 store %"class.thrust::zip_iterator.454"* %f, %"class.thrust::zip_iterator.454"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %f.addr, align 8 %call = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE11dereferenceEv(%"class.thrust::zip_iterator.454"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.460", %"class.thrust::detail::tuple_of_iterator_references.460"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %coerce.dive, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive1 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 0 %3 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 0 store %"struct.thrust::pair"* %3, %"struct.thrust::pair"** %2, align 8 %4 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 1 %5 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 1 store %"struct.thrust::pair"* %5, %"struct.thrust::pair"** %4, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.460", %"class.thrust::detail::tuple_of_iterator_references.460"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %coerce.dive2, i32 0, i32 0 %6 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive3 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %7 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %6, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %7 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.454"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv(%"class.thrust::iterator_facade.455"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.455"*, align 8 store %"class.thrust::iterator_facade.455"* %this, %"class.thrust::iterator_facade.455"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.455"*, %"class.thrust::iterator_facade.455"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.455"* %this1 to %"class.thrust::zip_iterator.454"* ret %"class.thrust::zip_iterator.454"* %0 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE11dereferenceEv(%"class.thrust::zip_iterator.454"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.460", align 8 %this.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 %ref.tmp = alloca %"class.thrust::tuple.461", align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::zip_iterator.454"* %this, %"class.thrust::zip_iterator.454"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::tuple.456"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.454"* %this1) %call2 = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISO_EE5valueEE4typeERKSO_T1_(%"class.thrust::tuple.456"* dereferenceable(16) %call) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %ref.tmp, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 0 %2 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call2, 0 store %"struct.thrust::pair"* %2, %"struct.thrust::pair"** %1, align 8 %3 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %0, i32 0, i32 1 %4 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call2, 1 store %"struct.thrust::pair"* %4, %"struct.thrust::pair"** %3, align 8 call void @_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIaaEENS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKNS_5tupleIS5_SE_SF_SF_SF_SF_SF_SF_SF_SF_EE(%"class.thrust::detail::tuple_of_iterator_references.460"* %retval, %"class.thrust::tuple.461"* dereferenceable(16) %ref.tmp) %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.460", %"class.thrust::detail::tuple_of_iterator_references.460"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %coerce.dive3, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive4 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %6 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %5, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %6 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISO_EE5valueEE4typeERKSO_T1_(%"class.thrust::tuple.456"* dereferenceable(16) %t) #0 comdat { entry: %retval = alloca %"class.thrust::tuple.461", align 8 %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.456"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::tuple.456"* %t, %"class.thrust::tuple.456"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.456"*, %"class.thrust::tuple.456"** %t.addr, align 8 %call = call { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EENS0_20dereference_iterator5applyESL_Lj2EE27do_it_on_the_host_or_deviceERKSK_SL_(%"class.thrust::tuple.456"* dereferenceable(16) %0) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %retval, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %2 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 0 %3 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 0 store %"struct.thrust::pair"* %3, %"struct.thrust::pair"** %2, align 8 %4 = getelementptr inbounds { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %1, i32 0, i32 1 %5 = extractvalue { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %call, 1 store %"struct.thrust::pair"* %5, %"struct.thrust::pair"** %4, align 8 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %retval, i32 0, i32 0 %6 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive1 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %7 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %6, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %7 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail28tuple_of_iterator_referencesIRKNS_4pairIaaEENS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKNS_5tupleIS5_SE_SF_SF_SF_SF_SF_SF_SF_SF_EE(%"class.thrust::detail::tuple_of_iterator_references.460"* %this, %"class.thrust::tuple.461"* dereferenceable(16) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.460"*, align 8 %other.addr = alloca %"class.thrust::tuple.461"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.460"* %this, %"class.thrust::detail::tuple_of_iterator_references.460"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.461"* %other, %"class.thrust::tuple.461"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::tuple_of_iterator_references.460"*, %"class.thrust::detail::tuple_of_iterator_references.460"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.460"* %this1 to %"class.thrust::tuple.461"* %1 = load %"class.thrust::tuple.461"*, %"class.thrust::tuple.461"** %other.addr, align 8 %2 = bitcast %"class.thrust::tuple.461"* %0 to i8* %3 = bitcast %"class.thrust::tuple.461"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 16, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair"*, %"struct.thrust::pair"* } @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EENS0_20dereference_iterator5applyESL_Lj2EE27do_it_on_the_host_or_deviceERKSK_SL_(%"class.thrust::tuple.456"* dereferenceable(16) %t) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::tuple.461", align 8 %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.456"*, align 8 %ref.tmp = alloca %"class.thrust::reference.450", align 8 store %"class.thrust::tuple.456"* %t, %"class.thrust::tuple.456"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.456"*, %"class.thrust::tuple.456"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.456"* %0 to %"struct.thrust::detail::cons.457"* %call = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust3getILi0ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_(%"struct.thrust::detail::cons.457"* dereferenceable(16) %1) %call1 = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail20dereference_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEENS1_5applyIT_E4typeERKSG_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.456"*, %"class.thrust::tuple.456"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.456"* %2 to %"struct.thrust::detail::cons.457"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust3getILi1ENS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_4consINS3_INS_7pointerIS5_SC_NS_11use_defaultESG_EEEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENSE_IT0_T1_EEE4typeEE10const_typeERKSP_(%"struct.thrust::detail::cons.457"* dereferenceable(16) %3) %call3 = call %"struct.thrust::pair"* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENS1_5applyIT_E4typeERKSF_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %call2) %coerce.dive = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %ref.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call3, %"struct.thrust::pair"** %coerce.dive5, align 8 call void @_ZN6thrust5tupleIRKNS_4pairIaaEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EC2ES4_RKSD_(%"class.thrust::tuple.461"* %retval, %"struct.thrust::pair"* dereferenceable(2) %call1, %"class.thrust::reference.450"* dereferenceable(8) %ref.tmp) %coerce.dive6 = getelementptr inbounds %"class.thrust::tuple.461", %"class.thrust::tuple.461"* %retval, i32 0, i32 0 %4 = bitcast %"struct.thrust::detail::cons.462"* %coerce.dive6 to { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %5 = load { %"struct.thrust::pair"*, %"struct.thrust::pair"* }, { %"struct.thrust::pair"*, %"struct.thrust::pair"* }* %4, align 8 ret { %"struct.thrust::pair"*, %"struct.thrust::pair"* } %5 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust6detail20dereference_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEENS1_5applyIT_E4typeERKSG_(%"struct.thrust::detail::dereference_iterator"* %this, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %it) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::dereference_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 store %"struct.thrust::detail::dereference_iterator"* %this, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tagged_iterator"* %it, %"class.thrust::detail::tagged_iterator"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::dereference_iterator"*, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::tagged_iterator"* %0 to %"class.thrust::iterator_facade.431"* %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEdeEv(%"class.thrust::iterator_facade.431"* %1) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENS1_5applyIT_E4typeERKSF_(%"struct.thrust::detail::dereference_iterator"* %this, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %it) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.450", align 8 %this.addr = alloca %"struct.thrust::detail::dereference_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 store %"struct.thrust::detail::dereference_iterator"* %this, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.439"* %it, %"class.thrust::detail::normal_iterator.439"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::dereference_iterator"*, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.439"* %0 to %"class.thrust::iterator_facade.441"* %call = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv(%"class.thrust::iterator_facade.441"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive5, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleIRKNS_4pairIaaEENS_9referenceIS2_NS_7pointerIS2_NS_6system3cpp6detail3tagENS_11use_defaultESB_EESB_EENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EC2ES4_RKSD_(%"class.thrust::tuple.461"* %this, %"struct.thrust::pair"* dereferenceable(2) %t0, %"class.thrust::reference.450"* dereferenceable(8) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.461"*, align 8 %t0.addr = alloca %"struct.thrust::pair"*, align 8 %t1.addr = alloca %"class.thrust::reference.450"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.461"* %this, %"class.thrust::tuple.461"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %t0, %"struct.thrust::pair"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::reference.450"* %t1, %"class.thrust::reference.450"** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.461"*, %"class.thrust::tuple.461"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.461"* %this1 to %"struct.thrust::detail::cons.462"* %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t0.addr, align 8 %2 = load %"class.thrust::reference.450"*, %"class.thrust::reference.450"** %t1.addr, align 8 call void @_ZN6thrust6detail4consIRKNS_4pairIaaEENS1_INS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeEEEEC2IS4_KSE_KSF_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.462"* %0, %"struct.thrust::pair"* dereferenceable(2) %1, %"class.thrust::reference.450"* dereferenceable(8) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEdeEv(%"class.thrust::iterator_facade.431"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.431"*, align 8 store %"class.thrust::iterator_facade.431"* %this, %"class.thrust::iterator_facade.431"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.431"*, %"class.thrust::iterator_facade.431"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv(%"class.thrust::iterator_facade.431"* %this1) %call2 = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEENT_9referenceERKSF_(%"class.thrust::detail::tagged_iterator"* dereferenceable(8) %call) ret %"struct.thrust::pair"* %call2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEENT_9referenceERKSF_(%"class.thrust::detail::tagged_iterator"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 store %"class.thrust::detail::tagged_iterator"* %f, %"class.thrust::detail::tagged_iterator"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::tagged_iterator"* %0 to %"class.thrust::iterator_adaptor.430"* %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE11dereferenceEv(%"class.thrust::iterator_adaptor.430"* %1) ret %"struct.thrust::pair"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZNK6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv(%"class.thrust::iterator_facade.431"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.431"*, align 8 store %"class.thrust::iterator_facade.431"* %this, %"class.thrust::iterator_facade.431"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.431"*, %"class.thrust::iterator_facade.431"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.431"* %this1 to %"class.thrust::detail::tagged_iterator"* ret %"class.thrust::detail::tagged_iterator"* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE11dereferenceEv(%"class.thrust::iterator_adaptor.430"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.430"*, align 8 store %"class.thrust::iterator_adaptor.430"* %this, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.430"*, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.134"* %m_iterator to %"class.thrust::iterator_facade.136"* %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEdeEv(%"class.thrust::iterator_facade.136"* %0) ret %"struct.thrust::pair"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEdeEv(%"class.thrust::iterator_facade.441"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.450", align 8 %this.addr = alloca %"class.thrust::iterator_facade.441"*, align 8 store %"class.thrust::iterator_facade.441"* %this, %"class.thrust::iterator_facade.441"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.441"*, %"class.thrust::iterator_facade.441"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.441"* %this1) %call2 = call %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive6, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEENT_9referenceERKSE_(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.450", align 8 %f.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 store %"class.thrust::detail::normal_iterator.439"* %f, %"class.thrust::detail::normal_iterator.439"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.439"* %0 to %"class.thrust::iterator_adaptor.440"* %call = call %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv(%"class.thrust::iterator_adaptor.440"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive4, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.441"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.441"*, align 8 store %"class.thrust::iterator_facade.441"* %this, %"class.thrust::iterator_facade.441"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.441"*, %"class.thrust::iterator_facade.441"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.441"* %this1 to %"class.thrust::detail::normal_iterator.439"* ret %"class.thrust::detail::normal_iterator.439"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11dereferenceEv(%"class.thrust::iterator_adaptor.440"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.450", align 8 %this.addr = alloca %"class.thrust::iterator_adaptor.440"*, align 8 store %"class.thrust::iterator_adaptor.440"* %this, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.440"*, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.442"* %m_iterator to %"class.thrust::iterator_facade.444"* %call = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv(%"class.thrust::iterator_facade.444"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive5, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive6, align 8 ret %"struct.thrust::pair"* %1 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIRKNS_4pairIaaEENS1_INS_9referenceIS3_NS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultESC_EESC_EENS_9null_typeEEEEC2IS4_KSE_KSF_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.462"* %this, %"struct.thrust::pair"* dereferenceable(2) %t1, %"class.thrust::reference.450"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.462"*, align 8 %t1.addr = alloca %"struct.thrust::pair"*, align 8 %t2.addr = alloca %"class.thrust::reference.450"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.462"* %this, %"struct.thrust::detail::cons.462"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %t1, %"struct.thrust::pair"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::reference.450"* %t2, %"class.thrust::reference.450"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.462"*, %"struct.thrust::detail::cons.462"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.462", %"struct.thrust::detail::cons.462"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %t1.addr, align 8 store %"struct.thrust::pair"* %0, %"struct.thrust::pair"** %head, align 8, !tbaa !7 %tail = getelementptr inbounds %"struct.thrust::detail::cons.462", %"struct.thrust::detail::cons.462"* %this1, i32 0, i32 1 %1 = load %"class.thrust::reference.450"*, %"class.thrust::reference.450"** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_9referenceINS_4pairIaaEENS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESA_EESA_EENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_(%"struct.thrust::detail::cons.463"* %tail, %"class.thrust::reference.450"* dereferenceable(8) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_9referenceINS_4pairIaaEENS_7pointerIS4_NS_6system3cpp6detail3tagENS_11use_defaultESA_EESA_EENS_9null_typeEEC2IKSC_EERT_RKSD_SK_SK_SK_SK_SK_SK_SK_SK_(%"struct.thrust::detail::cons.463"* %this, %"class.thrust::reference.450"* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.463"*, align 8 %t1.addr = alloca %"class.thrust::reference.450"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.463"* %this, %"struct.thrust::detail::cons.463"** %this.addr, align 8, !tbaa !1 store %"class.thrust::reference.450"* %t1, %"class.thrust::reference.450"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.463"*, %"struct.thrust::detail::cons.463"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.463", %"struct.thrust::detail::cons.463"* %this9, i32 0, i32 0 %9 = load %"class.thrust::reference.450"*, %"class.thrust::reference.450"** %t1.addr, align 8 %10 = bitcast %"class.thrust::reference.450"* %head to i8* %11 = bitcast %"class.thrust::reference.450"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS4_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS6_INS_7pointerIS8_SF_NS_11use_defaultESI_EEEENS_9null_typeESL_SL_SL_SL_SL_SL_SL_EEEEEEvRT_(%"class.thrust::zip_iterator.454"* dereferenceable(16) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 store %"class.thrust::zip_iterator.454"* %f, %"class.thrust::zip_iterator.454"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %f.addr, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE9incrementEv(%"class.thrust::zip_iterator.454"* %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.454"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS3_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EEEENS2_IS7_S7_SK_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRS8_NS_9referenceIS7_SI_SH_EESK_SK_SK_SK_SK_SK_SK_SK_EElE7derivedEv(%"class.thrust::iterator_facade.455"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.455"*, align 8 store %"class.thrust::iterator_facade.455"* %this, %"class.thrust::iterator_facade.455"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.455"*, %"class.thrust::iterator_facade.455"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.455"* %this1 to %"class.thrust::zip_iterator.454"* ret %"class.thrust::zip_iterator.454"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS4_INS_7pointerIS6_SD_NS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_EEE9incrementEv(%"class.thrust::zip_iterator.454"* %this) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.454"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::zip_iterator.454"* %this, %"class.thrust::zip_iterator.454"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.454"*, %"class.thrust::zip_iterator.454"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.454", %"class.thrust::zip_iterator.454"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EENS0_18increment_iteratorEEET0_RT_SN_(%"class.thrust::tuple.456"* dereferenceable(16) %m_iterator_tuple) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS5_INS_7pointerIS7_SE_NS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_SK_EENS0_18increment_iteratorEEET0_RT_SN_(%"class.thrust::tuple.456"* dereferenceable(16) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.456"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::tuple.456"* %t, %"class.thrust::tuple.456"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.456"*, %"class.thrust::tuple.456"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.456"* %0 to %"struct.thrust::detail::cons.457"* %call = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.457"* %1) call void @_ZN6thrust6detail18increment_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.456"*, %"class.thrust::tuple.456"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.456"* %2 to %"struct.thrust::detail::cons.457"* %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.458"* @_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.457"* %3) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SI_(%"struct.thrust::detail::cons.458"* dereferenceable(8) %call1) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18increment_iteratorclINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %this, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::increment_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 store %"struct.thrust::detail::increment_iterator"* %this, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tagged_iterator"* %it, %"class.thrust::detail::tagged_iterator"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::increment_iterator"*, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::tagged_iterator"* %0 to %"class.thrust::iterator_facade.431"* %call = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEppEv(%"class.thrust::iterator_facade.431"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.457"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.457"*, align 8 store %"struct.thrust::detail::cons.457"* %this, %"struct.thrust::detail::cons.457"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.457"*, %"struct.thrust::detail::cons.457"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.457", %"struct.thrust::detail::cons.457"* %this1, i32 0, i32 0 ret %"class.thrust::detail::tagged_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SI_(%"struct.thrust::detail::cons.458"* dereferenceable(8) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"struct.thrust::detail::cons.458"*, align 8 %agg.tmp = alloca %"struct.thrust::null_type", align 1 %undef.agg.tmp = alloca %"struct.thrust::null_type", align 1 %agg.tmp1 = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp2 = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"struct.thrust::detail::cons.458"* %t, %"struct.thrust::detail::cons.458"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.458"*, %"struct.thrust::detail::cons.458"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.458"* %0) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.458"*, %"struct.thrust::detail::cons.458"** %t.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.458"* %1) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_18increment_iteratorEEET_NS_9null_typeES4_() ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.458"* @_ZN6thrust6detail4consINS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEENS1_INS3_INS_7pointerIS5_SC_NS_11use_defaultESF_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.457"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.457"*, align 8 store %"struct.thrust::detail::cons.457"* %this, %"struct.thrust::detail::cons.457"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.457"*, %"struct.thrust::detail::cons.457"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.457", %"struct.thrust::detail::cons.457"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.458"* %tail } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lEppEv(%"class.thrust::iterator_facade.431"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.431"*, align 8 store %"class.thrust::iterator_facade.431"* %this, %"class.thrust::iterator_facade.431"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.431"*, %"class.thrust::iterator_facade.431"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv(%"class.thrust::iterator_facade.431"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEEvRT_(%"class.thrust::detail::tagged_iterator"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv(%"class.thrust::iterator_facade.431"* %this1) ret %"class.thrust::detail::tagged_iterator"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_6detail15tagged_iteratorINS2_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEEEEvRT_(%"class.thrust::detail::tagged_iterator"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 store %"class.thrust::detail::tagged_iterator"* %f, %"class.thrust::detail::tagged_iterator"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::tagged_iterator"* %0 to %"class.thrust::iterator_adaptor.430"* call void @_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE9incrementEv(%"class.thrust::iterator_adaptor.430"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust15iterator_facadeINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES5_SC_NS_27random_access_traversal_tagERS6_lE7derivedEv(%"class.thrust::iterator_facade.431"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.431"*, align 8 store %"class.thrust::iterator_facade.431"* %this, %"class.thrust::iterator_facade.431"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.431"*, %"class.thrust::iterator_facade.431"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.431"* %this1 to %"class.thrust::detail::tagged_iterator"* ret %"class.thrust::detail::tagged_iterator"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEES8_S5_SC_NS_27random_access_traversal_tagERS6_lE9incrementEv(%"class.thrust::iterator_adaptor.430"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.430"*, align 8 store %"class.thrust::iterator_adaptor.430"* %this, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.430"*, %"class.thrust::iterator_adaptor.430"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.430", %"class.thrust::iterator_adaptor.430"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.134"* %m_iterator to %"class.thrust::iterator_facade.136"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEppEv(%"class.thrust::iterator_facade.136"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEppEv(%"class.thrust::iterator_facade.136"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.136"*, align 8 store %"class.thrust::iterator_facade.136"* %this, %"class.thrust::iterator_facade.136"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.136"*, %"class.thrust::iterator_facade.136"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.136"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEEvRT_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.134"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.136"* %this1) ret %"class.thrust::detail::normal_iterator.134"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPKNS_4pairIaaEEEEEEvRT_(%"class.thrust::detail::normal_iterator.134"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.134"*, align 8 store %"class.thrust::detail::normal_iterator.134"* %f, %"class.thrust::detail::normal_iterator.134"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.134"*, %"class.thrust::detail::normal_iterator.134"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.134"* %0 to %"class.thrust::iterator_adaptor.135"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E9incrementEv(%"class.thrust::iterator_adaptor.135"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIaaEEEES6_NS_11use_defaultES8_S8_S8_S8_E9incrementEv(%"class.thrust::iterator_adaptor.135"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.135"*, align 8 store %"class.thrust::iterator_adaptor.135"* %this, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.135"*, %"class.thrust::iterator_adaptor.135"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.135", %"class.thrust::iterator_adaptor.135"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !107 %incdec.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %0, i32 1 store %"struct.thrust::pair"* %incdec.ptr, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !107 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %this, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::increment_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 store %"struct.thrust::detail::increment_iterator"* %this, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.439"* %it, %"class.thrust::detail::normal_iterator.439"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::increment_iterator"*, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.439"* %0 to %"class.thrust::iterator_facade.441"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEppEv(%"class.thrust::iterator_facade.441"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.458"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.458"*, align 8 store %"struct.thrust::detail::cons.458"* %this, %"struct.thrust::detail::cons.458"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.458"*, %"struct.thrust::detail::cons.458"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.458", %"struct.thrust::detail::cons.458"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.439"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.458"* %this) #9 comdat align 2 { entry: %retval = alloca %"struct.thrust::null_type", align 1 %this.addr = alloca %"struct.thrust::detail::cons.458"*, align 8 store %"struct.thrust::detail::cons.458"* %this, %"struct.thrust::detail::cons.458"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.458"*, %"struct.thrust::detail::cons.458"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEppEv(%"class.thrust::iterator_facade.441"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.441"*, align 8 store %"class.thrust::iterator_facade.441"* %this, %"class.thrust::iterator_facade.441"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.441"*, %"class.thrust::iterator_facade.441"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.441"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.441"* %this1) ret %"class.thrust::detail::normal_iterator.439"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 store %"class.thrust::detail::normal_iterator.439"* %f, %"class.thrust::detail::normal_iterator.439"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.439"* %0 to %"class.thrust::iterator_adaptor.440"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E9incrementEv(%"class.thrust::iterator_adaptor.440"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.441"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.441"*, align 8 store %"class.thrust::iterator_facade.441"* %this, %"class.thrust::iterator_facade.441"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.441"*, %"class.thrust::iterator_facade.441"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.441"* %this1 to %"class.thrust::detail::normal_iterator.439"* ret %"class.thrust::detail::normal_iterator.439"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E9incrementEv(%"class.thrust::iterator_adaptor.440"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.440"*, align 8 store %"class.thrust::iterator_adaptor.440"* %this, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.440"*, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.442"* %m_iterator to %"class.thrust::iterator_facade.444"* %call = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEppEv(%"class.thrust::iterator_facade.444"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEppEv(%"class.thrust::iterator_facade.444"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.444"*, align 8 store %"class.thrust::iterator_facade.444"* %this, %"class.thrust::iterator_facade.444"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.444"*, %"class.thrust::iterator_facade.444"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.444"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_(%"class.thrust::pointer.442"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE7derivedEv(%"class.thrust::iterator_facade.444"* %this1) ret %"class.thrust::pointer.442"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EEEEvRT_(%"class.thrust::pointer.442"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::pointer.442"*, align 8 store %"class.thrust::pointer.442"* %f, %"class.thrust::pointer.442"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %f.addr, align 8 %1 = bitcast %"class.thrust::pointer.442"* %0 to %"class.thrust::iterator_adaptor.443"* call void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE9incrementEv(%"class.thrust::iterator_adaptor.443"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE9incrementEv(%"class.thrust::iterator_adaptor.443"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.443"*, align 8 store %"class.thrust::iterator_adaptor.443"* %this, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.443"*, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !309 %incdec.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %0, i32 1 store %"struct.thrust::pair"* %incdec.ptr, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !309 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail12unary_negateINS0_22tuple_binary_predicateINS0_8equal_toINS_4pairIaaEEEEEEEC2ERKS7_(%"struct.thrust::detail::unary_negate"* %this, %"struct.thrust::detail::tuple_binary_predicate"* dereferenceable(1) %pred) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::unary_negate"*, align 8 %pred.addr = alloca %"struct.thrust::detail::tuple_binary_predicate"*, align 8 store %"struct.thrust::detail::unary_negate"* %this, %"struct.thrust::detail::unary_negate"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::tuple_binary_predicate"* %pred, %"struct.thrust::detail::tuple_binary_predicate"** %pred.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::unary_negate"*, %"struct.thrust::detail::unary_negate"** %this.addr, align 8 %pred2 = getelementptr inbounds %"struct.thrust::detail::unary_negate", %"struct.thrust::detail::unary_negate"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::tuple_binary_predicate"*, %"struct.thrust::detail::tuple_binary_predicate"** %pred.addr, align 8 %1 = bitcast %"struct.thrust::detail::tuple_binary_predicate"* %pred2 to i8* %2 = bitcast %"struct.thrust::detail::tuple_binary_predicate"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_6detail15tagged_iteratorINS1_15normal_iteratorIPKNS0_IaaEEEENS_6system3cpp6detail3tagEEENS3_INS_7pointerIS4_SB_NS_11use_defaultESE_EEEEEC2ERKSC_RKSG_(%"struct.thrust::pair.453"* %this, %"class.thrust::detail::tagged_iterator"* dereferenceable(8) %x, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.453"*, align 8 %x.addr = alloca %"class.thrust::detail::tagged_iterator"*, align 8 %y.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 store %"struct.thrust::pair.453"* %this, %"struct.thrust::pair.453"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tagged_iterator"* %x, %"class.thrust::detail::tagged_iterator"** %x.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.439"* %y, %"class.thrust::detail::normal_iterator.439"** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.453"*, %"struct.thrust::pair.453"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.453", %"struct.thrust::pair.453"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tagged_iterator"*, %"class.thrust::detail::tagged_iterator"** %x.addr, align 8 %1 = bitcast %"class.thrust::detail::tagged_iterator"* %first to i8* %2 = bitcast %"class.thrust::detail::tagged_iterator"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.453", %"struct.thrust::pair.453"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %y.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.439"* %second to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.439"* %3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::tagged_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15tagged_iteratorINS0_15normal_iteratorIPKNS_4pairIaaEEEENS_6system3cpp6detail3tagEEESF_NS0_4consINS5_INS_7pointerIS7_SE_NS_11use_defaultESK_EEEENS_9null_typeEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.457"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.457"*, align 8 store %"struct.thrust::detail::cons.457"* %t, %"struct.thrust::detail::cons.457"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.457"*, %"struct.thrust::detail::cons.457"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.457", %"struct.thrust::detail::cons.457"* %0, i32 0, i32 0 ret %"class.thrust::detail::tagged_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEENS0_15tagged_iteratorINS4_IPKS7_EESB_EENS0_4consISE_NS_9null_typeEEEEET_RKNSM_IT0_T1_EE(%"struct.thrust::detail::cons.457"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.457"*, align 8 store %"struct.thrust::detail::cons.457"* %t, %"struct.thrust::detail::cons.457"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.457"*, %"struct.thrust::detail::cons.457"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.457", %"struct.thrust::detail::cons.457"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.458"* dereferenceable(8) %tail) ret %"class.thrust::detail::normal_iterator.439"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESC_EEEESE_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.458"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.458"*, align 8 store %"struct.thrust::detail::cons.458"* %t, %"struct.thrust::detail::cons.458"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.458"*, %"struct.thrust::detail::cons.458"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.458", %"struct.thrust::detail::cons.458"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.439"* %head } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_(%"class.thrust::detail::contiguous_storage.434"* %this, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.439", align 8 %last = alloca %"class.thrust::detail::normal_iterator.439", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.434"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %last, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive7, align 8 store %"class.thrust::detail::contiguous_storage.434"* %this, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8, !tbaa !1 %this8 = load %"class.thrust::detail::contiguous_storage.434"*, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this8, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.439"* %first to %"class.thrust::iterator_adaptor.440"* %call = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.440"* %0) %1 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.442"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.439"* %last to %"class.thrust::iterator_facade.441"* %4 = bitcast %"class.thrust::detail::normal_iterator.439"* %first to %"class.thrust::iterator_facade.441"* %call9 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_(%"class.thrust::iterator_facade.441"* dereferenceable(1) %3, %"class.thrust::iterator_facade.441"* dereferenceable(1) %4) %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive10, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 call void @_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %m_allocator, %"struct.thrust::pair"* %5, i64 %call9) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE3endEv(%"class.thrust::detail::contiguous_storage.434"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.439", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.434"*, align 8 store %"class.thrust::detail::contiguous_storage.434"* %this, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.434"*, %"class.thrust::detail::contiguous_storage.434"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.434", %"class.thrust::detail::contiguous_storage.434"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.439"* %m_begin to %"class.thrust::iterator_facade.441"* %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system3cpp6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.434"* %this1) %call2 = call %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.441"* dereferenceable(1) %0, i64 %call) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call2, %"struct.thrust::pair"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive8, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive9, align 8 ret %"struct.thrust::pair"* %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEENS_7pointerIS5_S9_NS_11use_defaultESD_EElEEvRT_T0_T1_(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::pointer.442", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.442"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %0, %"struct.thrust::pair"* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElSC_S5_S9_SD_SF_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSH_IT5_T6_T7_T8_T9_T10_EEE4typeERKSO_RKSV_(%"class.thrust::iterator_facade.441"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.441"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.441"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.441"*, align 8 store %"class.thrust::iterator_facade.441"* %lhs, %"class.thrust::iterator_facade.441"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.441"* %rhs, %"class.thrust::iterator_facade.441"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.441"*, %"class.thrust::iterator_facade.441"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.441"* %0 to %"class.thrust::detail::normal_iterator.439"* %2 = load %"class.thrust::iterator_facade.441"*, %"class.thrust::iterator_facade.441"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.441"* %2 to %"class.thrust::detail::normal_iterator.439"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEENS_7pointerIS6_SA_NS_11use_defaultESE_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSH_SI_T1_(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %a, %"struct.thrust::pair"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::pointer.442", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.435"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %agg.tmp2 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce = alloca %"class.thrust::pointer.442", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %p.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.435"* %a, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.435"*, %"struct.thrust::detail::no_throw_allocator.435"** %a.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail16allocator_systemINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIaaEENS_6system3cpp6detail3tagEEEEEE3getERSB_(%"struct.thrust::detail::no_throw_allocator.435"* dereferenceable(8) %0) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* %2 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.442"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive4, align 8 %call5 = call %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, %"struct.thrust::pair"* %5, i64 %4) %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair"* %call5, %"struct.thrust::pair"** %coerce.dive7, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagENS_7pointerINS_4pairIaaEES4_NS_11use_defaultES8_EElNS_6detail23allocator_traits_detail5gozerEEET0_RKNSA_21execution_policy_baseIT_EESD_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %first = alloca %"class.thrust::pointer.442", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.442", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call2 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = bitcast %"class.thrust::pointer.442"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.442"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive4, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 %call6 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESF_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"struct.thrust::pair"* %5, i64 %4) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive7, i32 0, i32 0 store %"struct.thrust::pair"* %call6, %"struct.thrust::pair"** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive9, i32 0, i32 0 %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive10, align 8 ret %"struct.thrust::pair"* %6 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagENS_7pointerINS_4pairIaaEES6_NS_11use_defaultESA_EElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESF_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"struct.thrust::pair"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.442", align 8 %first = alloca %"class.thrust::pointer.442", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %i = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::reference.450", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEC2ERKS3_(%"struct.thrust::detail::wrapped_function.146"* %wrapped_f, %"struct.thrust::detail::allocator_traits_detail::gozer"* dereferenceable(1) %f) %2 = bitcast i64* %i to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 store i64 0, i64* %i, align 8, !tbaa !13 br label %for.cond for.cond: ; preds = %for.inc, %entry %3 = load i64, i64* %i, align 8, !tbaa !13 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ne i64 %3, %4 br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %5 = bitcast i64* %i to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 br label %for.end for.body: ; preds = %for.cond %6 = bitcast %"class.thrust::pointer.442"* %first to %"class.thrust::iterator_facade.444"* %call = call %"struct.thrust::pair"* @_ZNK6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEdeEv(%"class.thrust::iterator_facade.444"* %6) %coerce.dive2 = getelementptr inbounds %"class.thrust::reference.450", %"class.thrust::reference.450"* %ref.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive4, align 8 call void @_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_9referenceINS_4pairIaaEENS_7pointerIS8_NS_6system3cpp6detail3tagENS_11use_defaultESE_EESE_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.146"* %wrapped_f, %"class.thrust::reference.450"* dereferenceable(8) %ref.tmp) %7 = bitcast %"class.thrust::pointer.442"* %first to %"class.thrust::iterator_facade.444"* %call5 = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEppEv(%"class.thrust::iterator_facade.444"* %7) br label %for.inc for.inc: ; preds = %for.body %8 = load i64, i64* %i, align 8, !tbaa !13 %inc = add nsw i64 %8, 1 store i64 %inc, i64* %i, align 8, !tbaa !13 br label %for.cond for.end: ; preds = %for.cond.cleanup %9 = bitcast %"class.thrust::pointer.442"* %retval to i8* %10 = bitcast %"class.thrust::pointer.442"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %11) #5 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive6, i32 0, i32 0 %12 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive7, align 8 ret %"struct.thrust::pair"* %12 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_9referenceINS_4pairIaaEENS_7pointerIS8_NS_6system3cpp6detail3tagENS_11use_defaultESE_EESE_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.146"* %this, %"class.thrust::reference.450"* dereferenceable(8) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %x.addr = alloca %"class.thrust::reference.450"*, align 8 store %"struct.thrust::detail::wrapped_function.146"* %this, %"struct.thrust::detail::wrapped_function.146"** %this.addr, align 8, !tbaa !1 store %"class.thrust::reference.450"* %x, %"class.thrust::reference.450"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.146", %"struct.thrust::detail::wrapped_function.146"* %this1, i32 0, i32 0 %0 = load %"class.thrust::reference.450"*, %"class.thrust::reference.450"** %x.addr, align 8 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust18raw_reference_castINS_9referenceINS_4pairIaaEENS_7pointerIS3_NS_6system3cpp6detail3tagENS_11use_defaultES9_EES9_EEEENS_6detail13raw_referenceIKT_E4typeERSF_(%"class.thrust::reference.450"* dereferenceable(8) %0) call void @_ZN6thrust6detail23allocator_traits_detail5gozerclINS_4pairIaaEEEEvRT_(%"struct.thrust::detail::allocator_traits_detail::gozer"* %m_f, %"struct.thrust::pair"* dereferenceable(2) %call) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail5gozerclINS_4pairIaaEEEEvRT_(%"struct.thrust::detail::allocator_traits_detail::gozer"* %this, %"struct.thrust::pair"* dereferenceable(2) %x) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::allocator_traits_detail::gozer"*, align 8 %x.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::detail::allocator_traits_detail::gozer"* %this, %"struct.thrust::detail::allocator_traits_detail::gozer"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %x, %"struct.thrust::pair"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::allocator_traits_detail::gozer"*, %"struct.thrust::detail::allocator_traits_detail::gozer"** %this.addr, align 8 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %x.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENS2_20distance_from_resultIT_T0_E4typeERKSF_RKSG_(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.439"* %f1, %"class.thrust::detail::normal_iterator.439"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.439"* %f2, %"class.thrust::detail::normal_iterator.439"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEESD_EENT_15difference_typeERKSE_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 store %"class.thrust::detail::normal_iterator.439"* %f1, %"class.thrust::detail::normal_iterator.439"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.439"* %f2, %"class.thrust::detail::normal_iterator.439"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.439"* %1 to %"class.thrust::iterator_adaptor.440"* %3 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.439"* %3 to %"class.thrust::iterator_adaptor.440"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.440"* %2, %"class.thrust::iterator_adaptor.440"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E11distance_toISC_SB_SA_SA_SA_SA_SA_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.440"* %this, %"class.thrust::iterator_adaptor.440"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.440"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.440"*, align 8 store %"class.thrust::iterator_adaptor.440"* %this, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.440"* %y, %"class.thrust::iterator_adaptor.440"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.440"*, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.440"*, %"class.thrust::iterator_adaptor.440"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.440"* %0) %1 = bitcast %"class.thrust::pointer.442"* %call to %"class.thrust::iterator_facade.444"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %this1, i32 0, i32 0 %2 = bitcast %"class.thrust::pointer.442"* %m_iterator to %"class.thrust::iterator_facade.444"* %call2 = call i64 @_ZN6thrustmiINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.444"* dereferenceable(1) %1, %"class.thrust::iterator_facade.444"* dereferenceable(1) %2) ret i64 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElS9_S3_S7_SA_SC_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.444"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.444"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.444"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.444"*, align 8 store %"class.thrust::iterator_facade.444"* %lhs, %"class.thrust::iterator_facade.444"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.444"* %rhs, %"class.thrust::iterator_facade.444"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.444"*, %"class.thrust::iterator_facade.444"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.444"* %0 to %"class.thrust::pointer.442"* %2 = load %"class.thrust::iterator_facade.444"*, %"class.thrust::iterator_facade.444"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.444"* %2 to %"class.thrust::pointer.442"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_(%"class.thrust::pointer.442"* dereferenceable(8) %1, %"class.thrust::pointer.442"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENS_6detail20distance_from_resultIT_T0_E4typeERKSD_RKSE_(%"class.thrust::pointer.442"* dereferenceable(8) %f1, %"class.thrust::pointer.442"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::pointer.442"*, align 8 %f2.addr = alloca %"class.thrust::pointer.442"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::pointer.442"* %f1, %"class.thrust::pointer.442"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.442"* %f2, %"class.thrust::pointer.442"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %f1.addr, align 8 %1 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::pointer.442"* dereferenceable(8) %0, %"class.thrust::pointer.442"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES9_EESA_EENT_15difference_typeERKSB_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::pointer.442"* dereferenceable(8) %f1, %"class.thrust::pointer.442"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::pointer.442"*, align 8 %f2.addr = alloca %"class.thrust::pointer.442"*, align 8 store %"class.thrust::pointer.442"* %f1, %"class.thrust::pointer.442"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::pointer.442"* %f2, %"class.thrust::pointer.442"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %f1.addr, align 8 %2 = bitcast %"class.thrust::pointer.442"* %1 to %"class.thrust::iterator_adaptor.443"* %3 = load %"class.thrust::pointer.442"*, %"class.thrust::pointer.442"** %f2.addr, align 8 %4 = bitcast %"class.thrust::pointer.442"* %3 to %"class.thrust::iterator_adaptor.443"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.443"* %2, %"class.thrust::iterator_adaptor.443"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE11distance_toIS9_SA_S3_S7_SB_SD_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.443"* %this, %"class.thrust::iterator_adaptor.443"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.443"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.443"*, align 8 store %"class.thrust::iterator_adaptor.443"* %this, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.443"* %y, %"class.thrust::iterator_adaptor.443"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.443"*, %"class.thrust::iterator_adaptor.443"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.443"*, %"class.thrust::iterator_adaptor.443"** %y.addr, align 8 %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv(%"class.thrust::iterator_adaptor.443"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %this1, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !309 %sub.ptr.lhs.cast = ptrtoint %"struct.thrust::pair"* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %"struct.thrust::pair"* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 ret i64 %sub.ptr.div } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.441"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.439", align 8 %i.addr = alloca %"class.thrust::iterator_facade.441"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.439", align 8 store %"class.thrust::iterator_facade.441"* %i, %"class.thrust::iterator_facade.441"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.439"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.441"*, %"class.thrust::iterator_facade.441"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.441"* %1 to %"class.thrust::detail::normal_iterator.439"* %3 = bitcast %"class.thrust::detail::normal_iterator.439"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.439"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.439"* %tmp to %"class.thrust::iterator_facade.441"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl(%"class.thrust::iterator_facade.441"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.439"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.439"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.439"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.439", %"class.thrust::detail::normal_iterator.439"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.442", %"class.thrust::pointer.442"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.443", %"class.thrust::iterator_adaptor.443"* %coerce.dive2, i32 0, i32 0 %10 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 ret %"struct.thrust::pair"* %10 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl(%"class.thrust::iterator_facade.441"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.441"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.441"* %this, %"class.thrust::iterator_facade.441"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.441"*, %"class.thrust::iterator_facade.441"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.441"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.439"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElE7derivedEv(%"class.thrust::iterator_facade.441"* %this1) ret %"class.thrust::detail::normal_iterator.439"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESB_EEEEEEvRT_NSE_15difference_typeE(%"class.thrust::detail::normal_iterator.439"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.439"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.439"* %f, %"class.thrust::detail::normal_iterator.439"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.439"*, %"class.thrust::detail::normal_iterator.439"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.439"* %0 to %"class.thrust::iterator_adaptor.440"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl(%"class.thrust::iterator_adaptor.440"* %1, i64 %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E7advanceEl(%"class.thrust::iterator_adaptor.440"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.440"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.440"* %this, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.440"*, %"class.thrust::iterator_adaptor.440"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.440", %"class.thrust::iterator_adaptor.440"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::pointer.442"* %m_iterator to %"class.thrust::iterator_facade.444"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::pointer.442"* @_ZN6thrust15iterator_facadeINS_7pointerINS_4pairIaaEENS_6system3cpp6detail3tagENS_11use_defaultES8_EES3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEpLEl(%"class.thrust::iterator_facade.444"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZNK6thrust6detail18contiguous_storageINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.63"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.427", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.63"*, align 8 store %"class.thrust::detail::contiguous_storage.63"* %this, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.63"*, %"class.thrust::detail::contiguous_storage.63"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.63", %"class.thrust::detail::contiguous_storage.63"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEC2INS2_IS4_EEEERKNS1_IT_EEPNS0_21enable_if_convertibleISA_S6_vE4typeE(%"class.thrust::detail::normal_iterator.427"* %retval, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %m_begin, i8* null) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.427", %"class.thrust::detail::normal_iterator.427"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.137", %"class.thrust::device_ptr.137"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.138", %"class.thrust::pointer.138"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.139", %"class.thrust::iterator_adaptor.139"* %coerce.dive4, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEC2INS2_IS4_EEEERKNS1_IT_EEPNS0_21enable_if_convertibleISA_S6_vE4typeE(%"class.thrust::detail::normal_iterator.427"* %this, %"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.427"*, align 8 %other.addr = alloca %"class.thrust::detail::normal_iterator.66"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca %"class.thrust::device_ptr.137", align 8 store %"class.thrust::detail::normal_iterator.427"* %this, %"class.thrust::detail::normal_iterator.427"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.66"* %other, %"class.thrust::detail::normal_iterator.66"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.427"*, %"class.thrust::detail::normal_iterator.427"** %this.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.427"* %this1 to %"class.thrust::iterator_adaptor.428"* %2 = load %"class.thrust::detail::normal_iterator.66"*, %"class.thrust::detail::normal_iterator.66"** %other.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.66"* %2 to %"class.thrust::iterator_adaptor.67"* %call = call dereferenceable(8) %"class.thrust::device_ptr.69"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.67"* %3) call void @_ZN6thrust10device_ptrIKNS_4pairIaaEEEC2IS2_EERKNS0_IT_EE(%"class.thrust::device_ptr.137"* %ref.tmp, %"class.thrust::device_ptr.69"* dereferenceable(8) %call) call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_EC2ERKS7_(%"class.thrust::iterator_adaptor.428"* %1, %"class.thrust::device_ptr.137"* dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIKNS_4pairIaaEEEC2IS2_EERKNS0_IT_EE(%"class.thrust::device_ptr.137"* %this, %"class.thrust::device_ptr.69"* dereferenceable(8) %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.137"*, align 8 %other.addr = alloca %"class.thrust::device_ptr.69"*, align 8 store %"class.thrust::device_ptr.137"* %this, %"class.thrust::device_ptr.137"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.69"* %other, %"class.thrust::device_ptr.69"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.137"* %this1 to %"class.thrust::pointer.138"* %1 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %other.addr, align 8 call void @_ZN6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2INSA_IS2_EEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISF_SC_vE4typeE(%"class.thrust::pointer.138"* %0, %"class.thrust::device_ptr.69"* dereferenceable(8) %1, i8* null) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIKNS_4pairIaaEEEEEES7_NS_11use_defaultES9_S9_S9_S9_EC2ERKS7_(%"class.thrust::iterator_adaptor.428"* %this, %"class.thrust::device_ptr.137"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.428"*, align 8 %iter.addr = alloca %"class.thrust::device_ptr.137"*, align 8 store %"class.thrust::iterator_adaptor.428"* %this, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.137"* %iter, %"class.thrust::device_ptr.137"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.428"*, %"class.thrust::iterator_adaptor.428"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.428"* %this1 to %"class.thrust::iterator_facade.429"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.428", %"class.thrust::iterator_adaptor.428"* %this1, i32 0, i32 0 %1 = load %"class.thrust::device_ptr.137"*, %"class.thrust::device_ptr.137"** %iter.addr, align 8 %2 = bitcast %"class.thrust::device_ptr.137"* %m_iterator to i8* %3 = bitcast %"class.thrust::device_ptr.137"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIKNS_4pairIaaEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2INSA_IS2_EEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISF_SC_vE4typeE(%"class.thrust::pointer.138"* %this, %"class.thrust::device_ptr.69"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.138"*, align 8 %other.addr = alloca %"class.thrust::device_ptr.69"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca %"struct.thrust::pair"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.69", align 8 store %"class.thrust::pointer.138"* %this, %"class.thrust::pointer.138"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.69"* %other, %"class.thrust::device_ptr.69"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.138"*, %"class.thrust::pointer.138"** %this.addr, align 8 %1 = bitcast %"class.thrust::pointer.138"* %this1 to %"class.thrust::iterator_adaptor.139"* %2 = load %"class.thrust::device_ptr.69"*, %"class.thrust::device_ptr.69"** %other.addr, align 8 %3 = bitcast %"class.thrust::device_ptr.69"* %agg.tmp to i8* %4 = bitcast %"class.thrust::device_ptr.69"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive2, i32 0, i32 0 %5 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive3, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIaaEEEEE3getES5_(%"struct.thrust::pair"* %5) store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIaaEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEC2ERKS6_(%"class.thrust::iterator_adaptor.139"* %1, %"struct.thrust::pair"** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest17UnitTestExceptionC2Ev(%"class.unittest::UnitTestException"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.unittest::UnitTestException"*, align 8 store %"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %this.addr, align 8 %message = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %this1, i32 0, i32 0 call void @_ZNSsC2Ev(%"class.std::basic_string"* %message) ret void } ; Function Attrs: uwtable define available_externally void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::basic_ostringstream"* %this, i32 %__mode) unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_ostringstream"*, align 8 %__mode.addr = alloca i32, align 4 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::basic_ostringstream"* %this, %"class.std::basic_ostringstream"** %this.addr, align 8, !tbaa !1 store i32 %__mode, i32* %__mode.addr, align 4, !tbaa !318 %this1 = load %"class.std::basic_ostringstream"*, %"class.std::basic_ostringstream"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ostringstream"* %this1 to i8* %1 = getelementptr inbounds i8, i8* %0, i64 88 %2 = bitcast i8* %1 to %"class.std::basic_ios"* call void @_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev(%"class.std::basic_ios"* %2) %3 = bitcast %"class.std::basic_ostringstream"* %this1 to %"class.std::basic_ostream"* invoke void @_ZNSoC2Ev(%"class.std::basic_ostream"* %3, i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE, i64 0, i64 1)) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %4 = bitcast %"class.std::basic_ostringstream"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([10 x i8*], [10 x i8*]* @_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE, i32 0, i32 3) to i32 (...)**), i32 (...)*** %4, align 8, !tbaa !5 %5 = bitcast %"class.std::basic_ostringstream"* %this1 to i8* %add.ptr = getelementptr inbounds i8, i8* %5, i64 88 %6 = bitcast i8* %add.ptr to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([10 x i8*], [10 x i8*]* @_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE, i32 0, i32 8) to i32 (...)**), i32 (...)*** %6, align 8, !tbaa !5 %_M_stringbuf = getelementptr inbounds %"class.std::basic_ostringstream", %"class.std::basic_ostringstream"* %this1, i32 0, i32 1 %7 = load i32, i32* %__mode.addr, align 4, !tbaa !318 %call = invoke i32 @_ZStorSt13_Ios_OpenmodeS_(i32 %7, i32 16) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont invoke void @_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode(%"class.std::basic_stringbuf"* %_M_stringbuf, i32 %call) to label %invoke.cont4 unwind label %lpad2 invoke.cont4: ; preds = %invoke.cont3 %8 = bitcast %"class.std::basic_ostringstream"* %this1 to i8** %vtable = load i8*, i8** %8, align 8, !tbaa !5 %vbase.offset.ptr = getelementptr i8, i8* %vtable, i64 -24 %9 = bitcast i8* %vbase.offset.ptr to i64* %vbase.offset = load i64, i64* %9, align 8 %10 = bitcast %"class.std::basic_ostringstream"* %this1 to i8* %add.ptr5 = getelementptr inbounds i8, i8* %10, i64 %vbase.offset %11 = bitcast i8* %add.ptr5 to %"class.std::basic_ios"* %_M_stringbuf6 = getelementptr inbounds %"class.std::basic_ostringstream", %"class.std::basic_ostringstream"* %this1, i32 0, i32 1 %12 = bitcast %"class.std::basic_stringbuf"* %_M_stringbuf6 to %"class.std::basic_streambuf"* invoke void @_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E(%"class.std::basic_ios"* %11, %"class.std::basic_streambuf"* %12) to label %invoke.cont8 unwind label %lpad7 invoke.cont8: ; preds = %invoke.cont4 ret void lpad: ; preds = %entry %13 = landingpad { i8*, i32 } cleanup %14 = extractvalue { i8*, i32 } %13, 0 store i8* %14, i8** %exn.slot, align 8 %15 = extractvalue { i8*, i32 } %13, 1 store i32 %15, i32* %ehselector.slot, align 4 br label %ehcleanup9 lpad2: ; preds = %invoke.cont3, %invoke.cont %16 = landingpad { i8*, i32 } cleanup %17 = extractvalue { i8*, i32 } %16, 0 store i8* %17, i8** %exn.slot, align 8 %18 = extractvalue { i8*, i32 } %16, 1 store i32 %18, i32* %ehselector.slot, align 4 br label %ehcleanup lpad7: ; preds = %invoke.cont4 %19 = landingpad { i8*, i32 } cleanup %20 = extractvalue { i8*, i32 } %19, 0 store i8* %20, i8** %exn.slot, align 8 %21 = extractvalue { i8*, i32 } %19, 1 store i32 %21, i32* %ehselector.slot, align 4 call void @_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED2Ev(%"class.std::basic_stringbuf"* %_M_stringbuf) #5 br label %ehcleanup ehcleanup: ; preds = %lpad7, %lpad2 %22 = bitcast %"class.std::basic_ostringstream"* %this1 to %"class.std::basic_ostream"* call void @_ZNSoD2Ev(%"class.std::basic_ostream"* %22, i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE, i64 0, i64 1)) #5 br label %ehcleanup9 ehcleanup9: ; preds = %ehcleanup, %lpad %23 = bitcast %"class.std::basic_ostringstream"* %this1 to i8* %24 = getelementptr inbounds i8, i8* %23, i64 88 %25 = bitcast i8* %24 to %"class.std::basic_ios"* call void @_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev(%"class.std::basic_ios"* %25) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup9 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val10 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val10 } ; Function Attrs: inlinehint uwtable define available_externally dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* dereferenceable(272) %__out, i8* %__s) #8 { entry: %__out.addr = alloca %"class.std::basic_ostream"*, align 8 %__s.addr = alloca i8*, align 8 store %"class.std::basic_ostream"* %__out, %"class.std::basic_ostream"** %__out.addr, align 8, !tbaa !7 store i8* %__s, i8** %__s.addr, align 8, !tbaa !1 %0 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %tobool = icmp ne i8* %0, null br i1 %tobool, label %if.else, label %if.then if.then: ; preds = %entry %1 = load %"class.std::basic_ostream"*, %"class.std::basic_ostream"** %__out.addr, align 8 %2 = bitcast %"class.std::basic_ostream"* %1 to i8** %vtable = load i8*, i8** %2, align 8, !tbaa !5 %vbase.offset.ptr = getelementptr i8, i8* %vtable, i64 -24 %3 = bitcast i8* %vbase.offset.ptr to i64* %vbase.offset = load i64, i64* %3, align 8 %4 = bitcast %"class.std::basic_ostream"* %1 to i8* %add.ptr = getelementptr inbounds i8, i8* %4, i64 %vbase.offset %5 = bitcast i8* %add.ptr to %"class.std::basic_ios"* call void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate(%"class.std::basic_ios"* %5, i32 1) br label %if.end if.else: ; preds = %entry %6 = load %"class.std::basic_ostream"*, %"class.std::basic_ostream"** %__out.addr, align 8 %7 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %8 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %call = call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %8) %call1 = call dereferenceable(272) %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* dereferenceable(272) %6, i8* %7, i64 %call) br label %if.end if.end: ; preds = %if.else, %if.then %9 = load %"class.std::basic_ostream"*, %"class.std::basic_ostream"** %__out.addr, align 8 ret %"class.std::basic_ostream"* %9 } ; Function Attrs: uwtable define available_externally void @_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::basic_string"* noalias sret %agg.result, %"class.std::basic_ostringstream"* %this) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_ostringstream"*, align 8 store %"class.std::basic_ostringstream"* %this, %"class.std::basic_ostringstream"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_ostringstream"*, %"class.std::basic_ostringstream"** %this.addr, align 8 %_M_stringbuf = getelementptr inbounds %"class.std::basic_ostringstream", %"class.std::basic_ostringstream"* %this1, i32 0, i32 1 call void @_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv(%"class.std::basic_string"* sret %agg.result, %"class.std::basic_stringbuf"* %_M_stringbuf) ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %this) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::basic_ostringstream"*, align 8 store %"class.std::basic_ostringstream"* %this, %"class.std::basic_ostringstream"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_ostringstream"*, %"class.std::basic_ostringstream"** %this.addr, align 8 call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev(%"class.std::basic_ostringstream"* %this1, i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE, i64 0, i64 0)) #5 %0 = bitcast %"class.std::basic_ostringstream"* %this1 to i8* %1 = getelementptr inbounds i8, i8* %0, i64 88 %2 = bitcast i8* %1 to %"class.std::basic_ios"* call void @_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev(%"class.std::basic_ios"* %2) #5 ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev(%"class.std::basic_ios"* %this) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::basic_ios"*, align 8 store %"class.std::basic_ios"* %this, %"class.std::basic_ios"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_ios"*, %"class.std::basic_ios"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ios"* %this1 to %"class.std::ios_base"* call void @_ZNSt8ios_baseC2Ev(%"class.std::ios_base"* %0) #5 %1 = bitcast %"class.std::basic_ios"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @_ZTVSt9basic_iosIcSt11char_traitsIcEE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !5 %_M_tie = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %this1, i32 0, i32 1 store %"class.std::basic_ostream"* null, %"class.std::basic_ostream"** %_M_tie, align 8, !tbaa !320 %_M_fill = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %this1, i32 0, i32 2 store i8 0, i8* %_M_fill, align 8, !tbaa !322 %_M_fill_init = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %this1, i32 0, i32 3 store i8 0, i8* %_M_fill_init, align 1, !tbaa !323 %_M_streambuf = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %this1, i32 0, i32 4 store %"class.std::basic_streambuf"* null, %"class.std::basic_streambuf"** %_M_streambuf, align 8, !tbaa !324 %_M_ctype = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %this1, i32 0, i32 5 store %"class.std::ctype"* null, %"class.std::ctype"** %_M_ctype, align 8, !tbaa !325 %_M_num_put = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %this1, i32 0, i32 6 store %"class.std::num_put"* null, %"class.std::num_put"** %_M_num_put, align 8, !tbaa !326 %_M_num_get = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %this1, i32 0, i32 7 store %"class.std::num_get"* null, %"class.std::num_get"** %_M_num_get, align 8, !tbaa !327 ret void } ; Function Attrs: uwtable define available_externally void @_ZNSoC2Ev(%"class.std::basic_ostream"* %this, i8** %vtt) unnamed_addr #0 align 2 { entry: %this.addr = alloca %"class.std::basic_ostream"*, align 8 %vtt.addr = alloca i8**, align 8 store %"class.std::basic_ostream"* %this, %"class.std::basic_ostream"** %this.addr, align 8, !tbaa !1 store i8** %vtt, i8*** %vtt.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_ostream"*, %"class.std::basic_ostream"** %this.addr, align 8 %vtt2 = load i8**, i8*** %vtt.addr, align 8 %0 = load i8*, i8** %vtt2, align 8 %1 = bitcast %"class.std::basic_ostream"* %this1 to i32 (...)*** %2 = bitcast i8* %0 to i32 (...)** store i32 (...)** %2, i32 (...)*** %1, align 8, !tbaa !5 %3 = getelementptr inbounds i8*, i8** %vtt2, i64 1 %4 = load i8*, i8** %3, align 8 %5 = bitcast %"class.std::basic_ostream"* %this1 to i8** %vtable = load i8*, i8** %5, align 8, !tbaa !5 %vbase.offset.ptr = getelementptr i8, i8* %vtable, i64 -24 %6 = bitcast i8* %vbase.offset.ptr to i64* %vbase.offset = load i64, i64* %6, align 8 %7 = bitcast %"class.std::basic_ostream"* %this1 to i8* %add.ptr = getelementptr inbounds i8, i8* %7, i64 %vbase.offset %8 = bitcast i8* %add.ptr to i32 (...)*** %9 = bitcast i8* %4 to i32 (...)** store i32 (...)** %9, i32 (...)*** %8, align 8, !tbaa !5 %10 = bitcast %"class.std::basic_ostream"* %this1 to i8** %vtable3 = load i8*, i8** %10, align 8, !tbaa !5 %vbase.offset.ptr4 = getelementptr i8, i8* %vtable3, i64 -24 %11 = bitcast i8* %vbase.offset.ptr4 to i64* %vbase.offset5 = load i64, i64* %11, align 8 %12 = bitcast %"class.std::basic_ostream"* %this1 to i8* %add.ptr6 = getelementptr inbounds i8, i8* %12, i64 %vbase.offset5 %13 = bitcast i8* %add.ptr6 to %"class.std::basic_ios"* call void @_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E(%"class.std::basic_ios"* %13, %"class.std::basic_streambuf"* null) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_ZStorSt13_Ios_OpenmodeS_(i32 %__a, i32 %__b) #9 comdat { entry: %__a.addr = alloca i32, align 4 %__b.addr = alloca i32, align 4 store i32 %__a, i32* %__a.addr, align 4, !tbaa !318 store i32 %__b, i32* %__b.addr, align 4, !tbaa !318 %0 = load i32, i32* %__a.addr, align 4, !tbaa !318 %1 = load i32, i32* %__b.addr, align 4, !tbaa !318 %or = or i32 %0, %1 ret i32 %or } ; Function Attrs: uwtable define available_externally void @_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode(%"class.std::basic_stringbuf"* %this, i32 %__mode) unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_stringbuf"*, align 8 %__mode.addr = alloca i32, align 4 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::basic_stringbuf"* %this, %"class.std::basic_stringbuf"** %this.addr, align 8, !tbaa !1 store i32 %__mode, i32* %__mode.addr, align 4, !tbaa !318 %this1 = load %"class.std::basic_stringbuf"*, %"class.std::basic_stringbuf"** %this.addr, align 8 %0 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* call void @_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev(%"class.std::basic_streambuf"* %0) %1 = bitcast %"class.std::basic_stringbuf"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([16 x i8*], [16 x i8*]* @_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !5 %_M_mode = getelementptr inbounds %"class.std::basic_stringbuf", %"class.std::basic_stringbuf"* %this1, i32 0, i32 1 %2 = load i32, i32* %__mode.addr, align 4, !tbaa !318 store i32 %2, i32* %_M_mode, align 8, !tbaa !328 %_M_string = getelementptr inbounds %"class.std::basic_stringbuf", %"class.std::basic_stringbuf"* %this1, i32 0, i32 2 invoke void @_ZNSsC2Ev(%"class.std::basic_string"* %_M_string) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 %6 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* call void @_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev(%"class.std::basic_streambuf"* %6) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } declare void @_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E(%"class.std::basic_ios"*, %"class.std::basic_streambuf"*) #3 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED2Ev(%"class.std::basic_stringbuf"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.std::basic_stringbuf"*, align 8 store %"class.std::basic_stringbuf"* %this, %"class.std::basic_stringbuf"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_stringbuf"*, %"class.std::basic_stringbuf"** %this.addr, align 8 %0 = bitcast %"class.std::basic_stringbuf"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([16 x i8*], [16 x i8*]* @_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8, !tbaa !5 %_M_string = getelementptr inbounds %"class.std::basic_stringbuf", %"class.std::basic_stringbuf"* %this1, i32 0, i32 2 call void @_ZNSsD2Ev(%"class.std::basic_string"* %_M_string) #5 %1 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* call void @_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev(%"class.std::basic_streambuf"* %1) #5 ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSoD2Ev(%"class.std::basic_ostream"* %this, i8** %vtt) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::basic_ostream"*, align 8 %vtt.addr = alloca i8**, align 8 store %"class.std::basic_ostream"* %this, %"class.std::basic_ostream"** %this.addr, align 8, !tbaa !1 store i8** %vtt, i8*** %vtt.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_ostream"*, %"class.std::basic_ostream"** %this.addr, align 8 %vtt2 = load i8**, i8*** %vtt.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev(%"class.std::basic_ios"* %this) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::basic_ios"*, align 8 store %"class.std::basic_ios"* %this, %"class.std::basic_ios"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_ios"*, %"class.std::basic_ios"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ios"* %this1 to %"class.std::ios_base"* call void @_ZNSt8ios_baseD2Ev(%"class.std::ios_base"* %0) #5 ret void } ; Function Attrs: nounwind declare void @_ZNSt8ios_baseC2Ev(%"class.std::ios_base"*) unnamed_addr #4 ; Function Attrs: nounwind uwtable define available_externally void @_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev(%"class.std::basic_streambuf"* %this) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::basic_streambuf"*, align 8 store %"class.std::basic_streambuf"* %this, %"class.std::basic_streambuf"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_streambuf"*, %"class.std::basic_streambuf"** %this.addr, align 8 %0 = bitcast %"class.std::basic_streambuf"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([16 x i8*], [16 x i8*]* @_ZTVSt15basic_streambufIcSt11char_traitsIcEE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8, !tbaa !5 %_M_in_beg = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 1 store i8* null, i8** %_M_in_beg, align 8, !tbaa !330 %_M_in_cur = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 2 store i8* null, i8** %_M_in_cur, align 8, !tbaa !333 %_M_in_end = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 3 store i8* null, i8** %_M_in_end, align 8, !tbaa !334 %_M_out_beg = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 4 store i8* null, i8** %_M_out_beg, align 8, !tbaa !335 %_M_out_cur = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 5 store i8* null, i8** %_M_out_cur, align 8, !tbaa !336 %_M_out_end = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 6 store i8* null, i8** %_M_out_end, align 8, !tbaa !337 %_M_buf_locale = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 7 call void @_ZNSt6localeC1Ev(%"class.std::locale"* %_M_buf_locale) #5 ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev(%"class.std::basic_streambuf"* %this) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::basic_streambuf"*, align 8 store %"class.std::basic_streambuf"* %this, %"class.std::basic_streambuf"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_streambuf"*, %"class.std::basic_streambuf"** %this.addr, align 8 %0 = bitcast %"class.std::basic_streambuf"* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ([16 x i8*], [16 x i8*]* @_ZTVSt15basic_streambufIcSt11char_traitsIcEE, i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8, !tbaa !5 %_M_buf_locale = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 7 call void @_ZNSt6localeD1Ev(%"class.std::locale"* %_M_buf_locale) #5 ret void } ; Function Attrs: nounwind declare void @_ZNSt6localeC1Ev(%"class.std::locale"*) unnamed_addr #4 ; Function Attrs: nounwind declare void @_ZNSt6localeD1Ev(%"class.std::locale"*) unnamed_addr #4 ; Function Attrs: nounwind declare void @_ZNSt8ios_baseD2Ev(%"class.std::ios_base"*) unnamed_addr #4 ; Function Attrs: uwtable define available_externally void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate(%"class.std::basic_ios"* %this, i32 %__state) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_ios"*, align 8 %__state.addr = alloca i32, align 4 store %"class.std::basic_ios"* %this, %"class.std::basic_ios"** %this.addr, align 8, !tbaa !1 store i32 %__state, i32* %__state.addr, align 4, !tbaa !338 %this1 = load %"class.std::basic_ios"*, %"class.std::basic_ios"** %this.addr, align 8 %call = call i32 @_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv(%"class.std::basic_ios"* %this1) %0 = load i32, i32* %__state.addr, align 4, !tbaa !338 %call2 = call i32 @_ZStorSt12_Ios_IostateS_(i32 %call, i32 %0) call void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(%"class.std::basic_ios"* %this1, i32 %call2) ret void } declare dereferenceable(272) %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* dereferenceable(272), i8*, i64) #3 declare void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(%"class.std::basic_ios"*, i32) #3 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_ZStorSt12_Ios_IostateS_(i32 %__a, i32 %__b) #9 comdat { entry: %__a.addr = alloca i32, align 4 %__b.addr = alloca i32, align 4 store i32 %__a, i32* %__a.addr, align 4, !tbaa !338 store i32 %__b, i32* %__b.addr, align 4, !tbaa !338 %0 = load i32, i32* %__a.addr, align 4, !tbaa !338 %1 = load i32, i32* %__b.addr, align 4, !tbaa !338 %or = or i32 %0, %1 ret i32 %or } ; Function Attrs: nounwind uwtable define available_externally i32 @_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv(%"class.std::basic_ios"* %this) #1 align 2 { entry: %this.addr = alloca %"class.std::basic_ios"*, align 8 store %"class.std::basic_ios"* %this, %"class.std::basic_ios"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_ios"*, %"class.std::basic_ios"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ios"* %this1 to %"class.std::ios_base"* %_M_streambuf_state = getelementptr inbounds %"class.std::ios_base", %"class.std::ios_base"* %0, i32 0, i32 5 %1 = load i32, i32* %_M_streambuf_state, align 8, !tbaa !340 ret i32 %1 } ; Function Attrs: uwtable define available_externally void @_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv(%"class.std::basic_string"* noalias sret %agg.result, %"class.std::basic_stringbuf"* %this) #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_stringbuf"*, align 8 %nrvo = alloca i1, align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 %ref.tmp11 = alloca %"class.std::allocator", align 1 %ref.tmp17 = alloca %"class.std::basic_string", align 8 %ref.tmp22 = alloca %"class.std::allocator", align 1 store %"class.std::basic_stringbuf"* %this, %"class.std::basic_stringbuf"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_stringbuf"*, %"class.std::basic_stringbuf"** %this.addr, align 8 store i1 false, i1* %nrvo, align 1 call void @_ZNSsC2Ev(%"class.std::basic_string"* %agg.result) %0 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* %call = invoke i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv(%"class.std::basic_streambuf"* %0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %tobool = icmp ne i8* %call, null br i1 %tobool, label %if.then, label %if.else30 if.then: ; preds = %invoke.cont %1 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* %call3 = invoke i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv(%"class.std::basic_streambuf"* %1) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %if.then %2 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* %call5 = invoke i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv(%"class.std::basic_streambuf"* %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont2 %cmp = icmp ugt i8* %call3, %call5 br i1 %cmp, label %if.then6, label %if.else if.then6: ; preds = %invoke.cont4 %3 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* %call8 = invoke i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv(%"class.std::basic_streambuf"* %3) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %if.then6 %4 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* %call10 = invoke i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv(%"class.std::basic_streambuf"* %4) to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont7 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp11) #5 invoke void @_ZNSsC2IPcEET_S1_RKSaIcE(%"class.std::basic_string"* %ref.tmp, i8* %call8, i8* %call10, %"class.std::allocator"* dereferenceable(1) %ref.tmp11) to label %invoke.cont13 unwind label %lpad12 invoke.cont13: ; preds = %invoke.cont9 %call16 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSsaSEOSs(%"class.std::basic_string"* %agg.result, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont15 unwind label %lpad14 invoke.cont15: ; preds = %invoke.cont13 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp11) #5 br label %if.end lpad: ; preds = %if.else30, %invoke.cont18, %if.else, %invoke.cont7, %if.then6, %invoke.cont2, %if.then, %entry %5 = landingpad { i8*, i32 } cleanup %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 br label %ehcleanup34 lpad12: ; preds = %invoke.cont9 %8 = landingpad { i8*, i32 } cleanup %9 = extractvalue { i8*, i32 } %8, 0 store i8* %9, i8** %exn.slot, align 8 %10 = extractvalue { i8*, i32 } %8, 1 store i32 %10, i32* %ehselector.slot, align 4 br label %ehcleanup lpad14: ; preds = %invoke.cont13 %11 = landingpad { i8*, i32 } cleanup %12 = extractvalue { i8*, i32 } %11, 0 store i8* %12, i8** %exn.slot, align 8 %13 = extractvalue { i8*, i32 } %11, 1 store i32 %13, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad14, %lpad12 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp11) #5 br label %ehcleanup34 if.else: ; preds = %invoke.cont4 %14 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* %call19 = invoke i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv(%"class.std::basic_streambuf"* %14) to label %invoke.cont18 unwind label %lpad invoke.cont18: ; preds = %if.else %15 = bitcast %"class.std::basic_stringbuf"* %this1 to %"class.std::basic_streambuf"* %call21 = invoke i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv(%"class.std::basic_streambuf"* %15) to label %invoke.cont20 unwind label %lpad invoke.cont20: ; preds = %invoke.cont18 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp22) #5 invoke void @_ZNSsC2IPcEET_S1_RKSaIcE(%"class.std::basic_string"* %ref.tmp17, i8* %call19, i8* %call21, %"class.std::allocator"* dereferenceable(1) %ref.tmp22) to label %invoke.cont24 unwind label %lpad23 invoke.cont24: ; preds = %invoke.cont20 %call27 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSsaSEOSs(%"class.std::basic_string"* %agg.result, %"class.std::basic_string"* dereferenceable(8) %ref.tmp17) to label %invoke.cont26 unwind label %lpad25 invoke.cont26: ; preds = %invoke.cont24 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp17) #5 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp22) #5 br label %if.end lpad23: ; preds = %invoke.cont20 %16 = landingpad { i8*, i32 } cleanup %17 = extractvalue { i8*, i32 } %16, 0 store i8* %17, i8** %exn.slot, align 8 %18 = extractvalue { i8*, i32 } %16, 1 store i32 %18, i32* %ehselector.slot, align 4 br label %ehcleanup29 lpad25: ; preds = %invoke.cont24 %19 = landingpad { i8*, i32 } cleanup %20 = extractvalue { i8*, i32 } %19, 0 store i8* %20, i8** %exn.slot, align 8 %21 = extractvalue { i8*, i32 } %19, 1 store i32 %21, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp17) #5 br label %ehcleanup29 ehcleanup29: ; preds = %lpad25, %lpad23 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp22) #5 br label %ehcleanup34 if.end: ; preds = %invoke.cont26, %invoke.cont15 br label %if.end33 if.else30: ; preds = %invoke.cont %_M_string = getelementptr inbounds %"class.std::basic_stringbuf", %"class.std::basic_stringbuf"* %this1, i32 0, i32 2 %call32 = invoke dereferenceable(8) %"class.std::basic_string"* @_ZNSsaSERKSs(%"class.std::basic_string"* %agg.result, %"class.std::basic_string"* dereferenceable(8) %_M_string) to label %invoke.cont31 unwind label %lpad invoke.cont31: ; preds = %if.else30 br label %if.end33 if.end33: ; preds = %invoke.cont31, %if.end store i1 true, i1* %nrvo, align 1 %nrvo.val = load i1, i1* %nrvo, align 1 br i1 %nrvo.val, label %nrvo.skipdtor, label %nrvo.unused nrvo.unused: ; preds = %if.end33 call void @_ZNSsD2Ev(%"class.std::basic_string"* %agg.result) #5 br label %nrvo.skipdtor nrvo.skipdtor: ; preds = %nrvo.unused, %if.end33 ret void ehcleanup34: ; preds = %ehcleanup29, %ehcleanup, %lpad call void @_ZNSsD2Ev(%"class.std::basic_string"* %agg.result) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup34 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val35 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val35 } ; Function Attrs: nounwind uwtable define available_externally i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv(%"class.std::basic_streambuf"* %this) #1 align 2 { entry: %this.addr = alloca %"class.std::basic_streambuf"*, align 8 store %"class.std::basic_streambuf"* %this, %"class.std::basic_streambuf"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_streambuf"*, %"class.std::basic_streambuf"** %this.addr, align 8 %_M_out_cur = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 5 %0 = load i8*, i8** %_M_out_cur, align 8, !tbaa !336 ret i8* %0 } ; Function Attrs: nounwind uwtable define available_externally i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv(%"class.std::basic_streambuf"* %this) #1 align 2 { entry: %this.addr = alloca %"class.std::basic_streambuf"*, align 8 store %"class.std::basic_streambuf"* %this, %"class.std::basic_streambuf"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_streambuf"*, %"class.std::basic_streambuf"** %this.addr, align 8 %_M_in_end = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 3 %0 = load i8*, i8** %_M_in_end, align 8, !tbaa !334 ret i8* %0 } ; Function Attrs: uwtable define available_externally dereferenceable(8) %"class.std::basic_string"* @_ZNSsaSEOSs(%"class.std::basic_string"* %this, %"class.std::basic_string"* dereferenceable(8) %__str) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__str.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store %"class.std::basic_string"* %__str, %"class.std::basic_string"** %__str.addr, align 8, !tbaa !7 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load %"class.std::basic_string"*, %"class.std::basic_string"** %__str.addr, align 8 call void @_ZNSs4swapERSs(%"class.std::basic_string"* %this1, %"class.std::basic_string"* dereferenceable(8) %0) ret %"class.std::basic_string"* %this1 } ; Function Attrs: nounwind uwtable define available_externally i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv(%"class.std::basic_streambuf"* %this) #1 align 2 { entry: %this.addr = alloca %"class.std::basic_streambuf"*, align 8 store %"class.std::basic_streambuf"* %this, %"class.std::basic_streambuf"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_streambuf"*, %"class.std::basic_streambuf"** %this.addr, align 8 %_M_out_beg = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %this1, i32 0, i32 4 %0 = load i8*, i8** %_M_out_beg, align 8, !tbaa !335 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZNSsC2IPcEET_S1_RKSaIcE(%"class.std::basic_string"* %this, i8* %__beg, i8* %__end, %"class.std::allocator"* dereferenceable(1) %__a) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__beg.addr = alloca i8*, align 8 %__end.addr = alloca i8*, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store i8* %__beg, i8** %__beg.addr, align 8, !tbaa !1 store i8* %__end, i8** %__end.addr, align 8, !tbaa !1 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8, !tbaa !7 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %_M_dataplus = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %this1, i32 0, i32 0 %0 = load i8*, i8** %__beg.addr, align 8, !tbaa !1 %1 = load i8*, i8** %__end.addr, align 8, !tbaa !1 %2 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %call = call i8* @_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcE(i8* %0, i8* %1, %"class.std::allocator"* dereferenceable(1) %2) %3 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 call void @_ZNSs12_Alloc_hiderC2EPcRKSaIcE(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %_M_dataplus, i8* %call, %"class.std::allocator"* dereferenceable(1) %3) ret void } ; Function Attrs: uwtable define available_externally dereferenceable(8) %"class.std::basic_string"* @_ZNSsaSERKSs(%"class.std::basic_string"* %this, %"class.std::basic_string"* dereferenceable(8) %__str) #0 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__str.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store %"class.std::basic_string"* %__str, %"class.std::basic_string"** %__str.addr, align 8, !tbaa !7 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load %"class.std::basic_string"*, %"class.std::basic_string"** %__str.addr, align 8 %call = call dereferenceable(8) %"class.std::basic_string"* @_ZNSs6assignERKSs(%"class.std::basic_string"* %this1, %"class.std::basic_string"* dereferenceable(8) %0) ret %"class.std::basic_string"* %call } declare void @_ZNSs4swapERSs(%"class.std::basic_string"*, %"class.std::basic_string"* dereferenceable(8)) #3 ; Function Attrs: uwtable define linkonce_odr i8* @_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcE(i8* %__beg, i8* %__end, %"class.std::allocator"* dereferenceable(1) %__a) #0 comdat align 2 { entry: %__beg.addr = alloca i8*, align 8 %__end.addr = alloca i8*, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 %agg.tmp = alloca %"struct.std::__false_type", align 1 store i8* %__beg, i8** %__beg.addr, align 8, !tbaa !1 store i8* %__end, i8** %__end.addr, align 8, !tbaa !1 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8, !tbaa !7 %0 = load i8*, i8** %__beg.addr, align 8, !tbaa !1 %1 = load i8*, i8** %__end.addr, align 8, !tbaa !1 %2 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %call = call i8* @_ZNSs16_S_construct_auxIPcEES0_T_S1_RKSaIcESt12__false_type(i8* %0, i8* %1, %"class.std::allocator"* dereferenceable(1) %2) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNSs16_S_construct_auxIPcEES0_T_S1_RKSaIcESt12__false_type(i8* %__beg, i8* %__end, %"class.std::allocator"* dereferenceable(1) %__a) #0 comdat align 2 { entry: %0 = alloca %"struct.std::__false_type", align 1 %__beg.addr = alloca i8*, align 8 %__end.addr = alloca i8*, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 %agg.tmp = alloca %"struct.std::forward_iterator_tag", align 1 %ref.tmp = alloca %"struct.std::random_access_iterator_tag", align 1 store i8* %__beg, i8** %__beg.addr, align 8, !tbaa !1 store i8* %__end, i8** %__end.addr, align 8, !tbaa !1 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8, !tbaa !7 %1 = load i8*, i8** %__beg.addr, align 8, !tbaa !1 %2 = load i8*, i8** %__end.addr, align 8, !tbaa !1 %3 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %4 = bitcast %"struct.std::random_access_iterator_tag"* %ref.tmp to %"struct.std::forward_iterator_tag"* %call = call i8* @_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag(i8* %1, i8* %2, %"class.std::allocator"* dereferenceable(1) %3) ret i8* %call } ; Function Attrs: uwtable define linkonce_odr i8* @_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag(i8* %__beg, i8* %__end, %"class.std::allocator"* dereferenceable(1) %__a) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca i8*, align 8 %0 = alloca %"struct.std::forward_iterator_tag", align 1 %__beg.addr = alloca i8*, align 8 %__end.addr = alloca i8*, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 %ref.tmp = alloca %"class.std::allocator", align 1 %cleanup.cond = alloca i1, align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %__dnew = alloca i64, align 8 %__r = alloca %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, align 8 store i8* %__beg, i8** %__beg.addr, align 8, !tbaa !1 store i8* %__end, i8** %__end.addr, align 8, !tbaa !1 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8, !tbaa !7 %1 = load i8*, i8** %__beg.addr, align 8, !tbaa !1 %2 = load i8*, i8** %__end.addr, align 8, !tbaa !1 %cmp = icmp eq i8* %1, %2 store i1 false, i1* %cleanup.cond, align 1 br i1 %cmp, label %land.rhs, label %land.end land.rhs: ; preds = %entry %3 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp) #5 store i1 true, i1* %cleanup.cond, align 1 %call = invoke zeroext i1 @_ZSteqIcEbRKSaIT_ES3_(%"class.std::allocator"* dereferenceable(1) %3, %"class.std::allocator"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %land.rhs br label %land.end land.end: ; preds = %invoke.cont, %entry %4 = phi i1 [ false, %entry ], [ %call, %invoke.cont ] %cleanup.is_active = load i1, i1* %cleanup.cond, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %land.end call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %land.end br i1 %4, label %if.then, label %if.end if.then: ; preds = %cleanup.done %call4 = call dereferenceable(24) %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs12_S_empty_repEv() %call5 = call i8* @_ZNSs4_Rep10_M_refdataEv(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %call4) #5 store i8* %call5, i8** %retval, align 8 br label %return lpad: ; preds = %land.rhs %5 = landingpad { i8*, i32 } cleanup %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 %cleanup.is_active1 = load i1, i1* %cleanup.cond, align 1 br i1 %cleanup.is_active1, label %cleanup.action2, label %cleanup.done3 cleanup.action2: ; preds = %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp) #5 br label %cleanup.done3 cleanup.done3: ; preds = %cleanup.action2, %lpad br label %eh.resume if.end: ; preds = %cleanup.done %8 = load i8*, i8** %__beg.addr, align 8, !tbaa !1 %call6 = call zeroext i1 @_ZN9__gnu_cxx17__is_null_pointerIcEEbPT_(i8* %8) br i1 %call6, label %land.lhs.true, label %if.end9 land.lhs.true: ; preds = %if.end %9 = load i8*, i8** %__beg.addr, align 8, !tbaa !1 %10 = load i8*, i8** %__end.addr, align 8, !tbaa !1 %cmp7 = icmp ne i8* %9, %10 br i1 %cmp7, label %if.then8, label %if.end9 if.then8: ; preds = %land.lhs.true call void @_ZSt19__throw_logic_errorPKc(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.51, i32 0, i32 0)) #15 unreachable if.end9: ; preds = %land.lhs.true, %if.end %11 = bitcast i64* %__dnew to i8* call void @llvm.lifetime.start(i64 8, i8* %11) #5 %12 = load i8*, i8** %__beg.addr, align 8, !tbaa !1 %13 = load i8*, i8** %__end.addr, align 8, !tbaa !1 %call10 = call i64 @_ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_(i8* %12, i8* %13) store i64 %call10, i64* %__dnew, align 8, !tbaa !13 %14 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %__r to i8* call void @llvm.lifetime.start(i64 8, i8* %14) #5 %15 = load i64, i64* %__dnew, align 8, !tbaa !13 %16 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %call11 = call %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs4_Rep9_S_createEmmRKSaIcE(i64 %15, i64 0, %"class.std::allocator"* dereferenceable(1) %16) store %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %call11, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %__r, align 8, !tbaa !1 %17 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %__r, align 8, !tbaa !1 %call12 = call i8* @_ZNSs4_Rep10_M_refdataEv(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %17) #5 %18 = load i8*, i8** %__beg.addr, align 8, !tbaa !1 %19 = load i8*, i8** %__end.addr, align 8, !tbaa !1 invoke void @_ZNSs13_S_copy_charsEPcS_S_(i8* %call12, i8* %18, i8* %19) to label %invoke.cont14 unwind label %lpad13 invoke.cont14: ; preds = %if.end9 br label %try.cont lpad13: ; preds = %if.end9 %20 = landingpad { i8*, i32 } catch i8* null %21 = extractvalue { i8*, i32 } %20, 0 store i8* %21, i8** %exn.slot, align 8 %22 = extractvalue { i8*, i32 } %20, 1 store i32 %22, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad13 %exn = load i8*, i8** %exn.slot, align 8 %23 = call i8* @__cxa_begin_catch(i8* %exn) #5 %24 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %__r, align 8, !tbaa !1 %25 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 call void @_ZNSs4_Rep10_M_destroyERKSaIcE(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %24, %"class.std::allocator"* dereferenceable(1) %25) #5 invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad15 lpad15: ; preds = %catch %26 = landingpad { i8*, i32 } cleanup %27 = extractvalue { i8*, i32 } %26, 0 store i8* %27, i8** %exn.slot, align 8 %28 = extractvalue { i8*, i32 } %26, 1 store i32 %28, i32* %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont16 unwind label %terminate.lpad invoke.cont16: ; preds = %lpad15 %29 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %__r to i8* call void @llvm.lifetime.end(i64 8, i8* %29) #5 %30 = bitcast i64* %__dnew to i8* call void @llvm.lifetime.end(i64 8, i8* %30) #5 br label %eh.resume try.cont: ; preds = %invoke.cont14 %31 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %__r, align 8, !tbaa !1 %32 = load i64, i64* %__dnew, align 8, !tbaa !13 call void @_ZNSs4_Rep26_M_set_length_and_sharableEm(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %31, i64 %32) %33 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %__r, align 8, !tbaa !1 %call17 = call i8* @_ZNSs4_Rep10_M_refdataEv(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %33) #5 store i8* %call17, i8** %retval, align 8 %34 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %__r to i8* call void @llvm.lifetime.end(i64 8, i8* %34) #5 %35 = bitcast i64* %__dnew to i8* call void @llvm.lifetime.end(i64 8, i8* %35) #5 br label %return return: ; preds = %try.cont, %if.then %36 = load i8*, i8** %retval, align 8 ret i8* %36 eh.resume: ; preds = %invoke.cont16, %cleanup.done3 %exn18 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn18, 0 %lpad.val19 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val19 terminate.lpad: ; preds = %lpad15 %37 = landingpad { i8*, i32 } catch i8* null %38 = extractvalue { i8*, i32 } %37, 0 call void @__clang_call_terminate(i8* %38) #13 unreachable unreachable: ; preds = %catch unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr zeroext i1 @_ZSteqIcEbRKSaIT_ES3_(%"class.std::allocator"* dereferenceable(1), %"class.std::allocator"* dereferenceable(1)) #9 comdat { entry: %.addr = alloca %"class.std::allocator"*, align 8 %.addr1 = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %0, %"class.std::allocator"** %.addr, align 8, !tbaa !7 store %"class.std::allocator"* %1, %"class.std::allocator"** %.addr1, align 8, !tbaa !7 ret i1 true } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr zeroext i1 @_ZN9__gnu_cxx17__is_null_pointerIcEEbPT_(i8* %__ptr) #9 comdat { entry: %__ptr.addr = alloca i8*, align 8 store i8* %__ptr, i8** %__ptr.addr, align 8, !tbaa !1 %0 = load i8*, i8** %__ptr.addr, align 8, !tbaa !1 %cmp = icmp eq i8* %0, null ret i1 %cmp } ; Function Attrs: noreturn declare void @_ZSt19__throw_logic_errorPKc(i8*) #11 ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_(i8* %__first, i8* %__last) #8 comdat { entry: %__first.addr = alloca i8*, align 8 %__last.addr = alloca i8*, align 8 %agg.tmp = alloca %"struct.std::random_access_iterator_tag", align 1 %undef.agg.tmp = alloca %"struct.std::random_access_iterator_tag", align 1 store i8* %__first, i8** %__first.addr, align 8, !tbaa !1 store i8* %__last, i8** %__last.addr, align 8, !tbaa !1 %0 = load i8*, i8** %__first.addr, align 8, !tbaa !1 %1 = load i8*, i8** %__last.addr, align 8, !tbaa !1 call void @_ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_(i8** dereferenceable(8) %__first.addr) %call = call i64 @_ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag(i8* %0, i8* %1) ret i64 %call } declare %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs4_Rep9_S_createEmmRKSaIcE(i64, i64, %"class.std::allocator"* dereferenceable(1)) #3 ; Function Attrs: uwtable define available_externally void @_ZNSs13_S_copy_charsEPcS_S_(i8* %__p, i8* %__k1, i8* %__k2) #0 align 2 { entry: %__p.addr = alloca i8*, align 8 %__k1.addr = alloca i8*, align 8 %__k2.addr = alloca i8*, align 8 store i8* %__p, i8** %__p.addr, align 8, !tbaa !1 store i8* %__k1, i8** %__k1.addr, align 8, !tbaa !1 store i8* %__k2, i8** %__k2.addr, align 8, !tbaa !1 %0 = load i8*, i8** %__p.addr, align 8, !tbaa !1 %1 = load i8*, i8** %__k1.addr, align 8, !tbaa !1 %2 = load i8*, i8** %__k2.addr, align 8, !tbaa !1 %3 = load i8*, i8** %__k1.addr, align 8, !tbaa !1 %sub.ptr.lhs.cast = ptrtoint i8* %2 to i64 %sub.ptr.rhs.cast = ptrtoint i8* %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast call void @_ZNSs7_M_copyEPcPKcm(i8* %0, i8* %1, i64 %sub.ptr.sub) ret void } ; Function Attrs: uwtable define available_externally void @_ZNSs4_Rep26_M_set_length_and_sharableEm(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this, i64 %__n) #0 align 2 { entry: %this.addr = alloca %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, align 8 %__n.addr = alloca i64, align 8 store %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %this.addr, align 8, !tbaa !1 store i64 %__n, i64* %__n.addr, align 8, !tbaa !13 %this1 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %this.addr, align 8 %call = call dereferenceable(24) %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs4_Rep12_S_empty_repEv() %cmp = icmp ne %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this1, %call %conv = zext i1 %cmp to i64 %expval = call i64 @llvm.expect.i64(i64 %conv, i64 0) %tobool = icmp ne i64 %expval, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZNSs4_Rep15_M_set_sharableEv(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this1) %0 = load i64, i64* %__n.addr, align 8, !tbaa !13 %1 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this1 to %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base"* %_M_length = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base"* %1, i32 0, i32 0 store i64 %0, i64* %_M_length, align 8, !tbaa !15 %2 = load i64, i64* %__n.addr, align 8, !tbaa !13 %call2 = call i8* @_ZNSs4_Rep10_M_refdataEv(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this1) #5 %arrayidx = getelementptr inbounds i8, i8* %call2, i64 %2 call void @_ZNSt11char_traitsIcE6assignERcRKc(i8* dereferenceable(1) %arrayidx, i8* dereferenceable(1) @_ZNSs4_Rep11_S_terminalE) #5 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag(i8* %__first, i8* %__last) #9 comdat { entry: %0 = alloca %"struct.std::random_access_iterator_tag", align 1 %__first.addr = alloca i8*, align 8 %__last.addr = alloca i8*, align 8 store i8* %__first, i8** %__first.addr, align 8, !tbaa !1 store i8* %__last, i8** %__last.addr, align 8, !tbaa !1 %1 = load i8*, i8** %__last.addr, align 8, !tbaa !1 %2 = load i8*, i8** %__first.addr, align 8, !tbaa !1 %sub.ptr.lhs.cast = ptrtoint i8* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i8* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast ret i64 %sub.ptr.sub } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_(i8** dereferenceable(8)) #9 comdat { entry: %retval = alloca %"struct.std::random_access_iterator_tag", align 1 %.addr = alloca i8**, align 8 store i8** %0, i8*** %.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define available_externally void @_ZNSs7_M_copyEPcPKcm(i8* %__d, i8* %__s, i64 %__n) #0 align 2 { entry: %__d.addr = alloca i8*, align 8 %__s.addr = alloca i8*, align 8 %__n.addr = alloca i64, align 8 store i8* %__d, i8** %__d.addr, align 8, !tbaa !1 store i8* %__s, i8** %__s.addr, align 8, !tbaa !1 store i64 %__n, i64* %__n.addr, align 8, !tbaa !13 %0 = load i64, i64* %__n.addr, align 8, !tbaa !13 %cmp = icmp eq i64 %0, 1 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %1 = load i8*, i8** %__d.addr, align 8, !tbaa !1 %2 = load i8*, i8** %__s.addr, align 8, !tbaa !1 call void @_ZNSt11char_traitsIcE6assignERcRKc(i8* dereferenceable(1) %1, i8* dereferenceable(1) %2) #5 br label %if.end if.else: ; preds = %entry %3 = load i8*, i8** %__d.addr, align 8, !tbaa !1 %4 = load i8*, i8** %__s.addr, align 8, !tbaa !1 %5 = load i64, i64* %__n.addr, align 8, !tbaa !13 %call = call i8* @_ZNSt11char_traitsIcE4copyEPcPKcm(i8* %3, i8* %4, i64 %5) br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSt11char_traitsIcE6assignERcRKc(i8* dereferenceable(1) %__c1, i8* dereferenceable(1) %__c2) #1 comdat align 2 { entry: %__c1.addr = alloca i8*, align 8 %__c2.addr = alloca i8*, align 8 store i8* %__c1, i8** %__c1.addr, align 8, !tbaa !7 store i8* %__c2, i8** %__c2.addr, align 8, !tbaa !7 %0 = load i8*, i8** %__c2.addr, align 8 %1 = load i8, i8* %0, align 1, !tbaa !7 %2 = load i8*, i8** %__c1.addr, align 8 store i8 %1, i8* %2, align 1, !tbaa !7 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i8* @_ZNSt11char_traitsIcE4copyEPcPKcm(i8* %__s1, i8* %__s2, i64 %__n) #1 comdat align 2 { entry: %__s1.addr = alloca i8*, align 8 %__s2.addr = alloca i8*, align 8 %__n.addr = alloca i64, align 8 store i8* %__s1, i8** %__s1.addr, align 8, !tbaa !1 store i8* %__s2, i8** %__s2.addr, align 8, !tbaa !1 store i64 %__n, i64* %__n.addr, align 8, !tbaa !13 %0 = load i8*, i8** %__s1.addr, align 8, !tbaa !1 %1 = load i8*, i8** %__s2.addr, align 8, !tbaa !1 %2 = load i64, i64* %__n.addr, align 8, !tbaa !13 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 %2, i32 1, i1 false) ret i8* %0 } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSs4_Rep15_M_set_sharableEv(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this) #1 align 2 { entry: %this.addr = alloca %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, align 8 store %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"** %this.addr, align 8 %0 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %this1 to %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base"* %_M_refcount = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base"* %0, i32 0, i32 2 store i32 0, i32* %_M_refcount, align 8, !tbaa !344 ret void } declare dereferenceable(8) %"class.std::basic_string"* @_ZNSs6assignERKSs(%"class.std::basic_string"*, %"class.std::basic_string"* dereferenceable(8)) #3 ; Function Attrs: nounwind uwtable define available_externally void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev(%"class.std::basic_ostringstream"* %this, i8** %vtt) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::basic_ostringstream"*, align 8 %vtt.addr = alloca i8**, align 8 store %"class.std::basic_ostringstream"* %this, %"class.std::basic_ostringstream"** %this.addr, align 8, !tbaa !1 store i8** %vtt, i8*** %vtt.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_ostringstream"*, %"class.std::basic_ostringstream"** %this.addr, align 8 %vtt2 = load i8**, i8*** %vtt.addr, align 8 %0 = load i8*, i8** %vtt2, align 8 %1 = bitcast %"class.std::basic_ostringstream"* %this1 to i32 (...)*** %2 = bitcast i8* %0 to i32 (...)** store i32 (...)** %2, i32 (...)*** %1, align 8, !tbaa !5 %3 = getelementptr inbounds i8*, i8** %vtt2, i64 3 %4 = load i8*, i8** %3, align 8 %5 = bitcast %"class.std::basic_ostringstream"* %this1 to i8** %vtable = load i8*, i8** %5, align 8, !tbaa !5 %vbase.offset.ptr = getelementptr i8, i8* %vtable, i64 -24 %6 = bitcast i8* %vbase.offset.ptr to i64* %vbase.offset = load i64, i64* %6, align 8 %7 = bitcast %"class.std::basic_ostringstream"* %this1 to i8* %add.ptr = getelementptr inbounds i8, i8* %7, i64 %vbase.offset %8 = bitcast i8* %add.ptr to i32 (...)*** %9 = bitcast i8* %4 to i32 (...)** store i32 (...)** %9, i32 (...)*** %8, align 8, !tbaa !5 %_M_stringbuf = getelementptr inbounds %"class.std::basic_ostringstream", %"class.std::basic_ostringstream"* %this1, i32 0, i32 1 call void @_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED2Ev(%"class.std::basic_stringbuf"* %_M_stringbuf) #5 %10 = bitcast %"class.std::basic_ostringstream"* %this1 to %"class.std::basic_ostream"* %11 = getelementptr inbounds i8*, i8** %vtt2, i64 1 call void @_ZNSoD2Ev(%"class.std::basic_ostream"* %10, i8** %11) #5 ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %this) unnamed_addr #1 align 2 { entry: %this.addr = alloca %"class.std::basic_ostringstream"*, align 8 store %"class.std::basic_ostringstream"* %this, %"class.std::basic_ostringstream"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_ostringstream"*, %"class.std::basic_ostringstream"** %this.addr, align 8 %0 = bitcast %"class.std::basic_ostringstream"* %this1 to i8* %1 = bitcast i8* %0 to i8** %2 = load i8*, i8** %1, align 8 %3 = getelementptr inbounds i8, i8* %2, i64 -24 %4 = bitcast i8* %3 to i64* %5 = load i64, i64* %4, align 8 %6 = getelementptr inbounds i8, i8* %0, i64 %5 %7 = bitcast i8* %6 to %"class.std::basic_ostringstream"* tail call void @_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::basic_ostringstream"* %7) #5 ret void } ; Function Attrs: inlinehint uwtable define available_externally dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E(%"class.std::basic_ostream"* dereferenceable(272) %__os, %"class.std::basic_string"* dereferenceable(8) %__str) #8 { entry: %__os.addr = alloca %"class.std::basic_ostream"*, align 8 %__str.addr = alloca %"class.std::basic_string"*, align 8 store %"class.std::basic_ostream"* %__os, %"class.std::basic_ostream"** %__os.addr, align 8, !tbaa !7 store %"class.std::basic_string"* %__str, %"class.std::basic_string"** %__str.addr, align 8, !tbaa !7 %0 = load %"class.std::basic_ostream"*, %"class.std::basic_ostream"** %__os.addr, align 8 %1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %__str.addr, align 8 %call = call i8* @_ZNKSs4dataEv(%"class.std::basic_string"* %1) #5 %2 = load %"class.std::basic_string"*, %"class.std::basic_string"** %__str.addr, align 8 %call1 = call i64 @_ZNKSs4sizeEv(%"class.std::basic_string"* %2) #5 %call2 = call dereferenceable(272) %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* dereferenceable(272) %0, i8* %call, i64 %call1) ret %"class.std::basic_ostream"* %call2 } declare dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"*, i32) #3 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN8unittest17UnitTestExceptionC2EOS0_(%"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"* dereferenceable(8)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.unittest::UnitTestException"*, align 8 %.addr = alloca %"class.unittest::UnitTestException"*, align 8 store %"class.unittest::UnitTestException"* %this, %"class.unittest::UnitTestException"** %this.addr, align 8, !tbaa !1 store %"class.unittest::UnitTestException"* %0, %"class.unittest::UnitTestException"** %.addr, align 8, !tbaa !7 %this1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %this.addr, align 8 %message = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %this1, i32 0, i32 0 %1 = load %"class.unittest::UnitTestException"*, %"class.unittest::UnitTestException"** %.addr, align 8 %message2 = getelementptr inbounds %"class.unittest::UnitTestException", %"class.unittest::UnitTestException"* %1, i32 0, i32 0 call void @_ZNSsC2EOSs(%"class.std::basic_string"* %message, %"class.std::basic_string"* dereferenceable(8) %message2) #5 ret void } ; Function Attrs: nounwind uwtable define available_externally void @_ZNSsC2EOSs(%"class.std::basic_string"* %this, %"class.std::basic_string"* dereferenceable(8) %__str) unnamed_addr #1 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__str.addr = alloca %"class.std::basic_string"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store %"class.std::basic_string"* %__str, %"class.std::basic_string"** %__str.addr, align 8, !tbaa !7 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %_M_dataplus = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %this1, i32 0, i32 0 %0 = load %"class.std::basic_string"*, %"class.std::basic_string"** %__str.addr, align 8 %_M_dataplus2 = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %0, i32 0, i32 0 call void @_ZNSs12_Alloc_hiderC2ERKS_(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %_M_dataplus, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* dereferenceable(8) %_M_dataplus2) #5 %1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %__str.addr, align 8 %call = invoke dereferenceable(24) %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* @_ZNSs12_S_empty_repEv() to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %call3 = call i8* @_ZNSs4_Rep10_M_refdataEv(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"* %call) #5 %call5 = invoke i8* @_ZNSs7_M_dataEPc(%"class.std::basic_string"* %1, i8* %call3) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont ret void lpad: ; preds = %invoke.cont, %entry %2 = landingpad { i8*, i32 } catch i8* null %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.std::allocator"*)* @_ZNSaIcED2Ev to void (%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*)*)(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %_M_dataplus) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZNSs12_Alloc_hiderC2ERKS_(%"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %this, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* dereferenceable(8)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*, align 8 %.addr = alloca %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*, align 8 store %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %this, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"** %this.addr, align 8, !tbaa !1 store %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %0, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"** %.addr, align 8, !tbaa !7 %this1 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"** %this.addr, align 8 %1 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %this1 to %"class.std::allocator"* %2 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"** %.addr, align 8 %3 = bitcast %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %2 to %"class.std::allocator"* call void @_ZNSaIcEC2ERKS_(%"class.std::allocator"* %1, %"class.std::allocator"* dereferenceable(1) %3) #5 %_M_p = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %this1, i32 0, i32 0 %4 = load %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"*, %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"** %.addr, align 8 %_M_p2 = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %4, i32 0, i32 0 %5 = load i8*, i8** %_M_p2, align 8, !tbaa !88 store i8* %5, i8** %_M_p, align 8, !tbaa !88 ret void } ; Function Attrs: nounwind uwtable define available_externally i8* @_ZNSs7_M_dataEPc(%"class.std::basic_string"* %this, i8* %__p) #1 align 2 { entry: %this.addr = alloca %"class.std::basic_string"*, align 8 %__p.addr = alloca i8*, align 8 store %"class.std::basic_string"* %this, %"class.std::basic_string"** %this.addr, align 8, !tbaa !1 store i8* %__p, i8** %__p.addr, align 8, !tbaa !1 %this1 = load %"class.std::basic_string"*, %"class.std::basic_string"** %this.addr, align 8 %0 = load i8*, i8** %__p.addr, align 8, !tbaa !1 %_M_dataplus = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %this1, i32 0, i32 0 %_M_p = getelementptr inbounds %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider", %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %_M_dataplus, i32 0, i32 0 store i8* %0, i8** %_M_p, align 8, !tbaa !8 ret i8* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE3endEv(%"class.thrust::detail::vector_base.62"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.66", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.62"*, align 8 store %"class.thrust::detail::vector_base.62"* %this, %"class.thrust::detail::vector_base.62"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.62"*, %"class.thrust::detail::vector_base.62"** %this.addr, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.62"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive5, align 8 %call6 = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::vector_base.62"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIaaEEEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.66"* dereferenceable(8) %retval, i64 %call6) %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.66", %"class.thrust::detail::normal_iterator.66"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.67", %"class.thrust::iterator_adaptor.67"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr.69", %"class.thrust::device_ptr.69"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.70", %"class.thrust::pointer.70"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.71", %"class.thrust::iterator_adaptor.71"* %coerce.dive10, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive11, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIaaEESaIS3_EE7destroyENS0_15normal_iteratorIPS3_EES8_(%"class.thrust::detail::contiguous_storage.47"* %this, %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.51", align 8 %last = alloca %"class.thrust::detail::normal_iterator.51", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.47"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %first.coerce, %"struct.thrust::pair"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair"* %last.coerce, %"struct.thrust::pair"** %coerce.dive3, align 8 store %"class.thrust::detail::contiguous_storage.47"* %this, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::contiguous_storage.47"*, %"class.thrust::detail::contiguous_storage.47"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.47", %"class.thrust::detail::contiguous_storage.47"* %this4, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.51"* %first to %"class.thrust::iterator_adaptor.52"* %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.52"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 %2 = bitcast %"class.thrust::detail::normal_iterator.51"* %last to %"class.thrust::iterator_facade.53"* %3 = bitcast %"class.thrust::detail::normal_iterator.51"* %first to %"class.thrust::iterator_facade.53"* %call5 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lS6_S4_SA_SB_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.53"* dereferenceable(1) %2, %"class.thrust::iterator_facade.53"* dereferenceable(1) %3) call void @_ZN6thrust6detail13destroy_rangeISaINS_4pairIaaEEEPS3_lEEvRT_T0_T1_(%"class.std::allocator.48"* dereferenceable(1) %m_allocator, %"struct.thrust::pair"* %1, i64 %call5) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE3endEv(%"class.thrust::detail::vector_base.46"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.51", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.46"*, align 8 store %"class.thrust::detail::vector_base.46"* %this, %"class.thrust::detail::vector_base.46"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.46"*, %"class.thrust::detail::vector_base.46"** %this.addr, align 8 %call = call %"struct.thrust::pair"* @_ZN6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.46"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair"* %call, %"struct.thrust::pair"** %coerce.dive2, align 8 %call3 = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIaaEESaIS3_EE4sizeEv(%"class.thrust::detail::vector_base.46"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %retval, i64 %call3) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.51", %"class.thrust::detail::normal_iterator.51"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %coerce.dive4, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %coerce.dive5, align 8 ret %"struct.thrust::pair"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeISaINS_4pairIaaEEEPS3_lEEvRT_T0_T1_(%"class.std::allocator.48"* dereferenceable(1) %a, %"struct.thrust::pair"* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %p.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %p, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaINS_4pairIaaEEEPS4_lEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERS8_S9_T1_(%"class.std::allocator.48"* dereferenceable(1) %0, %"struct.thrust::pair"* %1, i64 %2) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lS6_S4_SA_SB_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.53"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.53"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.53"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.53"*, align 8 store %"class.thrust::iterator_facade.53"* %lhs, %"class.thrust::iterator_facade.53"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.53"* %rhs, %"class.thrust::iterator_facade.53"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.53"*, %"class.thrust::iterator_facade.53"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.53"* %0 to %"class.thrust::detail::normal_iterator.51"* %2 = load %"class.thrust::iterator_facade.53"*, %"class.thrust::iterator_facade.53"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.53"* %2 to %"class.thrust::detail::normal_iterator.51"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIaaEEEES7_EENS2_20distance_from_resultIT_T0_E4typeERKS9_RKSA_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaINS_4pairIaaEEEPS4_lEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERS8_S9_T1_(%"class.std::allocator.48"* dereferenceable(1) %a, %"struct.thrust::pair"* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.48"*, align 8 %p.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 store %"class.std::allocator.48"* %a, %"class.std::allocator.48"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %p, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.48"*, %"class.std::allocator.48"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemISaINS_4pairIaaEEEE3getERS4_(%"class.std::allocator.48"* dereferenceable(1) %0) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.85"* %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIaaEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS8_21execution_policy_baseIT_EESB_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, %"struct.thrust::pair"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIaaEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS8_21execution_policy_baseIT_EESB_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"struct.thrust::pair"* %first, i64 %n) #0 comdat { entry: %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %first, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call %"struct.thrust::pair"* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIaaEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"struct.thrust::pair"* %2, i64 %3) ret %"struct.thrust::pair"* %call2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair"* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIaaEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"struct.thrust::pair"* %first, i64 %n) #0 comdat { entry: %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %first.addr = alloca %"struct.thrust::pair"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %i = alloca i64, align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store %"struct.thrust::pair"* %first, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEC2ERKS3_(%"struct.thrust::detail::wrapped_function.146"* %wrapped_f, %"struct.thrust::detail::allocator_traits_detail::gozer"* dereferenceable(1) %f) %2 = bitcast i64* %i to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 store i64 0, i64* %i, align 8, !tbaa !13 br label %for.cond for.cond: ; preds = %for.inc, %entry %3 = load i64, i64* %i, align 8, !tbaa !13 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ne i64 %3, %4 br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %5 = bitcast i64* %i to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 br label %for.end for.body: ; preds = %for.cond %6 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 call void @_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_4pairIaaEEEEvRT_(%"struct.thrust::detail::wrapped_function.146"* %wrapped_f, %"struct.thrust::pair"* dereferenceable(2) %6) %7 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 %incdec.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %7, i32 1 store %"struct.thrust::pair"* %incdec.ptr, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 br label %for.inc for.inc: ; preds = %for.body %8 = load i64, i64* %i, align 8, !tbaa !13 %inc = add nsw i64 %8, 1 store i64 %inc, i64* %i, align 8, !tbaa !13 br label %for.cond for.end: ; preds = %for.cond.cleanup %9 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %first.addr, align 8, !tbaa !1 %10 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %10) #5 ret %"struct.thrust::pair"* %9 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEclINS_4pairIaaEEEEvRT_(%"struct.thrust::detail::wrapped_function.146"* %this, %"struct.thrust::pair"* dereferenceable(2) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %x.addr = alloca %"struct.thrust::pair"*, align 8 store %"struct.thrust::detail::wrapped_function.146"* %this, %"struct.thrust::detail::wrapped_function.146"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair"* %x, %"struct.thrust::pair"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.146", %"struct.thrust::detail::wrapped_function.146"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %x.addr, align 8 %call = call dereferenceable(2) %"struct.thrust::pair"* @_ZN6thrust18raw_reference_castINS_4pairIaaEEEENS_6detail13raw_referenceIT_E4typeERS5_(%"struct.thrust::pair"* dereferenceable(2) %0) call void @_ZN6thrust6detail23allocator_traits_detail5gozerclINS_4pairIaaEEEEvRT_(%"struct.thrust::detail::allocator_traits_detail::gozer"* %m_f, %"struct.thrust::pair"* dereferenceable(2) %call) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIaaEEEES7_EENS2_20distance_from_resultIT_T0_E4typeERKS9_RKSA_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.51"* %f1, %"class.thrust::detail::normal_iterator.51"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.51"* %f2, %"class.thrust::detail::normal_iterator.51"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIaaEEEES7_EENT_15difference_typeERKS8_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPNS_4pairIaaEEEES7_EENT_15difference_typeERKS8_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 store %"class.thrust::detail::normal_iterator.51"* %f1, %"class.thrust::detail::normal_iterator.51"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.51"* %f2, %"class.thrust::detail::normal_iterator.51"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.51"* %1 to %"class.thrust::iterator_adaptor.52"* %3 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.51"* %3 to %"class.thrust::iterator_adaptor.52"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E11distance_toIS6_S5_S7_S7_S7_S7_S7_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.52"* %2, %"class.thrust::iterator_adaptor.52"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E11distance_toIS6_S5_S7_S7_S7_S7_S7_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.52"* %this, %"class.thrust::iterator_adaptor.52"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.52"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.52"*, align 8 store %"class.thrust::iterator_adaptor.52"* %this, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.52"* %y, %"class.thrust::iterator_adaptor.52"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.52"*, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.52"*, %"class.thrust::iterator_adaptor.52"** %y.addr, align 8 %call = call dereferenceable(8) %"struct.thrust::pair"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.52"* %0) %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %this1, i32 0, i32 0 %2 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !60 %sub.ptr.lhs.cast = ptrtoint %"struct.thrust::pair"* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %"struct.thrust::pair"* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 ret i64 %sub.ptr.div } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.51"* %i, %"class.thrust::detail::normal_iterator.51"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.51"* %i, %"class.thrust::detail::normal_iterator.51"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.51"* %i, %"class.thrust::detail::normal_iterator.51"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.51"* %1 to %"class.thrust::iterator_facade.53"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEpLEl(%"class.thrust::iterator_facade.53"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEpLEl(%"class.thrust::iterator_facade.53"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.53"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.53"* %this, %"class.thrust::iterator_facade.53"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.53"*, %"class.thrust::iterator_facade.53"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.53"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEEEvRT_NS8_15difference_typeE(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.51"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIaaEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.53"* %this1) ret %"class.thrust::detail::normal_iterator.51"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPNS_4pairIaaEEEEEEvRT_NS8_15difference_typeE(%"class.thrust::detail::normal_iterator.51"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.51"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.51"* %f, %"class.thrust::detail::normal_iterator.51"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.51"*, %"class.thrust::detail::normal_iterator.51"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.51"* %0 to %"class.thrust::iterator_adaptor.52"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E7advanceEl(%"class.thrust::iterator_adaptor.52"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIaaEEEES5_NS_11use_defaultES7_S7_S7_S7_E7advanceEl(%"class.thrust::iterator_adaptor.52"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.52"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.52"* %this, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.52"*, %"class.thrust::iterator_adaptor.52"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.52", %"class.thrust::iterator_adaptor.52"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair"*, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !60 %add.ptr = getelementptr inbounds %"struct.thrust::pair", %"struct.thrust::pair"* %1, i64 %0 store %"struct.thrust::pair"* %add.ptr, %"struct.thrust::pair"** %m_iterator, align 8, !tbaa !60 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN17TestPairScanByKeyIsEclEm(%struct.TestPairScanByKey.467* %this, i64 %n) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %struct.TestPairScanByKey.467*, align 8 %n.addr = alloca i64, align 8 %h_p1 = alloca %"class.thrust::host_vector.469", align 8 %h_p2 = alloca %"class.thrust::host_vector.469", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %h_pairs = alloca %"class.thrust::host_vector.478", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp12 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp17 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp22 = alloca %struct.make_pair_functor, align 1 %coerce = alloca %"class.thrust::detail::normal_iterator.484", align 8 %d_p1 = alloca %"class.thrust::device_vector.488", align 8 %d_p2 = alloca %"class.thrust::device_vector.488", align 8 %d_pairs = alloca %"class.thrust::device_vector.500", align 8 %h_keys = alloca %"class.thrust::host_vector.469", align 8 %ref.tmp = alloca %"class.thrust::host_vector.73", align 8 %d_keys = alloca %"class.thrust::device_vector.488", align 8 %init = alloca %"struct.thrust::pair.487", align 2 %ref.tmp46 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp51 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp57 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp62 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp67 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp72 = alloca %"struct.thrust::pair.487", align 2 %agg.tmp73 = alloca %"struct.thrust::equal_to.512", align 1 %agg.tmp74 = alloca %struct.add_pairs, align 1 %coerce85 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp88 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp96 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp104 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp112 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp120 = alloca %"struct.thrust::pair.487", align 2 %agg.tmp121 = alloca %"struct.thrust::equal_to.512", align 1 %agg.tmp122 = alloca %struct.add_pairs, align 1 %coerce145 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %ref.tmp151 = alloca %"class.std::basic_string", align 8 %ref.tmp152 = alloca %"class.std::allocator", align 1 store %struct.TestPairScanByKey.467* %this, %struct.TestPairScanByKey.467** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %struct.TestPairScanByKey.467*, %struct.TestPairScanByKey.467** %this.addr, align 8 %0 = bitcast %"class.thrust::host_vector.469"* %h_p1 to i8* call void @llvm.lifetime.start(i64 32, i8* %0) #5 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN8unittest15random_integersIsEEN6thrust11host_vectorIT_SaIS3_EEEm(%"class.thrust::host_vector.469"* sret %h_p1, i64 %1) %2 = bitcast %"class.thrust::host_vector.469"* %h_p2 to i8* call void @llvm.lifetime.start(i64 32, i8* %2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN8unittest15random_integersIsEEN6thrust11host_vectorIT_SaIS3_EEEm(%"class.thrust::host_vector.469"* sret %h_p2, i64 %3) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %4 = bitcast %"class.thrust::host_vector.478"* %h_pairs to i8* call void @llvm.lifetime.start(i64 32, i8* %4) #5 %5 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust11host_vectorINS_4pairIssEESaIS2_EEC2Em(%"class.thrust::host_vector.478"* %h_pairs, i64 %5) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont %6 = bitcast %"class.thrust::host_vector.469"* %h_p1 to %"class.thrust::detail::vector_base.470"* %call = invoke i16* @_ZN6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %6) to label %invoke.cont5 unwind label %lpad4 invoke.cont5: ; preds = %invoke.cont3 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive6, align 8 %7 = bitcast %"class.thrust::host_vector.469"* %h_p1 to %"class.thrust::detail::vector_base.470"* %call9 = invoke i16* @_ZN6thrust6detail11vector_baseIsSaIsEE3endEv(%"class.thrust::detail::vector_base.470"* %7) to label %invoke.cont8 unwind label %lpad4 invoke.cont8: ; preds = %invoke.cont5 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp7, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive10, i32 0, i32 0 store i16* %call9, i16** %coerce.dive11, align 8 %8 = bitcast %"class.thrust::host_vector.469"* %h_p2 to %"class.thrust::detail::vector_base.470"* %call14 = invoke i16* @_ZN6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %8) to label %invoke.cont13 unwind label %lpad4 invoke.cont13: ; preds = %invoke.cont8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp12, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive15, i32 0, i32 0 store i16* %call14, i16** %coerce.dive16, align 8 %9 = bitcast %"class.thrust::host_vector.478"* %h_pairs to %"class.thrust::detail::vector_base.479"* %call19 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.479"* %9) to label %invoke.cont18 unwind label %lpad4 invoke.cont18: ; preds = %invoke.cont13 %coerce.dive20 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp17, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive20, i32 0, i32 0 store %"struct.thrust::pair.487"* %call19, %"struct.thrust::pair.487"** %coerce.dive21, align 8 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive23, i32 0, i32 0 %10 = load i16*, i16** %coerce.dive24, align 8 %coerce.dive25 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp7, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive25, i32 0, i32 0 %11 = load i16*, i16** %coerce.dive26, align 8 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp12, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive27, i32 0, i32 0 %12 = load i16*, i16** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp17, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive29, i32 0, i32 0 %13 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive30, align 8 %call32 = invoke %"struct.thrust::pair.487"* @_ZN6thrust9transformINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEE17make_pair_functorEET1_T_SB_T0_SA_T2_(i16* %10, i16* %11, i16* %12, %"struct.thrust::pair.487"* %13) to label %invoke.cont31 unwind label %lpad4 invoke.cont31: ; preds = %invoke.cont18 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %coerce, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive33, i32 0, i32 0 store %"struct.thrust::pair.487"* %call32, %"struct.thrust::pair.487"** %coerce.dive34, align 8 %14 = bitcast %"class.thrust::device_vector.488"* %d_p1 to i8* call void @llvm.lifetime.start(i64 32, i8* %14) #5 invoke void @_ZN6thrust13device_vectorIsNS_23device_malloc_allocatorIsEEEC2IsSaIsEEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector.488"* %d_p1, %"class.thrust::host_vector.469"* dereferenceable(32) %h_p1) to label %invoke.cont35 unwind label %lpad4 invoke.cont35: ; preds = %invoke.cont31 %15 = bitcast %"class.thrust::device_vector.488"* %d_p2 to i8* call void @llvm.lifetime.start(i64 32, i8* %15) #5 invoke void @_ZN6thrust13device_vectorIsNS_23device_malloc_allocatorIsEEEC2IsSaIsEEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector.488"* %d_p2, %"class.thrust::host_vector.469"* dereferenceable(32) %h_p2) to label %invoke.cont37 unwind label %lpad36 invoke.cont37: ; preds = %invoke.cont35 %16 = bitcast %"class.thrust::device_vector.500"* %d_pairs to i8* call void @llvm.lifetime.start(i64 32, i8* %16) #5 invoke void @_ZN6thrust13device_vectorINS_4pairIssEENS_23device_malloc_allocatorIS2_EEEC2IS2_SaIS2_EEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector.500"* %d_pairs, %"class.thrust::host_vector.478"* dereferenceable(32) %h_pairs) to label %invoke.cont39 unwind label %lpad38 invoke.cont39: ; preds = %invoke.cont37 %17 = bitcast %"class.thrust::host_vector.469"* %h_keys to i8* call void @llvm.lifetime.start(i64 32, i8* %17) #5 %18 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN8unittest15random_integersIbEEN6thrust11host_vectorIT_SaIS3_EEEm(%"class.thrust::host_vector.73"* sret %ref.tmp, i64 %18) to label %invoke.cont41 unwind label %lpad40 invoke.cont41: ; preds = %invoke.cont39 invoke void @_ZN6thrust11host_vectorIsSaIsEEC2IbSaIbEEERKNS0_IT_T0_EE(%"class.thrust::host_vector.469"* %h_keys, %"class.thrust::host_vector.73"* dereferenceable(32) %ref.tmp) to label %invoke.cont43 unwind label %lpad42 invoke.cont43: ; preds = %invoke.cont41 call void bitcast (void (%"class.thrust::detail::vector_base.74"*)* @_ZN6thrust6detail11vector_baseIbSaIbEED2Ev to void (%"class.thrust::host_vector.73"*)*)(%"class.thrust::host_vector.73"* %ref.tmp) #5 %19 = bitcast %"class.thrust::device_vector.488"* %d_keys to i8* call void @llvm.lifetime.start(i64 32, i8* %19) #5 invoke void @_ZN6thrust13device_vectorIsNS_23device_malloc_allocatorIsEEEC2IsSaIsEEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector.488"* %d_keys, %"class.thrust::host_vector.469"* dereferenceable(32) %h_keys) to label %invoke.cont45 unwind label %lpad44 invoke.cont45: ; preds = %invoke.cont43 %20 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 %call49 = invoke i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 13, i32 13) to label %invoke.cont48 unwind label %lpad47 invoke.cont48: ; preds = %invoke.cont45 %21 = bitcast %"struct.thrust::pair.82"* %ref.tmp46 to i64* store i64 %call49, i64* %21, align 4 invoke void @_ZN6thrust4pairIssEC2IiiEERKNS0_IT_T0_EE(%"struct.thrust::pair.487"* %init, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp46) to label %invoke.cont50 unwind label %lpad47 invoke.cont50: ; preds = %invoke.cont48 %22 = bitcast %"class.thrust::host_vector.469"* %h_keys to %"class.thrust::detail::vector_base.470"* %call54 = invoke i16* @_ZN6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %22) to label %invoke.cont53 unwind label %lpad52 invoke.cont53: ; preds = %invoke.cont50 %coerce.dive55 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp51, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive55, i32 0, i32 0 store i16* %call54, i16** %coerce.dive56, align 8 %23 = bitcast %"class.thrust::host_vector.469"* %h_keys to %"class.thrust::detail::vector_base.470"* %call59 = invoke i16* @_ZN6thrust6detail11vector_baseIsSaIsEE3endEv(%"class.thrust::detail::vector_base.470"* %23) to label %invoke.cont58 unwind label %lpad52 invoke.cont58: ; preds = %invoke.cont53 %coerce.dive60 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp57, i32 0, i32 0 %coerce.dive61 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive60, i32 0, i32 0 store i16* %call59, i16** %coerce.dive61, align 8 %24 = bitcast %"class.thrust::host_vector.478"* %h_pairs to %"class.thrust::detail::vector_base.479"* %call64 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.479"* %24) to label %invoke.cont63 unwind label %lpad52 invoke.cont63: ; preds = %invoke.cont58 %coerce.dive65 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp62, i32 0, i32 0 %coerce.dive66 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive65, i32 0, i32 0 store %"struct.thrust::pair.487"* %call64, %"struct.thrust::pair.487"** %coerce.dive66, align 8 %25 = bitcast %"class.thrust::host_vector.478"* %h_pairs to %"class.thrust::detail::vector_base.479"* %call69 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.479"* %25) to label %invoke.cont68 unwind label %lpad52 invoke.cont68: ; preds = %invoke.cont63 %coerce.dive70 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp67, i32 0, i32 0 %coerce.dive71 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive70, i32 0, i32 0 store %"struct.thrust::pair.487"* %call69, %"struct.thrust::pair.487"** %coerce.dive71, align 8 %26 = bitcast %"struct.thrust::pair.487"* %agg.tmp72 to i8* %27 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %26, i8* %27, i64 4, i32 2, i1 false), !tbaa.struct !345 %coerce.dive75 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp51, i32 0, i32 0 %coerce.dive76 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive75, i32 0, i32 0 %28 = load i16*, i16** %coerce.dive76, align 8 %coerce.dive77 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp57, i32 0, i32 0 %coerce.dive78 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive77, i32 0, i32 0 %29 = load i16*, i16** %coerce.dive78, align 8 %coerce.dive79 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp62, i32 0, i32 0 %coerce.dive80 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive79, i32 0, i32 0 %30 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive80, align 8 %coerce.dive81 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp67, i32 0, i32 0 %coerce.dive82 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive81, i32 0, i32 0 %31 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive82, align 8 %32 = bitcast %"struct.thrust::pair.487"* %agg.tmp72 to i32* %33 = load i32, i32* %32, align 2 %call84 = invoke %"struct.thrust::pair.487"* @_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorIPsEENS2_IPNS_4pairIssEEEES8_S6_NS_8equal_toIsEE9add_pairsEET1_T_SD_T0_SC_T2_T3_T4_(i16* %28, i16* %29, %"struct.thrust::pair.487"* %30, %"struct.thrust::pair.487"* %31, i32 %33) to label %invoke.cont83 unwind label %lpad52 invoke.cont83: ; preds = %invoke.cont68 %coerce.dive86 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %coerce85, i32 0, i32 0 %coerce.dive87 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive86, i32 0, i32 0 store %"struct.thrust::pair.487"* %call84, %"struct.thrust::pair.487"** %coerce.dive87, align 8 %34 = bitcast %"class.thrust::device_vector.488"* %d_keys to %"class.thrust::detail::vector_base.489"* %call90 = invoke i16* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE5beginEv(%"class.thrust::detail::vector_base.489"* %34) to label %invoke.cont89 unwind label %lpad52 invoke.cont89: ; preds = %invoke.cont83 %coerce.dive91 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp88, i32 0, i32 0 %coerce.dive92 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive91, i32 0, i32 0 %coerce.dive93 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive92, i32 0, i32 0 %coerce.dive94 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive93, i32 0, i32 0 %coerce.dive95 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive94, i32 0, i32 0 store i16* %call90, i16** %coerce.dive95, align 8 %35 = bitcast %"class.thrust::device_vector.488"* %d_keys to %"class.thrust::detail::vector_base.489"* %call98 = invoke i16* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE3endEv(%"class.thrust::detail::vector_base.489"* %35) to label %invoke.cont97 unwind label %lpad52 invoke.cont97: ; preds = %invoke.cont89 %coerce.dive99 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp96, i32 0, i32 0 %coerce.dive100 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive99, i32 0, i32 0 %coerce.dive101 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive100, i32 0, i32 0 %coerce.dive102 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive101, i32 0, i32 0 %coerce.dive103 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive102, i32 0, i32 0 store i16* %call98, i16** %coerce.dive103, align 8 %36 = bitcast %"class.thrust::device_vector.500"* %d_pairs to %"class.thrust::detail::vector_base.501"* %call106 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.501"* %36) to label %invoke.cont105 unwind label %lpad52 invoke.cont105: ; preds = %invoke.cont97 %coerce.dive107 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp104, i32 0, i32 0 %coerce.dive108 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive107, i32 0, i32 0 %coerce.dive109 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive108, i32 0, i32 0 %coerce.dive110 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive109, i32 0, i32 0 %coerce.dive111 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive110, i32 0, i32 0 store %"struct.thrust::pair.487"* %call106, %"struct.thrust::pair.487"** %coerce.dive111, align 8 %37 = bitcast %"class.thrust::device_vector.500"* %d_pairs to %"class.thrust::detail::vector_base.501"* %call114 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.501"* %37) to label %invoke.cont113 unwind label %lpad52 invoke.cont113: ; preds = %invoke.cont105 %coerce.dive115 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp112, i32 0, i32 0 %coerce.dive116 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive115, i32 0, i32 0 %coerce.dive117 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive116, i32 0, i32 0 %coerce.dive118 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive117, i32 0, i32 0 %coerce.dive119 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive118, i32 0, i32 0 store %"struct.thrust::pair.487"* %call114, %"struct.thrust::pair.487"** %coerce.dive119, align 8 %38 = bitcast %"struct.thrust::pair.487"* %agg.tmp120 to i8* %39 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %38, i8* %39, i64 4, i32 2, i1 false), !tbaa.struct !345 %coerce.dive123 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp88, i32 0, i32 0 %coerce.dive124 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive123, i32 0, i32 0 %coerce.dive125 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive124, i32 0, i32 0 %coerce.dive126 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive125, i32 0, i32 0 %coerce.dive127 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive126, i32 0, i32 0 %40 = load i16*, i16** %coerce.dive127, align 8 %coerce.dive128 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp96, i32 0, i32 0 %coerce.dive129 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive128, i32 0, i32 0 %coerce.dive130 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive129, i32 0, i32 0 %coerce.dive131 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive130, i32 0, i32 0 %coerce.dive132 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive131, i32 0, i32 0 %41 = load i16*, i16** %coerce.dive132, align 8 %coerce.dive133 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp104, i32 0, i32 0 %coerce.dive134 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive133, i32 0, i32 0 %coerce.dive135 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive134, i32 0, i32 0 %coerce.dive136 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive135, i32 0, i32 0 %coerce.dive137 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive136, i32 0, i32 0 %42 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive137, align 8 %coerce.dive138 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp112, i32 0, i32 0 %coerce.dive139 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive138, i32 0, i32 0 %coerce.dive140 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive139, i32 0, i32 0 %coerce.dive141 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive140, i32 0, i32 0 %coerce.dive142 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive141, i32 0, i32 0 %43 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive142, align 8 %44 = bitcast %"struct.thrust::pair.487"* %agg.tmp120 to i32* %45 = load i32, i32* %44, align 2 %call144 = invoke %"struct.thrust::pair.487"* @_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorINS_10device_ptrIsEEEENS2_INS3_INS_4pairIssEEEEEES9_S7_NS_8equal_toIsEE9add_pairsEET1_T_SE_T0_SD_T2_T3_T4_(i16* %40, i16* %41, %"struct.thrust::pair.487"* %42, %"struct.thrust::pair.487"* %43, i32 %45) to label %invoke.cont143 unwind label %lpad52 invoke.cont143: ; preds = %invoke.cont113 %coerce.dive146 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %coerce145, i32 0, i32 0 %coerce.dive147 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive146, i32 0, i32 0 %coerce.dive148 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive147, i32 0, i32 0 %coerce.dive149 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive148, i32 0, i32 0 %coerce.dive150 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive149, i32 0, i32 0 store %"struct.thrust::pair.487"* %call144, %"struct.thrust::pair.487"** %coerce.dive150, align 8 call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp152) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp151, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.22, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp152) to label %invoke.cont154 unwind label %lpad153 invoke.cont154: ; preds = %invoke.cont143 invoke void @_ZN8unittest18assert_equal_quietIN6thrust11host_vectorINS1_4pairIssEESaIS4_EEENS1_13device_vectorIS4_NS1_23device_malloc_allocatorIS4_EEEEEEvRKT_RKT0_RKSsi(%"class.thrust::host_vector.478"* dereferenceable(32) %h_pairs, %"class.thrust::device_vector.500"* dereferenceable(32) %d_pairs, %"class.std::basic_string"* dereferenceable(8) %ref.tmp151, i32 57) to label %invoke.cont156 unwind label %lpad155 invoke.cont156: ; preds = %invoke.cont154 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp151) #5 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp152) #5 %46 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.lifetime.end(i64 4, i8* %46) #5 call void bitcast (void (%"class.thrust::detail::vector_base.489"*)* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEED2Ev to void (%"class.thrust::device_vector.488"*)*)(%"class.thrust::device_vector.488"* %d_keys) #5 %47 = bitcast %"class.thrust::device_vector.488"* %d_keys to i8* call void @llvm.lifetime.end(i64 32, i8* %47) #5 call void bitcast (void (%"class.thrust::detail::vector_base.470"*)* @_ZN6thrust6detail11vector_baseIsSaIsEED2Ev to void (%"class.thrust::host_vector.469"*)*)(%"class.thrust::host_vector.469"* %h_keys) #5 %48 = bitcast %"class.thrust::host_vector.469"* %h_keys to i8* call void @llvm.lifetime.end(i64 32, i8* %48) #5 call void bitcast (void (%"class.thrust::detail::vector_base.501"*)* @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEED2Ev to void (%"class.thrust::device_vector.500"*)*)(%"class.thrust::device_vector.500"* %d_pairs) #5 %49 = bitcast %"class.thrust::device_vector.500"* %d_pairs to i8* call void @llvm.lifetime.end(i64 32, i8* %49) #5 call void bitcast (void (%"class.thrust::detail::vector_base.489"*)* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEED2Ev to void (%"class.thrust::device_vector.488"*)*)(%"class.thrust::device_vector.488"* %d_p2) #5 %50 = bitcast %"class.thrust::device_vector.488"* %d_p2 to i8* call void @llvm.lifetime.end(i64 32, i8* %50) #5 call void bitcast (void (%"class.thrust::detail::vector_base.489"*)* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEED2Ev to void (%"class.thrust::device_vector.488"*)*)(%"class.thrust::device_vector.488"* %d_p1) #5 %51 = bitcast %"class.thrust::device_vector.488"* %d_p1 to i8* call void @llvm.lifetime.end(i64 32, i8* %51) #5 call void bitcast (void (%"class.thrust::detail::vector_base.479"*)* @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EED2Ev to void (%"class.thrust::host_vector.478"*)*)(%"class.thrust::host_vector.478"* %h_pairs) #5 %52 = bitcast %"class.thrust::host_vector.478"* %h_pairs to i8* call void @llvm.lifetime.end(i64 32, i8* %52) #5 call void bitcast (void (%"class.thrust::detail::vector_base.470"*)* @_ZN6thrust6detail11vector_baseIsSaIsEED2Ev to void (%"class.thrust::host_vector.469"*)*)(%"class.thrust::host_vector.469"* %h_p2) #5 %53 = bitcast %"class.thrust::host_vector.469"* %h_p2 to i8* call void @llvm.lifetime.end(i64 32, i8* %53) #5 call void bitcast (void (%"class.thrust::detail::vector_base.470"*)* @_ZN6thrust6detail11vector_baseIsSaIsEED2Ev to void (%"class.thrust::host_vector.469"*)*)(%"class.thrust::host_vector.469"* %h_p1) #5 %54 = bitcast %"class.thrust::host_vector.469"* %h_p1 to i8* call void @llvm.lifetime.end(i64 32, i8* %54) #5 ret void lpad: ; preds = %entry %55 = landingpad { i8*, i32 } cleanup %56 = extractvalue { i8*, i32 } %55, 0 store i8* %56, i8** %exn.slot, align 8 %57 = extractvalue { i8*, i32 } %55, 1 store i32 %57, i32* %ehselector.slot, align 4 br label %ehcleanup172 lpad2: ; preds = %invoke.cont %58 = landingpad { i8*, i32 } cleanup %59 = extractvalue { i8*, i32 } %58, 0 store i8* %59, i8** %exn.slot, align 8 %60 = extractvalue { i8*, i32 } %58, 1 store i32 %60, i32* %ehselector.slot, align 4 br label %ehcleanup170 lpad4: ; preds = %invoke.cont31, %invoke.cont18, %invoke.cont13, %invoke.cont8, %invoke.cont5, %invoke.cont3 %61 = landingpad { i8*, i32 } cleanup %62 = extractvalue { i8*, i32 } %61, 0 store i8* %62, i8** %exn.slot, align 8 %63 = extractvalue { i8*, i32 } %61, 1 store i32 %63, i32* %ehselector.slot, align 4 br label %ehcleanup168 lpad36: ; preds = %invoke.cont35 %64 = landingpad { i8*, i32 } cleanup %65 = extractvalue { i8*, i32 } %64, 0 store i8* %65, i8** %exn.slot, align 8 %66 = extractvalue { i8*, i32 } %64, 1 store i32 %66, i32* %ehselector.slot, align 4 br label %ehcleanup166 lpad38: ; preds = %invoke.cont37 %67 = landingpad { i8*, i32 } cleanup %68 = extractvalue { i8*, i32 } %67, 0 store i8* %68, i8** %exn.slot, align 8 %69 = extractvalue { i8*, i32 } %67, 1 store i32 %69, i32* %ehselector.slot, align 4 br label %ehcleanup164 lpad40: ; preds = %invoke.cont39 %70 = landingpad { i8*, i32 } cleanup %71 = extractvalue { i8*, i32 } %70, 0 store i8* %71, i8** %exn.slot, align 8 %72 = extractvalue { i8*, i32 } %70, 1 store i32 %72, i32* %ehselector.slot, align 4 br label %ehcleanup162 lpad42: ; preds = %invoke.cont41 %73 = landingpad { i8*, i32 } cleanup %74 = extractvalue { i8*, i32 } %73, 0 store i8* %74, i8** %exn.slot, align 8 %75 = extractvalue { i8*, i32 } %73, 1 store i32 %75, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::vector_base.74"*)* @_ZN6thrust6detail11vector_baseIbSaIbEED2Ev to void (%"class.thrust::host_vector.73"*)*)(%"class.thrust::host_vector.73"* %ref.tmp) #5 br label %ehcleanup162 lpad44: ; preds = %invoke.cont43 %76 = landingpad { i8*, i32 } cleanup %77 = extractvalue { i8*, i32 } %76, 0 store i8* %77, i8** %exn.slot, align 8 %78 = extractvalue { i8*, i32 } %76, 1 store i32 %78, i32* %ehselector.slot, align 4 br label %ehcleanup160 lpad47: ; preds = %invoke.cont48, %invoke.cont45 %79 = landingpad { i8*, i32 } cleanup %80 = extractvalue { i8*, i32 } %79, 0 store i8* %80, i8** %exn.slot, align 8 %81 = extractvalue { i8*, i32 } %79, 1 store i32 %81, i32* %ehselector.slot, align 4 br label %ehcleanup158 lpad52: ; preds = %invoke.cont113, %invoke.cont105, %invoke.cont97, %invoke.cont89, %invoke.cont83, %invoke.cont68, %invoke.cont63, %invoke.cont58, %invoke.cont53, %invoke.cont50 %82 = landingpad { i8*, i32 } cleanup %83 = extractvalue { i8*, i32 } %82, 0 store i8* %83, i8** %exn.slot, align 8 %84 = extractvalue { i8*, i32 } %82, 1 store i32 %84, i32* %ehselector.slot, align 4 br label %ehcleanup157 lpad153: ; preds = %invoke.cont143 %85 = landingpad { i8*, i32 } cleanup %86 = extractvalue { i8*, i32 } %85, 0 store i8* %86, i8** %exn.slot, align 8 %87 = extractvalue { i8*, i32 } %85, 1 store i32 %87, i32* %ehselector.slot, align 4 br label %ehcleanup lpad155: ; preds = %invoke.cont154 %88 = landingpad { i8*, i32 } cleanup %89 = extractvalue { i8*, i32 } %88, 0 store i8* %89, i8** %exn.slot, align 8 %90 = extractvalue { i8*, i32 } %88, 1 store i32 %90, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp151) #5 br label %ehcleanup ehcleanup: ; preds = %lpad155, %lpad153 call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp152) #5 br label %ehcleanup157 ehcleanup157: ; preds = %ehcleanup, %lpad52 %91 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.lifetime.end(i64 4, i8* %91) #5 br label %ehcleanup158 ehcleanup158: ; preds = %ehcleanup157, %lpad47 call void bitcast (void (%"class.thrust::detail::vector_base.489"*)* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEED2Ev to void (%"class.thrust::device_vector.488"*)*)(%"class.thrust::device_vector.488"* %d_keys) #5 %92 = bitcast %"class.thrust::device_vector.488"* %d_keys to i8* call void @llvm.lifetime.end(i64 32, i8* %92) #5 br label %ehcleanup160 ehcleanup160: ; preds = %ehcleanup158, %lpad44 call void bitcast (void (%"class.thrust::detail::vector_base.470"*)* @_ZN6thrust6detail11vector_baseIsSaIsEED2Ev to void (%"class.thrust::host_vector.469"*)*)(%"class.thrust::host_vector.469"* %h_keys) #5 %93 = bitcast %"class.thrust::host_vector.469"* %h_keys to i8* call void @llvm.lifetime.end(i64 32, i8* %93) #5 br label %ehcleanup162 ehcleanup162: ; preds = %ehcleanup160, %lpad42, %lpad40 call void bitcast (void (%"class.thrust::detail::vector_base.501"*)* @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEED2Ev to void (%"class.thrust::device_vector.500"*)*)(%"class.thrust::device_vector.500"* %d_pairs) #5 %94 = bitcast %"class.thrust::device_vector.500"* %d_pairs to i8* call void @llvm.lifetime.end(i64 32, i8* %94) #5 br label %ehcleanup164 ehcleanup164: ; preds = %ehcleanup162, %lpad38 call void bitcast (void (%"class.thrust::detail::vector_base.489"*)* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEED2Ev to void (%"class.thrust::device_vector.488"*)*)(%"class.thrust::device_vector.488"* %d_p2) #5 %95 = bitcast %"class.thrust::device_vector.488"* %d_p2 to i8* call void @llvm.lifetime.end(i64 32, i8* %95) #5 br label %ehcleanup166 ehcleanup166: ; preds = %ehcleanup164, %lpad36 call void bitcast (void (%"class.thrust::detail::vector_base.489"*)* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEED2Ev to void (%"class.thrust::device_vector.488"*)*)(%"class.thrust::device_vector.488"* %d_p1) #5 %96 = bitcast %"class.thrust::device_vector.488"* %d_p1 to i8* call void @llvm.lifetime.end(i64 32, i8* %96) #5 br label %ehcleanup168 ehcleanup168: ; preds = %ehcleanup166, %lpad4 call void bitcast (void (%"class.thrust::detail::vector_base.479"*)* @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EED2Ev to void (%"class.thrust::host_vector.478"*)*)(%"class.thrust::host_vector.478"* %h_pairs) #5 %97 = bitcast %"class.thrust::host_vector.478"* %h_pairs to i8* call void @llvm.lifetime.end(i64 32, i8* %97) #5 br label %ehcleanup170 ehcleanup170: ; preds = %ehcleanup168, %lpad2 call void bitcast (void (%"class.thrust::detail::vector_base.470"*)* @_ZN6thrust6detail11vector_baseIsSaIsEED2Ev to void (%"class.thrust::host_vector.469"*)*)(%"class.thrust::host_vector.469"* %h_p2) #5 %98 = bitcast %"class.thrust::host_vector.469"* %h_p2 to i8* call void @llvm.lifetime.end(i64 32, i8* %98) #5 br label %ehcleanup172 ehcleanup172: ; preds = %ehcleanup170, %lpad call void bitcast (void (%"class.thrust::detail::vector_base.470"*)* @_ZN6thrust6detail11vector_baseIsSaIsEED2Ev to void (%"class.thrust::host_vector.469"*)*)(%"class.thrust::host_vector.469"* %h_p1) #5 %99 = bitcast %"class.thrust::host_vector.469"* %h_p1 to i8* call void @llvm.lifetime.end(i64 32, i8* %99) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup172 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val174 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val174 } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeyiLj2EEclImEEvT_(%"struct.unittest::for_each_type.468"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.unittest::for_each_type.468"*, align 8 %n.addr = alloca i64, align 8 %f = alloca %struct.TestPairScanByKey.833, align 1 %loop = alloca %"struct.unittest::for_each_type.834", align 1 store %"struct.unittest::for_each_type.468"* %this, %"struct.unittest::for_each_type.468"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"struct.unittest::for_each_type.468"*, %"struct.unittest::for_each_type.468"** %this.addr, align 8 %0 = bitcast %struct.TestPairScanByKey.833* %f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN17TestPairScanByKeyIiEclEm(%struct.TestPairScanByKey.833* %f, i64 %1) %2 = bitcast %"struct.unittest::for_each_type.834"* %loop to i8* call void @llvm.lifetime.start(i64 1, i8* %2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN8unittest13for_each_typeINS_9type_listIasiNS_9null_typeES2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_S2_EE17TestPairScanByKeyS2_Lj3EEclImEEvT_(%"struct.unittest::for_each_type.834"* %loop, i64 %3) %4 = bitcast %"struct.unittest::for_each_type.834"* %loop to i8* call void @llvm.lifetime.end(i64 1, i8* %4) #5 %5 = bitcast %struct.TestPairScanByKey.833* %f to i8* call void @llvm.lifetime.end(i64 1, i8* %5) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest15random_integersIsEEN6thrust11host_vectorIT_SaIS3_EEEm(%"class.thrust::host_vector.469"* noalias sret %agg.result, i64 %N) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %N.addr = alloca i64, align 8 %nrvo = alloca i1, align 1 %agg.tmp = alloca %"class.thrust::counting_iterator", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp1 = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp6 = alloca %"struct.unittest::random_integer.513", align 1 %coerce = alloca %"class.thrust::detail::normal_iterator.475", align 8 store i64 %N, i64* %N.addr, align 8, !tbaa !13 store i1 false, i1* %nrvo, align 1 %0 = load i64, i64* %N.addr, align 8, !tbaa !13 call void @_ZN6thrust11host_vectorIsSaIsEEC2Em(%"class.thrust::host_vector.469"* %agg.result, i64 %0) invoke void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2Em(%"class.thrust::counting_iterator"* %agg.tmp, i64 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %1 = load i64, i64* %N.addr, align 8, !tbaa !13 invoke void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2Em(%"class.thrust::counting_iterator"* %agg.tmp1, i64 %1) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %2 = bitcast %"class.thrust::host_vector.469"* %agg.result to %"class.thrust::detail::vector_base.470"* %call = invoke i16* @_ZN6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont2 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive5, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp3, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive7, i32 0, i32 0 %3 = load i16*, i16** %coerce.dive8, align 8 %call10 = invoke i16* @_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEEN8unittest14random_integerIsLb0EEEEET0_T_SC_SB_T1_(%"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* %agg.tmp1, i16* %3) to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont4 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %coerce, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive11, i32 0, i32 0 store i16* %call10, i16** %coerce.dive12, align 8 store i1 true, i1* %nrvo, align 1 %nrvo.val = load i1, i1* %nrvo, align 1 br i1 %nrvo.val, label %nrvo.skipdtor, label %nrvo.unused lpad: ; preds = %invoke.cont4, %invoke.cont2, %invoke.cont, %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::vector_base.470"*)* @_ZN6thrust6detail11vector_baseIsSaIsEED2Ev to void (%"class.thrust::host_vector.469"*)*)(%"class.thrust::host_vector.469"* %agg.result) #5 br label %eh.resume nrvo.unused: ; preds = %invoke.cont9 call void bitcast (void (%"class.thrust::detail::vector_base.470"*)* @_ZN6thrust6detail11vector_baseIsSaIsEED2Ev to void (%"class.thrust::host_vector.469"*)*)(%"class.thrust::host_vector.469"* %agg.result) #5 br label %nrvo.skipdtor nrvo.skipdtor: ; preds = %nrvo.unused, %invoke.cont9 ret void eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val13 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val13 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust11host_vectorINS_4pairIssEESaIS2_EEC2Em(%"class.thrust::host_vector.478"* %this, i64 %n) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::host_vector.478"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::host_vector.478"* %this, %"class.thrust::host_vector.478"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::host_vector.478"*, %"class.thrust::host_vector.478"** %this.addr, align 8 %0 = bitcast %"class.thrust::host_vector.478"* %this1 to %"class.thrust::detail::vector_base.479"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEC2Em(%"class.thrust::detail::vector_base.479"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust9transformINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEE17make_pair_functorEET1_T_SB_T0_SA_T2_(i16* %first1.coerce, i16* %last1.coerce, i16* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.484", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %result = alloca %"class.thrust::detail::normal_iterator.484", align 8 %op = alloca %struct.make_pair_functor, align 1 %system1 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %system2 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %system3 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp11 = alloca %struct.make_pair_functor, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive2, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive4, i32 0, i32 0 store i16* %first2.coerce, i16** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive7, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to i8* call void @llvm.lifetime.start(i64 1, i8* %2) #5 %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to %"struct.thrust::execution_policy.88"* %4 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to %"struct.thrust::execution_policy.88"* %5 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to %"struct.thrust::execution_policy.88"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %3, %"struct.thrust::execution_policy.88"* dereferenceable(1) %4, %"struct.thrust::execution_policy.88"* dereferenceable(1) %5) %6 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* %7 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp8 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.475"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp9 to i8* %12 = bitcast %"class.thrust::detail::normal_iterator.475"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %13 = bitcast %"class.thrust::detail::normal_iterator.484"* %agg.tmp10 to i8* %14 = bitcast %"class.thrust::detail::normal_iterator.484"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 8, i32 8, i1 false) %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive12, i32 0, i32 0 %15 = load i16*, i16** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive14, i32 0, i32 0 %16 = load i16*, i16** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive16, i32 0, i32 0 %17 = load i16*, i16** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp10, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive18, i32 0, i32 0 %18 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive19, align 8 %call20 = call %"struct.thrust::pair.487"* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPsEES8_NS6_IPNS_4pairIssEEEE17make_pair_functorEET2_RKNS5_21execution_policy_baseIT_EET0_SK_T1_SE_T3_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %6, i16* %15, i16* %16, i16* %17, %"struct.thrust::pair.487"* %18) %coerce.dive21 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive21, i32 0, i32 0 store %"struct.thrust::pair.487"* %call20, %"struct.thrust::pair.487"** %coerce.dive22, align 8 %19 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to i8* call void @llvm.lifetime.end(i64 1, i8* %19) #5 %20 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %20) #5 %21 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %21) #5 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive23, i32 0, i32 0 %22 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive24, align 8 ret %"struct.thrust::pair.487"* %22 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.475", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 %call = call i16* @_ZN6thrust6detail18contiguous_storageIsSaIsEE5beginEv(%"class.thrust::detail::contiguous_storage.471"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive3, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive4, align 8 ret i16* %0 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail11vector_baseIsSaIsEE3endEv(%"class.thrust::detail::vector_base.470"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.475", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %call = call i16* @_ZN6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive2, align 8 %call3 = call i64 @_ZNK6thrust6detail11vector_baseIsSaIsEE4sizeEv(%"class.thrust::detail::vector_base.470"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %retval, i64 %call3) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive4, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive5, align 8 ret i16* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.479"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.484", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.479"*, align 8 store %"class.thrust::detail::vector_base.479"* %this, %"class.thrust::detail::vector_base.479"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.479"*, %"class.thrust::detail::vector_base.479"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 0 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::contiguous_storage.480"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive3, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust13device_vectorIsNS_23device_malloc_allocatorIsEEEC2IsSaIsEEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector.488"* %this, %"class.thrust::host_vector.469"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_vector.488"*, align 8 %v.addr = alloca %"class.thrust::host_vector.469"*, align 8 store %"class.thrust::device_vector.488"* %this, %"class.thrust::device_vector.488"** %this.addr, align 8, !tbaa !1 store %"class.thrust::host_vector.469"* %v, %"class.thrust::host_vector.469"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_vector.488"*, %"class.thrust::device_vector.488"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_vector.488"* %this1 to %"class.thrust::detail::vector_base.489"* %1 = load %"class.thrust::host_vector.469"*, %"class.thrust::host_vector.469"** %v.addr, align 8 %2 = bitcast %"class.thrust::host_vector.469"* %1 to %"class.thrust::detail::vector_base.470"* call void @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEEC2IsSaIsEEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.489"* %0, %"class.thrust::detail::vector_base.470"* dereferenceable(32) %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust13device_vectorINS_4pairIssEENS_23device_malloc_allocatorIS2_EEEC2IS2_SaIS2_EEERKNS_11host_vectorIT_T0_EE(%"class.thrust::device_vector.500"* %this, %"class.thrust::host_vector.478"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_vector.500"*, align 8 %v.addr = alloca %"class.thrust::host_vector.478"*, align 8 store %"class.thrust::device_vector.500"* %this, %"class.thrust::device_vector.500"** %this.addr, align 8, !tbaa !1 store %"class.thrust::host_vector.478"* %v, %"class.thrust::host_vector.478"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_vector.500"*, %"class.thrust::device_vector.500"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_vector.500"* %this1 to %"class.thrust::detail::vector_base.501"* %1 = load %"class.thrust::host_vector.478"*, %"class.thrust::host_vector.478"** %v.addr, align 8 %2 = bitcast %"class.thrust::host_vector.478"* %1 to %"class.thrust::detail::vector_base.479"* call void @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEEC2IS3_SaIS3_EEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.501"* %0, %"class.thrust::detail::vector_base.479"* dereferenceable(32) %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust11host_vectorIsSaIsEEC2IbSaIbEEERKNS0_IT_T0_EE(%"class.thrust::host_vector.469"* %this, %"class.thrust::host_vector.73"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::host_vector.469"*, align 8 %v.addr = alloca %"class.thrust::host_vector.73"*, align 8 store %"class.thrust::host_vector.469"* %this, %"class.thrust::host_vector.469"** %this.addr, align 8, !tbaa !1 store %"class.thrust::host_vector.73"* %v, %"class.thrust::host_vector.73"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::host_vector.469"*, %"class.thrust::host_vector.469"** %this.addr, align 8 %0 = bitcast %"class.thrust::host_vector.469"* %this1 to %"class.thrust::detail::vector_base.470"* %1 = load %"class.thrust::host_vector.73"*, %"class.thrust::host_vector.73"** %v.addr, align 8 %2 = bitcast %"class.thrust::host_vector.73"* %1 to %"class.thrust::detail::vector_base.74"* call void @_ZN6thrust6detail11vector_baseIsSaIsEEC2IbSaIbEEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.470"* %0, %"class.thrust::detail::vector_base.74"* dereferenceable(32) %2) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairIssEC2IiiEERKNS0_IT_T0_EE(%"struct.thrust::pair.487"* %this, %"struct.thrust::pair.82"* dereferenceable(8) %p) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.487"*, align 8 %p.addr = alloca %"struct.thrust::pair.82"*, align 8 store %"struct.thrust::pair.487"* %this, %"struct.thrust::pair.487"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.82"* %p, %"struct.thrust::pair.82"** %p.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %p.addr, align 8 %first2 = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %0, i32 0, i32 0 %1 = load i32, i32* %first2, align 4, !tbaa !24 %conv = trunc i32 %1 to i16 store i16 %conv, i16* %first, align 2, !tbaa !348 %second = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %this1, i32 0, i32 1 %2 = load %"struct.thrust::pair.82"*, %"struct.thrust::pair.82"** %p.addr, align 8 %second3 = getelementptr inbounds %"struct.thrust::pair.82", %"struct.thrust::pair.82"* %2, i32 0, i32 1 %3 = load i32, i32* %second3, align 4, !tbaa !28 %conv4 = trunc i32 %3 to i16 store i16 %conv4, i16* %second, align 2, !tbaa !350 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorIPsEENS2_IPNS_4pairIssEEEES8_S6_NS_8equal_toIsEE9add_pairsEET1_T_SD_T0_SC_T2_T3_T4_(i16* %first1.coerce, i16* %last1.coerce, %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce, i32 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.484", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %result = alloca %"class.thrust::detail::normal_iterator.484", align 8 %init = alloca %"struct.thrust::pair.487", align 2 %binary_pred = alloca %"struct.thrust::equal_to.512", align 1 %binary_op = alloca %struct.add_pairs, align 1 %system1 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %system2 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %system3 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp12 = alloca %"struct.thrust::pair.487", align 2 %agg.tmp13 = alloca %"struct.thrust::equal_to.512", align 1 %agg.tmp14 = alloca %struct.add_pairs, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive2, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive7, align 8 %0 = bitcast %"struct.thrust::pair.487"* %init to i32* store i32 %init.coerce, i32* %0, align 2 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %2) #5 %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to i8* call void @llvm.lifetime.start(i64 1, i8* %3) #5 %4 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to %"struct.thrust::execution_policy.88"* %5 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to %"struct.thrust::execution_policy.88"* %6 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to %"struct.thrust::execution_policy.88"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %4, %"struct.thrust::execution_policy.88"* dereferenceable(1) %5, %"struct.thrust::execution_policy.88"* dereferenceable(1) %6) %7 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* %8 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp9 to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.475"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = bitcast %"class.thrust::detail::normal_iterator.484"* %agg.tmp10 to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.484"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.484"* %agg.tmp11 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.484"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"struct.thrust::pair.487"* %agg.tmp12 to i8* %17 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 4, i32 2, i1 false), !tbaa.struct !345 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive15, i32 0, i32 0 %18 = load i16*, i16** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp9, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive17, i32 0, i32 0 %19 = load i16*, i16** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp10, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive19, i32 0, i32 0 %20 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive20, align 8 %coerce.dive21 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp11, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive21, i32 0, i32 0 %21 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive22, align 8 %22 = bitcast %"struct.thrust::pair.487"* %agg.tmp12 to i32* %23 = load i32, i32* %22, align 2 %call23 = call %"struct.thrust::pair.487"* @_ZN6thrust21exclusive_scan_by_keyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPsEENS6_IPNS_4pairIssEEEESC_SA_NS_8equal_toIsEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SM_T1_SG_T3_T4_T5_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %7, i16* %18, i16* %19, %"struct.thrust::pair.487"* %20, %"struct.thrust::pair.487"* %21, i32 %23) %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive24, i32 0, i32 0 store %"struct.thrust::pair.487"* %call23, %"struct.thrust::pair.487"** %coerce.dive25, align 8 %24 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system3 to i8* call void @llvm.lifetime.end(i64 1, i8* %24) #5 %25 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %25) #5 %26 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %26) #5 %coerce.dive26 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive26, i32 0, i32 0 %27 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive27, align 8 ret %"struct.thrust::pair.487"* %27 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust21exclusive_scan_by_keyINS_6detail15normal_iteratorINS_10device_ptrIsEEEENS2_INS3_INS_4pairIssEEEEEES9_S7_NS_8equal_toIsEE9add_pairsEET1_T_SE_T0_SD_T2_T3_T4_(i16* %first1.coerce, i16* %last1.coerce, %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce, i32 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.505", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %result = alloca %"class.thrust::detail::normal_iterator.505", align 8 %init = alloca %"struct.thrust::pair.487", align 2 %binary_pred = alloca %"struct.thrust::equal_to.512", align 1 %binary_op = alloca %struct.add_pairs, align 1 %system1 = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %system2 = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %system3 = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp22 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp23 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp24 = alloca %"struct.thrust::pair.487", align 2 %agg.tmp25 = alloca %"struct.thrust::equal_to.512", align 1 %agg.tmp26 = alloca %struct.add_pairs, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive3, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive8, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive13, i32 0, i32 0 store %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive18, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive19, align 8 %0 = bitcast %"struct.thrust::pair.487"* %init to i32* store i32 %init.coerce, i32* %0, align 2 %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %2) #5 %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system3 to i8* call void @llvm.lifetime.start(i64 1, i8* %3) #5 %4 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system1 to %"struct.thrust::execution_policy.120"* %5 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system2 to %"struct.thrust::execution_policy.120"* %6 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system3 to %"struct.thrust::execution_policy.120"* %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_4cuda6detail3tagES6_S6_EERNS_6detail15lazy_disable_ifIXsr21select_system3_existsIT_T0_T1_EE5valueENS7_14minimum_systemIS9_SA_SB_NS7_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyIS9_EERNSJ_ISA_EERNSJ_ISB_EE(%"struct.thrust::execution_policy.120"* dereferenceable(1) %4, %"struct.thrust::execution_policy.120"* dereferenceable(1) %5, %"struct.thrust::execution_policy.120"* dereferenceable(1) %6) %7 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %8 = bitcast %"class.thrust::detail::normal_iterator.493"* %agg.tmp to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.493"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"class.thrust::detail::normal_iterator.493"* %agg.tmp21 to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.493"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp22 to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.505"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp23 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.505"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"struct.thrust::pair.487"* %agg.tmp24 to i8* %17 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 4, i32 2, i1 false), !tbaa.struct !345 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive27, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive30, i32 0, i32 0 %18 = load i16*, i16** %coerce.dive31, align 8 %coerce.dive32 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp21, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive32, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive35, i32 0, i32 0 %19 = load i16*, i16** %coerce.dive36, align 8 %coerce.dive37 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp22, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive37, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive40, i32 0, i32 0 %20 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive41, align 8 %coerce.dive42 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp23, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive42, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive45, i32 0, i32 0 %21 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive46, align 8 %22 = bitcast %"struct.thrust::pair.487"* %agg.tmp24 to i32* %23 = load i32, i32* %22, align 2 %call47 = call %"struct.thrust::pair.487"* @_ZN6thrust21exclusive_scan_by_keyINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS6_INS7_INS_4pairIssEEEEEESD_SB_NS_8equal_toIsEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SN_T1_SH_T3_T4_T5_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %7, i16* %18, i16* %19, %"struct.thrust::pair.487"* %20, %"struct.thrust::pair.487"* %21, i32 %23) %coerce.dive48 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive49, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive50, i32 0, i32 0 %coerce.dive52 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive51, i32 0, i32 0 store %"struct.thrust::pair.487"* %call47, %"struct.thrust::pair.487"** %coerce.dive52, align 8 %24 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system3 to i8* call void @llvm.lifetime.end(i64 1, i8* %24) #5 %25 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %25) #5 %26 = bitcast %"struct.thrust::system::cuda::detail::tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %26) #5 %coerce.dive53 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive54 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive53, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive55, i32 0, i32 0 %coerce.dive57 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive56, i32 0, i32 0 %27 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive57, align 8 ret %"struct.thrust::pair.487"* %27 } ; Function Attrs: nounwind uwtable define linkonce_odr i16* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE5beginEv(%"class.thrust::detail::vector_base.489"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.493", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.489"*, align 8 store %"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.489"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.489"*, %"class.thrust::detail::vector_base.489"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this1, i32 0, i32 0 %call = call i16* @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE5beginEv(%"class.thrust::detail::contiguous_storage.490"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 store i16* %call, i16** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive9, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive10, align 8 ret i16* %0 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE3endEv(%"class.thrust::detail::vector_base.489"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.493", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.489"*, align 8 store %"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.489"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.489"*, %"class.thrust::detail::vector_base.489"** %this.addr, align 8 %call = call i16* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE5beginEv(%"class.thrust::detail::vector_base.489"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 store i16* %call, i16** %coerce.dive5, align 8 %call6 = call i64 @_ZNK6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE4sizeEv(%"class.thrust::detail::vector_base.489"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %retval, i64 %call6) %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive10, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive11, align 8 ret i16* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.501"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.505", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.501"*, align 8 store %"class.thrust::detail::vector_base.501"* %this, %"class.thrust::detail::vector_base.501"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.501"*, %"class.thrust::detail::vector_base.501"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this1, i32 0, i32 0 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.502"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive9, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive10, align 8 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN8unittest18assert_equal_quietIN6thrust11host_vectorINS1_4pairIssEESaIS4_EEENS1_13device_vectorIS4_NS1_23device_malloc_allocatorIS4_EEEEEEvRKT_RKT0_RKSsi(%"class.thrust::host_vector.478"* dereferenceable(32) %a, %"class.thrust::device_vector.500"* dereferenceable(32) %b, %"class.std::basic_string"* dereferenceable(8) %filename, i32 %lineno) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %a.addr = alloca %"class.thrust::host_vector.478"*, align 8 %b.addr = alloca %"class.thrust::device_vector.500"*, align 8 %filename.addr = alloca %"class.std::basic_string"*, align 8 %lineno.addr = alloca i32, align 4 %f = alloca %"class.unittest::UnitTestFailure", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %ref.tmp = alloca %"class.std::basic_string", align 8 store %"class.thrust::host_vector.478"* %a, %"class.thrust::host_vector.478"** %a.addr, align 8, !tbaa !7 store %"class.thrust::device_vector.500"* %b, %"class.thrust::device_vector.500"** %b.addr, align 8, !tbaa !7 store %"class.std::basic_string"* %filename, %"class.std::basic_string"** %filename.addr, align 8, !tbaa !7 store i32 %lineno, i32* %lineno.addr, align 4, !tbaa !11 %0 = load %"class.thrust::host_vector.478"*, %"class.thrust::host_vector.478"** %a.addr, align 8 %1 = bitcast %"class.thrust::host_vector.478"* %0 to %"class.thrust::detail::vector_base.479"* %2 = load %"class.thrust::device_vector.500"*, %"class.thrust::device_vector.500"** %b.addr, align 8 %3 = bitcast %"class.thrust::device_vector.500"* %2 to %"class.thrust::detail::vector_base.501"* %call = call zeroext i1 @_ZN6thrusteqINS_4pairIssEESaIS2_ES2_NS_23device_malloc_allocatorIS2_EEEEbRKNS_6detail11vector_baseIT_T0_EERKNS7_IT1_T2_EE(%"class.thrust::detail::vector_base.479"* dereferenceable(32) %1, %"class.thrust::detail::vector_base.501"* dereferenceable(32) %3) br i1 %call, label %if.end, label %if.then if.then: ; preds = %entry %4 = bitcast %"class.unittest::UnitTestFailure"* %f to i8* call void @llvm.lifetime.start(i64 8, i8* %4) #5 call void @_ZN8unittest15UnitTestFailureC2Ev(%"class.unittest::UnitTestFailure"* %f) %5 = bitcast %"class.unittest::UnitTestFailure"* %f to %"class.unittest::UnitTestException"* %call1 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA2_cEERS0_RKT_(%"class.unittest::UnitTestException"* %5, [2 x i8]* dereferenceable(2) @.str.45) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then %6 = load %"class.std::basic_string"*, %"class.std::basic_string"** %filename.addr, align 8 %call3 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsISsEERS0_RKT_(%"class.unittest::UnitTestException"* %call1, %"class.std::basic_string"* dereferenceable(8) %6) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %call5 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA2_cEERS0_RKT_(%"class.unittest::UnitTestException"* %call3, [2 x i8]* dereferenceable(2) @.str.46) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont2 %call7 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIiEERS0_RKT_(%"class.unittest::UnitTestException"* %call5, i32* dereferenceable(4) %lineno.addr) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont4 %call9 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA3_cEERS0_RKT_(%"class.unittest::UnitTestException"* %call7, [3 x i8]* dereferenceable(3) @.str.47) to label %invoke.cont8 unwind label %lpad invoke.cont8: ; preds = %invoke.cont6 %7 = bitcast %"class.unittest::UnitTestFailure"* %f to %"class.unittest::UnitTestException"* %call11 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA22_cEERS0_RKT_(%"class.unittest::UnitTestException"* %7, [22 x i8]* dereferenceable(22) @.str.48) to label %invoke.cont10 unwind label %lpad invoke.cont10: ; preds = %invoke.cont8 %8 = bitcast %"class.unittest::UnitTestFailure"* %f to %"class.unittest::UnitTestException"* %call13 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA9_cEERS0_RKT_(%"class.unittest::UnitTestException"* %8, [9 x i8]* dereferenceable(9) @.str.49) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %invoke.cont10 invoke void @_ZN8unittest9type_nameIN6thrust11host_vectorINS1_4pairIssEESaIS4_EEEEESsv(%"class.std::basic_string"* sret %ref.tmp) to label %invoke.cont14 unwind label %lpad invoke.cont14: ; preds = %invoke.cont12 %call17 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsISsEERS0_RKT_(%"class.unittest::UnitTestException"* %call13, %"class.std::basic_string"* dereferenceable(8) %ref.tmp) to label %invoke.cont16 unwind label %lpad15 invoke.cont16: ; preds = %invoke.cont14 %call19 = invoke dereferenceable(8) %"class.unittest::UnitTestException"* @_ZN8unittest17UnitTestExceptionlsIA3_cEERS0_RKT_(%"class.unittest::UnitTestException"* %call17, [3 x i8]* dereferenceable(3) @.str.50) to label %invoke.cont18 unwind label %lpad15 invoke.cont18: ; preds = %invoke.cont16 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 %exception = call i8* @__cxa_allocate_exception(i64 8) #5 %9 = bitcast i8* %exception to %"class.unittest::UnitTestFailure"* call void @_ZN8unittest15UnitTestFailureC2EOS0_(%"class.unittest::UnitTestFailure"* %9, %"class.unittest::UnitTestFailure"* dereferenceable(8) %f) #5 invoke void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN8unittest15UnitTestFailureE to i8*), i8* bitcast (void (%"class.unittest::UnitTestException"*)* @_ZN8unittest17UnitTestExceptionD2Ev to i8*)) #15 to label %unreachable unwind label %lpad lpad: ; preds = %invoke.cont18, %invoke.cont12, %invoke.cont10, %invoke.cont8, %invoke.cont6, %invoke.cont4, %invoke.cont2, %invoke.cont, %if.then %10 = landingpad { i8*, i32 } cleanup %11 = extractvalue { i8*, i32 } %10, 0 store i8* %11, i8** %exn.slot, align 8 %12 = extractvalue { i8*, i32 } %10, 1 store i32 %12, i32* %ehselector.slot, align 4 br label %ehcleanup lpad15: ; preds = %invoke.cont16, %invoke.cont14 %13 = landingpad { i8*, i32 } cleanup %14 = extractvalue { i8*, i32 } %13, 0 store i8* %14, i8** %exn.slot, align 8 %15 = extractvalue { i8*, i32 } %13, 1 store i32 %15, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad15, %lpad call void bitcast (void (%"class.unittest::UnitTestException"*)* @_ZN8unittest17UnitTestExceptionD2Ev to void (%"class.unittest::UnitTestFailure"*)*)(%"class.unittest::UnitTestFailure"* %f) #5 %16 = bitcast %"class.unittest::UnitTestFailure"* %f to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 br label %eh.resume if.end: ; preds = %entry ret void eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val21 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val21 unreachable: ; preds = %invoke.cont18 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEED2Ev(%"class.thrust::detail::vector_base.489"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.489"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.493", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp6 = alloca %"class.thrust::detail::normal_iterator.493", align 8 store %"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.489"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.489"*, %"class.thrust::detail::vector_base.489"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this1, i32 0, i32 0 %call = invoke i16* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE5beginEv(%"class.thrust::detail::vector_base.489"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 store i16* %call, i16** %coerce.dive5, align 8 %call8 = invoke i16* @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE3endEv(%"class.thrust::detail::vector_base.489"* %this1) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp6, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive12, i32 0, i32 0 store i16* %call8, i16** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive17, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp6, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive22, i32 0, i32 0 %1 = load i16*, i16** %coerce.dive23, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE7destroyENS0_15normal_iteratorINS_10device_ptrIsEEEES8_(%"class.thrust::detail::contiguous_storage.490"* %m_storage, i16* %0, i16* %1) to label %invoke.cont24 unwind label %lpad invoke.cont24: ; preds = %invoke.cont7 %m_storage25 = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEED2Ev(%"class.thrust::detail::contiguous_storage.490"* %m_storage25) #5 ret void lpad: ; preds = %invoke.cont7, %invoke.cont, %entry %2 = landingpad { i8*, i32 } catch i8* null %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %m_storage26 = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEED2Ev(%"class.thrust::detail::contiguous_storage.490"* %m_storage26) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsSaIsEED2Ev(%"class.thrust::detail::vector_base.470"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.475", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator.475", align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 %call = invoke i16* @_ZN6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive2, align 8 %call5 = invoke i16* @_ZN6thrust6detail11vector_baseIsSaIsEE3endEv(%"class.thrust::detail::vector_base.470"* %this1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp3, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive6, i32 0, i32 0 store i16* %call5, i16** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive8, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp3, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive10, i32 0, i32 0 %1 = load i16*, i16** %coerce.dive11, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIsSaIsEE7destroyENS0_15normal_iteratorIPsEES6_(%"class.thrust::detail::contiguous_storage.471"* %m_storage, i16* %0, i16* %1) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %invoke.cont4 %m_storage13 = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIsSaIsEED2Ev(%"class.thrust::detail::contiguous_storage.471"* %m_storage13) #5 ret void lpad: ; preds = %invoke.cont4, %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %m_storage14 = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageIsSaIsEED2Ev(%"class.thrust::detail::contiguous_storage.471"* %m_storage14) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::vector_base.501"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.501"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.505", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp6 = alloca %"class.thrust::detail::normal_iterator.505", align 8 store %"class.thrust::detail::vector_base.501"* %this, %"class.thrust::detail::vector_base.501"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.501"*, %"class.thrust::detail::vector_base.501"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this1, i32 0, i32 0 %call = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::vector_base.501"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive5, align 8 %call8 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE3endEv(%"class.thrust::detail::vector_base.501"* %this1) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp6, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive12, i32 0, i32 0 store %"struct.thrust::pair.487"* %call8, %"struct.thrust::pair.487"** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive17, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp6, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive22, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive23, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE7destroyENS0_15normal_iteratorINS_10device_ptrIS3_EEEESA_(%"class.thrust::detail::contiguous_storage.502"* %m_storage, %"struct.thrust::pair.487"* %0, %"struct.thrust::pair.487"* %1) to label %invoke.cont24 unwind label %lpad invoke.cont24: ; preds = %invoke.cont7 %m_storage25 = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::contiguous_storage.502"* %m_storage25) #5 ret void lpad: ; preds = %invoke.cont7, %invoke.cont, %entry %2 = landingpad { i8*, i32 } catch i8* null %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %m_storage26 = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::contiguous_storage.502"* %m_storage26) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EED2Ev(%"class.thrust::detail::vector_base.479"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.479"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.484", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator.484", align 8 store %"class.thrust::detail::vector_base.479"* %this, %"class.thrust::detail::vector_base.479"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.479"*, %"class.thrust::detail::vector_base.479"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 0 %call = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.479"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive2, align 8 %call5 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE3endEv(%"class.thrust::detail::vector_base.479"* %this1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp3, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair.487"* %call5, %"struct.thrust::pair.487"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive8, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp3, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive10, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive11, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE7destroyENS0_15normal_iteratorIPS3_EES8_(%"class.thrust::detail::contiguous_storage.480"* %m_storage, %"struct.thrust::pair.487"* %0, %"struct.thrust::pair.487"* %1) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %invoke.cont4 %m_storage13 = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EED2Ev(%"class.thrust::detail::contiguous_storage.480"* %m_storage13) #5 ret void lpad: ; preds = %invoke.cont4, %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %m_storage14 = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EED2Ev(%"class.thrust::detail::contiguous_storage.480"* %m_storage14) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust11host_vectorIsSaIsEEC2Em(%"class.thrust::host_vector.469"* %this, i64 %n) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::host_vector.469"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::host_vector.469"* %this, %"class.thrust::host_vector.469"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::host_vector.469"*, %"class.thrust::host_vector.469"** %this.addr, align 8 %0 = bitcast %"class.thrust::host_vector.469"* %this1 to %"class.thrust::detail::vector_base.470"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail11vector_baseIsSaIsEEC2Em(%"class.thrust::detail::vector_base.470"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust9transformINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEEN8unittest14random_integerIsLb0EEEEET0_T_SC_SB_T1_(%"class.thrust::counting_iterator"* %first, %"class.thrust::counting_iterator"* %last, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.475", align 8 %result = alloca %"class.thrust::detail::normal_iterator.475", align 8 %op = alloca %"struct.unittest::random_integer.513", align 1 %system1 = alloca %"struct.thrust::any_system_tag", align 1 %system2 = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp2 = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp3 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp4 = alloca %"struct.unittest::random_integer.513", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive1, align 8 %0 = bitcast %"struct.thrust::any_system_tag"* %system1 to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 %2 = bitcast %"struct.thrust::any_system_tag"* %system1 to %"struct.thrust::execution_policy.89"* %3 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to %"struct.thrust::execution_policy.88"* %call = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS_14any_system_tagENS0_3cpp6detail3tagEEERNS_6detail17enable_if_definedINS8_14minimum_systemIT_T0_NS8_19minimum_type_detail14any_conversionESE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_SE_EEE4typeERNS_16execution_policyISB_EERNSJ_ISC_EE(%"struct.thrust::execution_policy.89"* dereferenceable(1) %2, %"struct.thrust::execution_policy.88"* dereferenceable(1) %3) %4 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.85"* call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* dereferenceable(8) %first) call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp2, %"class.thrust::counting_iterator"* dereferenceable(8) %last) %5 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp3 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.475"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp3, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive5, i32 0, i32 0 %7 = load i16*, i16** %coerce.dive6, align 8 %call7 = call i16* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPsEEN8unittest14random_integerIsLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %4, %"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* %agg.tmp2, i16* %7) %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive8, i32 0, i32 0 store i16* %call7, i16** %coerce.dive9, align 8 %8 = bitcast %"struct.thrust::system::cpp::detail::tag"* %system2 to i8* call void @llvm.lifetime.end(i64 1, i8* %8) #5 %9 = bitcast %"struct.thrust::any_system_tag"* %system1 to i8* call void @llvm.lifetime.end(i64 1, i8* %9) #5 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive10, i32 0, i32 0 %10 = load i16*, i16** %coerce.dive11, align 8 ret i16* %10 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsSaIsEEC2Em(%"class.thrust::detail::vector_base.470"* %this, i64 %n) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.std::allocator.472", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 call void @_ZNSaIsEC2Ev(%"class.std::allocator.472"* %ref.tmp) #5 invoke void @_ZN6thrust6detail18contiguous_storageIsSaIsEEC2ERKS2_(%"class.thrust::detail::contiguous_storage.471"* %m_storage, %"class.std::allocator.472"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void bitcast (void (%"class.__gnu_cxx::new_allocator.473"*)* @_ZN9__gnu_cxx13new_allocatorIsED2Ev to void (%"class.std::allocator.472"*)*)(%"class.std::allocator.472"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !351 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail11vector_baseIsSaIsEE12default_initEm(%"class.thrust::detail::vector_base.470"* %this1, i64 %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.473"*)* @_ZN9__gnu_cxx13new_allocatorIsED2Ev to void (%"class.std::allocator.472"*)*)(%"class.std::allocator.472"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageIsSaIsEED2Ev(%"class.thrust::detail::contiguous_storage.471"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val4 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val4 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIsEC2Ev(%"class.std::allocator.472"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.472"*, align 8 store %"class.std::allocator.472"* %this, %"class.std::allocator.472"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.472"* %this1 to %"class.__gnu_cxx::new_allocator.473"* call void @_ZN9__gnu_cxx13new_allocatorIsEC2Ev(%"class.__gnu_cxx::new_allocator.473"* %0) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsSaIsEEC2ERKS2_(%"class.thrust::detail::contiguous_storage.471"* %this, %"class.std::allocator.472"* dereferenceable(1) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 %alloc.addr = alloca %"class.std::allocator.472"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.472"* %alloc, %"class.std::allocator.472"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 0 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %alloc.addr, align 8 call void @_ZNSaIsEC2ERKS_(%"class.std::allocator.472"* %m_allocator, %"class.std::allocator.472"* dereferenceable(1) %0) #5 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 1 invoke void @_ZN6thrust6detail15normal_iteratorIPsEC2ES2_(%"class.thrust::detail::normal_iterator.475"* %m_begin, i16* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !356 ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.473"*)* @_ZN9__gnu_cxx13new_allocatorIsED2Ev to void (%"class.std::allocator.472"*)*)(%"class.std::allocator.472"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIsED2Ev(%"class.__gnu_cxx::new_allocator.473"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.473"*, align 8 store %"class.__gnu_cxx::new_allocator.473"* %this, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.473"*, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsSaIsEE12default_initEm(%"class.thrust::detail::vector_base.470"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.475", align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageIsSaIsEE8allocateEm(%"class.thrust::detail::contiguous_storage.471"* %m_storage, i64 %1) %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 1 store i64 %2, i64* %m_size, align 8, !tbaa !351 %m_storage2 = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 %call = call i16* @_ZN6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive3, align 8 %call4 = call i64 @_ZNK6thrust6detail11vector_baseIsSaIsEE4sizeEv(%"class.thrust::detail::vector_base.470"* %this1) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive5, i32 0, i32 0 %3 = load i16*, i16** %coerce.dive6, align 8 call void @_ZN6thrust6detail18contiguous_storageIsSaIsEE19default_construct_nENS0_15normal_iteratorIPsEEm(%"class.thrust::detail::contiguous_storage.471"* %m_storage2, i16* %3, i64 %call4) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsSaIsEED2Ev(%"class.thrust::detail::contiguous_storage.471"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIsSaIsEE10deallocateEv(%"class.thrust::detail::contiguous_storage.471"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.473"*)* @_ZN9__gnu_cxx13new_allocatorIsED2Ev to void (%"class.std::allocator.472"*)*)(%"class.std::allocator.472"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.473"*)* @_ZN9__gnu_cxx13new_allocatorIsED2Ev to void (%"class.std::allocator.472"*)*)(%"class.std::allocator.472"* %m_allocator2) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIsEC2Ev(%"class.__gnu_cxx::new_allocator.473"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.473"*, align 8 store %"class.__gnu_cxx::new_allocator.473"* %this, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.473"*, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIsEC2ERKS_(%"class.std::allocator.472"* %this, %"class.std::allocator.472"* dereferenceable(1) %__a) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.472"*, align 8 %__a.addr = alloca %"class.std::allocator.472"*, align 8 store %"class.std::allocator.472"* %this, %"class.std::allocator.472"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.472"* %__a, %"class.std::allocator.472"** %__a.addr, align 8, !tbaa !7 %this1 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.472"* %this1 to %"class.__gnu_cxx::new_allocator.473"* %1 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %__a.addr, align 8 %2 = bitcast %"class.std::allocator.472"* %1 to %"class.__gnu_cxx::new_allocator.473"* call void @_ZN9__gnu_cxx13new_allocatorIsEC2ERKS1_(%"class.__gnu_cxx::new_allocator.473"* %0, %"class.__gnu_cxx::new_allocator.473"* dereferenceable(1) %2) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPsEC2ES2_(%"class.thrust::detail::normal_iterator.475"* %this, i16* %p) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %p.addr = alloca i16*, align 8 store %"class.thrust::detail::normal_iterator.475"* %this, %"class.thrust::detail::normal_iterator.475"** %this.addr, align 8, !tbaa !1 store i16* %p, i16** %p.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.475"* %this1 to %"class.thrust::iterator_adaptor.476"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_(%"class.thrust::iterator_adaptor.476"* %0, i16** dereferenceable(8) %p.addr) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIsEC2ERKS1_(%"class.__gnu_cxx::new_allocator.473"* %this, %"class.__gnu_cxx::new_allocator.473"* dereferenceable(1)) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.473"*, align 8 %.addr = alloca %"class.__gnu_cxx::new_allocator.473"*, align 8 store %"class.__gnu_cxx::new_allocator.473"* %this, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8, !tbaa !1 store %"class.__gnu_cxx::new_allocator.473"* %0, %"class.__gnu_cxx::new_allocator.473"** %.addr, align 8, !tbaa !7 %this1 = load %"class.__gnu_cxx::new_allocator.473"*, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_EC2ERKS3_(%"class.thrust::iterator_adaptor.476"* %this, i16** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.476"*, align 8 %iter.addr = alloca i16**, align 8 store %"class.thrust::iterator_adaptor.476"* %this, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8, !tbaa !1 store i16** %iter, i16*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.476"*, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.476"* %this1 to %"class.thrust::iterator_facade.477"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %this1, i32 0, i32 0 %1 = load i16**, i16*** %iter.addr, align 8 %2 = load i16*, i16** %1, align 8, !tbaa !1 store i16* %2, i16** %m_iterator, align 8, !tbaa !357 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsSaIsEE8allocateEm(%"class.thrust::detail::contiguous_storage.471"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.475", align 8 %ref.tmp3 = alloca %"class.thrust::detail::normal_iterator.475", align 8 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i16* @_ZN6thrust6detail16allocator_traitsISaIsEE8allocateERS2_m(%"class.std::allocator.472"* dereferenceable(1) %m_allocator, i64 %1) call void @_ZN6thrust6detail15normal_iteratorIPsEC2ES2_(%"class.thrust::detail::normal_iterator.475"* %ref.tmp, i16* %call) %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %m_begin to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.475"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 2 store i64 %4, i64* %m_size, align 8, !tbaa !356 br label %if.end if.else: ; preds = %entry %m_begin2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPsEC2ES2_(%"class.thrust::detail::normal_iterator.475"* %ref.tmp3, i16* null) %5 = bitcast %"class.thrust::detail::normal_iterator.475"* %m_begin2 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.475"* %ref.tmp3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 2 store i64 0, i64* %m_size4, align 8, !tbaa !356 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsSaIsEE19default_construct_nENS0_15normal_iteratorIPsEEm(%"class.thrust::detail::contiguous_storage.471"* %this, i16* %first.coerce, i64 %n) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.475", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 %n.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this2, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.475"* %first to %"class.thrust::iterator_adaptor.476"* %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.476"* %0) %1 = load i16*, i16** %call, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23default_construct_rangeISaIsEPsmEEvRT_T0_T1_(%"class.std::allocator.472"* dereferenceable(1) %m_allocator, i16* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIsSaIsEE4sizeEv(%"class.thrust::detail::vector_base.470"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 1 %0 = load i64, i64* %m_size, align 8, !tbaa !351 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrust6detail16allocator_traitsISaIsEE8allocateERS2_m(%"class.std::allocator.472"* dereferenceable(1) %a, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.472"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i16* @_ZZN6thrust6detail16allocator_traitsISaIsEE8allocateERS2_mEN19workaround_warnings8allocateES4_m(%"class.std::allocator.472"* dereferenceable(1) %0, i64 %1) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZZN6thrust6detail16allocator_traitsISaIsEE8allocateERS2_mEN19workaround_warnings8allocateES4_m(%"class.std::allocator.472"* dereferenceable(1) %a, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.472"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.472"* %0 to %"class.__gnu_cxx::new_allocator.473"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i16* @_ZN9__gnu_cxx13new_allocatorIsE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.473"* %1, i64 %2, i8* null) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN9__gnu_cxx13new_allocatorIsE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.473"* %this, i64 %__n, i8*) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.473"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator.473"* %this, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8, !tbaa !1 store i64 %__n, i64* %__n.addr, align 8, !tbaa !13 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.473"*, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8, !tbaa !13 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorIsE8max_sizeEv(%"class.__gnu_cxx::new_allocator.473"* %this1) #5 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #15 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8, !tbaa !13 %mul = mul i64 %2, 2 %call2 = call i8* @_Znwm(i64 %mul) %3 = bitcast i8* %call2 to i16* ret i16* %3 } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK9__gnu_cxx13new_allocatorIsE8max_sizeEv(%"class.__gnu_cxx::new_allocator.473"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.473"*, align 8 store %"class.__gnu_cxx::new_allocator.473"* %this, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.473"*, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8 ret i64 9223372036854775807 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23default_construct_rangeISaIsEPsmEEvRT_T0_T1_(%"class.std::allocator.472"* dereferenceable(1) %a, i16* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.472"*, align 8 %p.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 store i16* %p, i16** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 %1 = load i16*, i16** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIsEPsmEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_(%"class.std::allocator.472"* dereferenceable(1) %0, i16* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.476"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.476"*, align 8 store %"class.thrust::iterator_adaptor.476"* %this, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.476"*, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %this1, i32 0, i32 0 ret i16** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaIsEPsmEENS0_10disable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS6_S8_T1_(%"class.std::allocator.472"* dereferenceable(1) %a, i16* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.472"*, align 8 %p.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %ref.tmp1 = alloca i16, align 2 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 store i16* %p, i16** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemISaIsEE3getERS2_(%"class.std::allocator.472"* dereferenceable(1) %0) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i16*, i16** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 store i16 0, i16* %ref.tmp1, align 2, !tbaa !346 %call = call i16* @_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPsmsEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i16* %2, i64 %3, i16* dereferenceable(2) %ref.tmp1) ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust20uninitialized_fill_nINS_6system3cpp6detail3tagEPsmsEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i16* %first, i64 %n, i16* dereferenceable(2) %x) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %x.addr = alloca i16*, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i16* %first, i16** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i16* %x, i16** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i16*, i16** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load i16*, i16** %x.addr, align 8 %call2 = call i16* @_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPsmsEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i16* %2, i64 %3, i16* dereferenceable(2) %4) ret i16* %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_systemISaIsEE3getERS2_(%"class.std::allocator.472"* dereferenceable(1) %a) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.472"*, align 8 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail6systemISaIsEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_(%"class.std::allocator.472"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail7generic20uninitialized_fill_nINS0_3cpp6detail3tagEPsmsEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i16* %first, i64 %n, i16* dereferenceable(2) %x) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %x.addr = alloca i16*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 %ref.tmp = alloca %"struct.thrust::detail::has_trivial_copy_constructor.514", align 1 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i16* %first, i16** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i16* %x, i16** %x.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = load i16*, i16** %first.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %3 = load i16*, i16** %x.addr, align 8 %4 = bitcast %"struct.thrust::detail::has_trivial_copy_constructor.514"* %ref.tmp to %"struct.thrust::detail::integral_constant"* %call = call i16* @_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPsmsEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, i16* %1, i64 %2, i16* dereferenceable(2) %3) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail7generic6detail20uninitialized_fill_nINS0_3cpp6detail3tagEPsmsEET0_RNS_16execution_policyIT_EES9_T1_RKT2_NS_6detail17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i16* %first, i64 %n, i16* dereferenceable(2) %x) #0 comdat { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %x.addr = alloca i16*, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i16* %first, i16** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i16* %x, i16** %x.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* %3 = load i16*, i16** %first.addr, align 8, !tbaa !1 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %5 = load i16*, i16** %x.addr, align 8 %call = call i16* @_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPsmsEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, i16* %3, i64 %4, i16* dereferenceable(2) %5) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6fill_nINS_6system3cpp6detail3tagEPsmsEET0_RKNS_6detail21execution_policy_baseIT_EES6_T1_RKT2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i16* %first, i64 %n, i16* dereferenceable(2) %value) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %value.addr = alloca i16*, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i16* %first, i16** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i16* %value, i16** %value.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i16*, i16** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load i16*, i16** %value.addr, align 8 %call2 = call i16* @_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPsmsEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i16* %2, i64 %3, i16* dereferenceable(2) %4) ret i16* %call2 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail7generic6fill_nINS0_3cpp6detail3tagEPsmsEET0_RNS_16execution_policyIT_EES8_T1_RKT2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i16* %first, i64 %n, i16* dereferenceable(2) %value) #0 comdat { entry: %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %value.addr = alloca i16*, align 8 %agg.tmp = alloca %"struct.thrust::detail::fill_functor.515", align 2 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i16* %first, i16** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store i16* %value, i16** %value.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i16*, i16** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load i16*, i16** %value.addr, align 8 call void @_ZN6thrust6detail12fill_functorIsEC2ERKs(%"struct.thrust::detail::fill_functor.515"* %agg.tmp, i16* dereferenceable(2) %4) %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %agg.tmp, i32 0, i32 0 %5 = load i16, i16* %coerce.dive, align 2 %call = call i16* @_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPsmNS_6detail12fill_functorIsEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i16* %2, i64 %3, i16 %5) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust10generate_nINS_6system3cpp6detail3tagEPsmNS_6detail12fill_functorIsEEEET0_RKNS6_21execution_policy_baseIT_EES9_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i16* %first, i64 %n, i16 %gen.coerce) #0 comdat { entry: %gen = alloca %"struct.thrust::detail::fill_functor.515", align 2 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::fill_functor.515", align 2 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %gen, i32 0, i32 0 store i16 %gen.coerce, i16* %coerce.dive, align 2 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i16* %first, i16** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::execution_policy.88"* %2 = load i16*, i16** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::fill_functor.515"* %agg.tmp to i8* %5 = bitcast %"struct.thrust::detail::fill_functor.515"* %gen to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 2, i32 2, i1 false), !tbaa.struct !359 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %agg.tmp, i32 0, i32 0 %6 = load i16, i16* %coerce.dive2, align 2 %call3 = call i16* @_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPsmNS_6detail12fill_functorIsEEEET0_RNS_16execution_policyIT_EESB_T1_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i16* %2, i64 %3, i16 %6) ret i16* %call3 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail12fill_functorIsEC2ERKs(%"struct.thrust::detail::fill_functor.515"* %this, i16* dereferenceable(2) %_exemplar) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::fill_functor.515"*, align 8 %_exemplar.addr = alloca i16*, align 8 store %"struct.thrust::detail::fill_functor.515"* %this, %"struct.thrust::detail::fill_functor.515"** %this.addr, align 8, !tbaa !1 store i16* %_exemplar, i16** %_exemplar.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::fill_functor.515"*, %"struct.thrust::detail::fill_functor.515"** %this.addr, align 8 %exemplar = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %this1, i32 0, i32 0 %0 = load i16*, i16** %_exemplar.addr, align 8 %1 = load i16, i16* %0, align 2, !tbaa !346 store i16 %1, i16* %exemplar, align 2, !tbaa !360 ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail7generic10generate_nINS0_3cpp6detail3tagEPsmNS_6detail12fill_functorIsEEEET0_RNS_16execution_policyIT_EESB_T1_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i16* %first, i64 %n, i16 %gen.coerce) #0 comdat { entry: %gen = alloca %"struct.thrust::detail::fill_functor.515", align 2 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %first.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::host_generate_functor.516", align 2 %agg.tmp1 = alloca %"struct.thrust::detail::fill_functor.515", align 2 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %gen, i32 0, i32 0 store i16 %gen.coerce, i16* %coerce.dive, align 2 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 store i16* %first, i16** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %2 = load i16*, i16** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::fill_functor.515"* %agg.tmp1 to i8* %5 = bitcast %"struct.thrust::detail::fill_functor.515"* %gen to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 2, i32 2, i1 false), !tbaa.struct !359 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %agg.tmp1, i32 0, i32 0 %6 = load i16, i16* %coerce.dive2, align 2 call void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIsEEEC2ES3_(%"struct.thrust::detail::host_generate_functor.516"* %agg.tmp, i16 %6) %coerce.dive3 = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.516", %"struct.thrust::detail::host_generate_functor.516"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %coerce.dive3, i32 0, i32 0 %7 = load i16, i16* %coerce.dive4, align 2 %call = call i16* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPsmNS_6detail21host_generate_functorINS6_12fill_functorIsEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, i16* %2, i64 %3, i16 %7) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPsmNS_6detail21host_generate_functorINS6_12fill_functorIsEEEEEET0_RKNS6_21execution_policy_baseIT_EESB_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i16* %first, i64 %n, i16 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::host_generate_functor.516", align 2 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::host_generate_functor.516", align 2 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.516", %"struct.thrust::detail::host_generate_functor.516"* %f, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %coerce.dive, i32 0, i32 0 store i16 %f.coerce, i16* %coerce.dive1, align 2 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i16* %first, i16** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call2 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = load i16*, i16** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::host_generate_functor.516"* %agg.tmp to i8* %5 = bitcast %"struct.thrust::detail::host_generate_functor.516"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 2, i32 2, i1 false), !tbaa.struct !359 %coerce.dive3 = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.516", %"struct.thrust::detail::host_generate_functor.516"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %coerce.dive3, i32 0, i32 0 %6 = load i16, i16* %coerce.dive4, align 2 %call5 = call i16* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPsmNS_6detail21host_generate_functorINS8_12fill_functorIsEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, i16* %2, i64 %3, i16 %6) ret i16* %call5 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIsEEEC2ES3_(%"struct.thrust::detail::host_generate_functor.516"* %this, i16 %g.coerce) unnamed_addr #1 comdat align 2 { entry: %g = alloca %"struct.thrust::detail::fill_functor.515", align 2 %this.addr = alloca %"struct.thrust::detail::host_generate_functor.516"*, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %g, i32 0, i32 0 store i16 %g.coerce, i16* %coerce.dive, align 2 store %"struct.thrust::detail::host_generate_functor.516"* %this, %"struct.thrust::detail::host_generate_functor.516"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::host_generate_functor.516"*, %"struct.thrust::detail::host_generate_functor.516"** %this.addr, align 8 %gen = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.516", %"struct.thrust::detail::host_generate_functor.516"* %this1, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::fill_functor.515"* %gen to i8* %1 = bitcast %"struct.thrust::detail::fill_functor.515"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 2, i32 2, i1 false), !tbaa.struct !359 ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPsmNS_6detail21host_generate_functorINS8_12fill_functorIsEEEEEET0_RNS2_16execution_policyIT_EESD_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), i16* %first, i64 %n, i16 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::host_generate_functor.516", align 2 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %first.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.517", align 2 %i = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.516", %"struct.thrust::detail::host_generate_functor.516"* %f, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %coerce.dive, i32 0, i32 0 store i16 %f.coerce, i16* %coerce.dive1, align 2 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store i16* %first, i16** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = bitcast %"struct.thrust::detail::wrapped_function.517"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 2, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIsEEEEvEC2ERKS5_(%"struct.thrust::detail::wrapped_function.517"* %wrapped_f, %"struct.thrust::detail::host_generate_functor.516"* dereferenceable(2) %f) %2 = bitcast i64* %i to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 store i64 0, i64* %i, align 8, !tbaa !13 br label %for.cond for.cond: ; preds = %for.inc, %entry %3 = load i64, i64* %i, align 8, !tbaa !13 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ne i64 %3, %4 br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %5 = bitcast i64* %i to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 br label %for.end for.body: ; preds = %for.cond %6 = load i16*, i16** %first.addr, align 8, !tbaa !1 call void @_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIsEEEEvEclIsEEvRT_(%"struct.thrust::detail::wrapped_function.517"* %wrapped_f, i16* dereferenceable(2) %6) %7 = load i16*, i16** %first.addr, align 8, !tbaa !1 %incdec.ptr = getelementptr inbounds i16, i16* %7, i32 1 store i16* %incdec.ptr, i16** %first.addr, align 8, !tbaa !1 br label %for.inc for.inc: ; preds = %for.body %8 = load i64, i64* %i, align 8, !tbaa !13 %inc = add i64 %8, 1 store i64 %inc, i64* %i, align 8, !tbaa !13 br label %for.cond for.end: ; preds = %for.cond.cleanup %9 = load i16*, i16** %first.addr, align 8, !tbaa !1 %10 = bitcast %"struct.thrust::detail::wrapped_function.517"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 2, i8* %10) #5 ret i16* %9 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIsEEEEvEC2ERKS5_(%"struct.thrust::detail::wrapped_function.517"* %this, %"struct.thrust::detail::host_generate_functor.516"* dereferenceable(2) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.517"*, align 8 %f.addr = alloca %"struct.thrust::detail::host_generate_functor.516"*, align 8 store %"struct.thrust::detail::wrapped_function.517"* %this, %"struct.thrust::detail::wrapped_function.517"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::host_generate_functor.516"* %f, %"struct.thrust::detail::host_generate_functor.516"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.517"*, %"struct.thrust::detail::wrapped_function.517"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.517", %"struct.thrust::detail::wrapped_function.517"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::host_generate_functor.516"*, %"struct.thrust::detail::host_generate_functor.516"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::host_generate_functor.516"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::host_generate_functor.516"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 2, i32 2, i1 false), !tbaa.struct !359 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_21host_generate_functorINS0_12fill_functorIsEEEEvEclIsEEvRT_(%"struct.thrust::detail::wrapped_function.517"* %this, i16* dereferenceable(2) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.517"*, align 8 %x.addr = alloca i16*, align 8 store %"struct.thrust::detail::wrapped_function.517"* %this, %"struct.thrust::detail::wrapped_function.517"** %this.addr, align 8, !tbaa !1 store i16* %x, i16** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.517"*, %"struct.thrust::detail::wrapped_function.517"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.517", %"struct.thrust::detail::wrapped_function.517"* %this1, i32 0, i32 0 %0 = load i16*, i16** %x.addr, align 8 %call = call dereferenceable(2) i16* @_ZN6thrust18raw_reference_castIsEENS_6detail13raw_referenceIT_E4typeERS3_(i16* dereferenceable(2) %0) call void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIsEEEclIsEEvRKT_(%"struct.thrust::detail::host_generate_functor.516"* %m_f, i16* dereferenceable(2) %call) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail21host_generate_functorINS0_12fill_functorIsEEEclIsEEvRKT_(%"struct.thrust::detail::host_generate_functor.516"* %this, i16* dereferenceable(2) %x) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::host_generate_functor.516"*, align 8 %x.addr = alloca i16*, align 8 %lvalue = alloca i16*, align 8 store %"struct.thrust::detail::host_generate_functor.516"* %this, %"struct.thrust::detail::host_generate_functor.516"** %this.addr, align 8, !tbaa !1 store i16* %x, i16** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::host_generate_functor.516"*, %"struct.thrust::detail::host_generate_functor.516"** %this.addr, align 8 %0 = bitcast i16** %lvalue to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load i16*, i16** %x.addr, align 8 store i16* %1, i16** %lvalue, align 8, !tbaa !7 %gen = getelementptr inbounds %"struct.thrust::detail::host_generate_functor.516", %"struct.thrust::detail::host_generate_functor.516"* %this1, i32 0, i32 0 %call = call signext i16 @_ZNK6thrust6detail12fill_functorIsEclEv(%"struct.thrust::detail::fill_functor.515"* %gen) %2 = load i16*, i16** %lvalue, align 8 store i16 %call, i16* %2, align 2, !tbaa !346 %3 = bitcast i16** %lvalue to i8* call void @llvm.lifetime.end(i64 8, i8* %3) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust18raw_reference_castIsEENS_6detail13raw_referenceIT_E4typeERS3_(i16* dereferenceable(2) %ref) #8 comdat { entry: %ref.addr = alloca i16*, align 8 %ref.tmp = alloca i16*, align 8 store i16* %ref, i16** %ref.addr, align 8, !tbaa !7 %0 = load i16*, i16** %ref.addr, align 8 store i16* %0, i16** %ref.tmp, align 8, !tbaa !1 %call = call i16* @_ZN6thrust16raw_pointer_castIPsEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_(i16** dereferenceable(8) %ref.tmp) ret i16* %call } ; Function Attrs: nounwind uwtable define linkonce_odr signext i16 @_ZNK6thrust6detail12fill_functorIsEclEv(%"struct.thrust::detail::fill_functor.515"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::fill_functor.515"*, align 8 store %"struct.thrust::detail::fill_functor.515"* %this, %"struct.thrust::detail::fill_functor.515"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::fill_functor.515"*, %"struct.thrust::detail::fill_functor.515"** %this.addr, align 8 %exemplar = getelementptr inbounds %"struct.thrust::detail::fill_functor.515", %"struct.thrust::detail::fill_functor.515"* %this1, i32 0, i32 0 %0 = load i16, i16* %exemplar, align 2, !tbaa !360 ret i16 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrust16raw_pointer_castIPsEENS_6detail14pointer_traitsIT_E11raw_pointerERKS4_(i16** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca i16**, align 8 store i16** %ptr, i16*** %ptr.addr, align 8, !tbaa !7 %0 = load i16**, i16*** %ptr.addr, align 8 %1 = load i16*, i16** %0, align 8, !tbaa !1 %call = call i16* @_ZN6thrust6detail14pointer_traitsIPsE3getES2_(i16* %1) ret i16* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i16* @_ZN6thrust6detail14pointer_traitsIPsE3getES2_(i16* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca i16*, align 8 store i16* %ptr, i16** %ptr.addr, align 8, !tbaa !1 %0 = load i16*, i16** %ptr.addr, align 8, !tbaa !1 ret i16* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail6systemISaIsEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS5_E4typeEE4typeERS5_(%"class.std::allocator.472"* dereferenceable(1) %a) #1 comdat { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.472"*, align 8 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsSaIsEE10deallocateEv(%"class.thrust::detail::contiguous_storage.471"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.475", align 8 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIsSaIsEE4sizeEv(%"class.thrust::detail::contiguous_storage.471"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.475"* %m_begin to %"class.thrust::iterator_adaptor.476"* %call2 = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.476"* %0) %1 = load i16*, i16** %call2, align 8, !tbaa !1 %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageIsSaIsEE4sizeEv(%"class.thrust::detail::contiguous_storage.471"* %this1) call void @_ZN6thrust6detail16allocator_traitsISaIsEE10deallocateERS2_Psm(%"class.std::allocator.472"* dereferenceable(1) %m_allocator, i16* %1, i64 %call3) %m_begin4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPsEC2ES2_(%"class.thrust::detail::normal_iterator.475"* %ref.tmp, i16* null) %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %m_begin4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.475"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !356 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIsSaIsEE4sizeEv(%"class.thrust::detail::contiguous_storage.471"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !356 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsISaIsEE10deallocateERS2_Psm(%"class.std::allocator.472"* dereferenceable(1) %a, i16* %p, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.472"*, align 8 %p.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 store i16* %p, i16** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 %1 = load i16*, i16** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZZN6thrust6detail16allocator_traitsISaIsEE10deallocateERS2_PsmEN19workaround_warnings10deallocateES4_S5_m(%"class.std::allocator.472"* dereferenceable(1) %0, i16* %1, i64 %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsISaIsEE10deallocateERS2_PsmEN19workaround_warnings10deallocateES4_S5_m(%"class.std::allocator.472"* dereferenceable(1) %a, i16* %p, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.472"*, align 8 %p.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 store i16* %p, i16** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.472"* %0 to %"class.__gnu_cxx::new_allocator.473"* %2 = load i16*, i16** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN9__gnu_cxx13new_allocatorIsE10deallocateEPsm(%"class.__gnu_cxx::new_allocator.473"* %1, i16* %2, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIsE10deallocateEPsm(%"class.__gnu_cxx::new_allocator.473"* %this, i16* %__p, i64) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.473"*, align 8 %__p.addr = alloca i16*, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator.473"* %this, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8, !tbaa !1 store i16* %__p, i16** %__p.addr, align 8, !tbaa !1 store i64 %0, i64* %.addr, align 8, !tbaa !13 %this1 = load %"class.__gnu_cxx::new_allocator.473"*, %"class.__gnu_cxx::new_allocator.473"** %this.addr, align 8 %1 = load i16*, i16** %__p.addr, align 8, !tbaa !1 %2 = bitcast i16* %1 to i8* call void @_ZdlPv(i8* %2) #5 ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES6_S6_EENS_6detail15normal_iteratorIPsEEN8unittest14random_integerIsLb0EEEEET1_RKNS8_21execution_policy_baseIT_EET0_SL_SF_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"class.thrust::counting_iterator"* %first, %"class.thrust::counting_iterator"* %last, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.475", align 8 %result = alloca %"class.thrust::detail::normal_iterator.475", align 8 %op = alloca %"struct.unittest::random_integer.513", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp3 = alloca %"class.thrust::counting_iterator", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp5 = alloca %"struct.unittest::random_integer.513", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call2 to %"struct.thrust::execution_policy.88"* call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* dereferenceable(8) %first) call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %agg.tmp3, %"class.thrust::counting_iterator"* dereferenceable(8) %last) %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.475"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp4, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive6, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive7, align 8 %call8 = call i16* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPsEEN8unittest14random_integerIsLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"class.thrust::counting_iterator"* %agg.tmp, %"class.thrust::counting_iterator"* %agg.tmp3, i16* %4) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive9, i32 0, i32 0 store i16* %call8, i16** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive11, i32 0, i32 0 %5 = load i16*, i16** %coerce.dive12, align 8 ret i16* %5 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPsEEN8unittest14random_integerIsLb0EEEEET1_RNS_16execution_policyIT_EET0_SM_SH_T2_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, %"class.thrust::counting_iterator"* %first, %"class.thrust::counting_iterator"* %last, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.475", align 8 %result = alloca %"class.thrust::detail::normal_iterator.475", align 8 %op = alloca %"struct.unittest::random_integer.513", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %zipped_result = alloca %"class.thrust::zip_iterator.518", align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.518", align 8 %agg.tmp2 = alloca %"class.thrust::tuple.520", align 8 %agg.tmp3 = alloca %"class.thrust::zip_iterator.518", align 8 %agg.tmp4 = alloca %"class.thrust::tuple.520", align 8 %agg.tmp5 = alloca %"struct.thrust::detail::unary_transform_functor.523", align 1 %agg.tmp6 = alloca %"struct.unittest::random_integer.513", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %result, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive1, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %0 = bitcast %"class.thrust::zip_iterator.518"* %zipped_result to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* call void @_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_(%"class.thrust::tuple.520"* sret %agg.tmp2, %"class.thrust::counting_iterator"* dereferenceable(8) %first, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_(%"class.thrust::zip_iterator.518"* sret %agg.tmp, %"class.thrust::tuple.520"* %agg.tmp2) call void @_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_(%"class.thrust::tuple.520"* sret %agg.tmp4, %"class.thrust::counting_iterator"* dereferenceable(8) %last, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_(%"class.thrust::zip_iterator.518"* sret %agg.tmp3, %"class.thrust::tuple.520"* %agg.tmp4) call void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIsLb0EEEEC2ES4_(%"struct.thrust::detail::unary_transform_functor.523"* %agg.tmp5) call void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPsEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_(%"class.thrust::zip_iterator.518"* sret %zipped_result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, %"class.thrust::zip_iterator.518"* %agg.tmp, %"class.thrust::zip_iterator.518"* %agg.tmp3) %call = call dereferenceable(16) %"class.thrust::tuple.520"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.518"* %zipped_result) %3 = bitcast %"class.thrust::tuple.520"* %call to %"struct.thrust::detail::cons.521"* %call7 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPsEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.521"* dereferenceable(16) %3) %4 = bitcast %"class.thrust::detail::normal_iterator.475"* %retval to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.475"* %call7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::zip_iterator.518"* %zipped_result to i8* call void @llvm.lifetime.end(i64 16, i8* %6) #5 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive8, i32 0, i32 0 %7 = load i16*, i16** %coerce.dive9, align 8 ret i16* %7 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES8_S8_EENS_6detail15normal_iteratorIPsEENS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEENSA_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEEET0_RKNSA_21execution_policy_baseIT_EESM_SM_T1_(%"class.thrust::zip_iterator.518"* noalias sret %agg.result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.518"* %first, %"class.thrust::zip_iterator.518"* %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::unary_transform_functor.523", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.518", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.518", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::unary_transform_functor.523", align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_(%"class.thrust::zip_iterator.518"* %agg.tmp, %"class.thrust::zip_iterator.518"* dereferenceable(16) %first) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_(%"class.thrust::zip_iterator.518"* %agg.tmp2, %"class.thrust::zip_iterator.518"* dereferenceable(16) %last) %2 = bitcast %"struct.thrust::detail::unary_transform_functor.523"* %agg.tmp3 to i8* %3 = bitcast %"struct.thrust::detail::unary_transform_functor.523"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPsEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_(%"class.thrust::zip_iterator.518"* sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"class.thrust::zip_iterator.518"* %agg.tmp, %"class.thrust::zip_iterator.518"* %agg.tmp2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS_12zip_iteratorIT_EESC_(%"class.thrust::zip_iterator.518"* noalias sret %agg.result, %"class.thrust::tuple.520"* %t) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::tuple.520", align 8 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple.520"* %agg.tmp, %"class.thrust::tuple.520"* dereferenceable(16) %t) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_(%"class.thrust::zip_iterator.518"* %agg.result, %"class.thrust::tuple.520"* %agg.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEEEENS4_17make_tuple_mapperIT_T0_NS_9null_typeESB_SB_SB_SB_SB_SB_SB_E4typeERKS9_RKSA_(%"class.thrust::tuple.520"* noalias sret %agg.result, %"class.thrust::counting_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t1) #8 comdat { entry: %t0.addr = alloca %"class.thrust::counting_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 store %"class.thrust::counting_iterator"* %t0, %"class.thrust::counting_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.475"* %t1, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8, !tbaa !7 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_(%"class.thrust::tuple.520"* %agg.result, %"class.thrust::counting_iterator"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIsLb0EEEEC2ES4_(%"struct.thrust::detail::unary_transform_functor.523"* %this) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.unittest::random_integer.513", align 1 %this.addr = alloca %"struct.thrust::detail::unary_transform_functor.523"*, align 8 store %"struct.thrust::detail::unary_transform_functor.523"* %this, %"struct.thrust::detail::unary_transform_functor.523"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::unary_transform_functor.523"*, %"struct.thrust::detail::unary_transform_functor.523"** %this.addr, align 8 %f2 = getelementptr inbounds %"struct.thrust::detail::unary_transform_functor.523", %"struct.thrust::detail::unary_transform_functor.523"* %this1, i32 0, i32 0 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPsEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.521"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.521"*, align 8 store %"struct.thrust::detail::cons.521"* %c, %"struct.thrust::detail::cons.521"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPsEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE(%"struct.thrust::detail::cons.521"* dereferenceable(16) %0) ret %"class.thrust::detail::normal_iterator.475"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::tuple.520"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.518"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 store %"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.518", %"class.thrust::zip_iterator.518"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.520"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultESA_SA_EENS_6detail15normal_iteratorIPsEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENSC_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEEET0_RNS2_16execution_policyIT_EESO_SO_T1_(%"class.thrust::zip_iterator.518"* noalias sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"class.thrust::zip_iterator.518"* %first, %"class.thrust::zip_iterator.518"* %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::unary_transform_functor.523", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.524", align 1 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.525", align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 %1 = bitcast %"struct.thrust::detail::wrapped_function.524"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEvEC2ERKS6_(%"struct.thrust::detail::wrapped_function.524"* %wrapped_f, %"struct.thrust::detail::unary_transform_functor.523"* dereferenceable(1) %f) br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = bitcast %"class.thrust::zip_iterator.518"* %first to %"class.thrust::iterator_facade.519"* %3 = bitcast %"class.thrust::zip_iterator.518"* %last to %"class.thrust::iterator_facade.519"* %call = call zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.519"* dereferenceable(1) %2, %"class.thrust::iterator_facade.519"* dereferenceable(1) %3) br i1 %call, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = bitcast %"class.thrust::zip_iterator.518"* %first to %"class.thrust::iterator_facade.519"* %call1 = call { i64, i16* } @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv(%"class.thrust::iterator_facade.519"* %4) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.525", %"class.thrust::detail::tuple_of_iterator_references.525"* %ref.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %coerce.dive, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive2 to { i64, i16* }* %6 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %5, i32 0, i32 0 %7 = extractvalue { i64, i16* } %call1, 0 store i64 %7, i64* %6, align 8 %8 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %5, i32 0, i32 1 %9 = extractvalue { i64, i16* } %call1, 1 store i16* %9, i16** %8, align 8 call void @_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRsNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.524"* %wrapped_f, %"class.thrust::detail::tuple_of_iterator_references.525"* dereferenceable(16) %ref.tmp) br label %for.inc for.inc: ; preds = %for.body %10 = bitcast %"class.thrust::zip_iterator.518"* %first to %"class.thrust::iterator_facade.519"* %call3 = call dereferenceable(16) %"class.thrust::zip_iterator.518"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv(%"class.thrust::iterator_facade.519"* %10) br label %for.cond for.end: ; preds = %for.cond call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_(%"class.thrust::zip_iterator.518"* %agg.result, %"class.thrust::zip_iterator.518"* dereferenceable(16) %first) %11 = bitcast %"struct.thrust::detail::wrapped_function.524"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %11) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ERKSB_(%"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 %.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 store %"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.518"* %0, %"class.thrust::zip_iterator.518"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %this.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.518"* %this1 to %"class.thrust::iterator_facade.519"* %2 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.518"* %2 to %"class.thrust::iterator_facade.519"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.518", %"class.thrust::zip_iterator.518"* %this1, i32 0, i32 0 %4 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %.addr, align 8 %m_iterator_tuple2 = getelementptr inbounds %"class.thrust::zip_iterator.518", %"class.thrust::zip_iterator.518"* %4, i32 0, i32 0 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple.520"* %m_iterator_tuple, %"class.thrust::tuple.520"* dereferenceable(16) %m_iterator_tuple2) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEvEC2ERKS6_(%"struct.thrust::detail::wrapped_function.524"* %this, %"struct.thrust::detail::unary_transform_functor.523"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.524"*, align 8 %f.addr = alloca %"struct.thrust::detail::unary_transform_functor.523"*, align 8 store %"struct.thrust::detail::wrapped_function.524"* %this, %"struct.thrust::detail::wrapped_function.524"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::unary_transform_functor.523"* %f, %"struct.thrust::detail::unary_transform_functor.523"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.524"*, %"struct.thrust::detail::wrapped_function.524"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.524", %"struct.thrust::detail::wrapped_function.524"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::unary_transform_functor.523"*, %"struct.thrust::detail::unary_transform_functor.523"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::unary_transform_functor.523"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::unary_transform_functor.523"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExSC_SD_SH_SI_SL_xEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSM_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.519"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.519"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.519"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.519"*, align 8 store %"class.thrust::iterator_facade.519"* %lhs, %"class.thrust::iterator_facade.519"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.519"* %rhs, %"class.thrust::iterator_facade.519"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.519"*, %"class.thrust::iterator_facade.519"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.519"* %0 to %"class.thrust::zip_iterator.518"* %2 = load %"class.thrust::iterator_facade.519"*, %"class.thrust::iterator_facade.519"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.519"* %2 to %"class.thrust::zip_iterator.518"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_(%"class.thrust::zip_iterator.518"* dereferenceable(16) %1, %"class.thrust::zip_iterator.518"* dereferenceable(16) %3) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_23unary_transform_functorIN8unittest14random_integerIsLb0EEEEEvEclINS0_28tuple_of_iterator_referencesImRsNS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.524"* %this, %"class.thrust::detail::tuple_of_iterator_references.525"* dereferenceable(16) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.524"*, align 8 %x.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.525"*, align 8 %agg.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.525", align 8 store %"struct.thrust::detail::wrapped_function.524"* %this, %"struct.thrust::detail::wrapped_function.524"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tuple_of_iterator_references.525"* %x, %"class.thrust::detail::tuple_of_iterator_references.525"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.524"*, %"struct.thrust::detail::wrapped_function.524"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.524", %"struct.thrust::detail::wrapped_function.524"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tuple_of_iterator_references.525"*, %"class.thrust::detail::tuple_of_iterator_references.525"** %x.addr, align 8 %call = call dereferenceable(16) %"class.thrust::detail::tuple_of_iterator_references.525"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRsNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_(%"class.thrust::detail::tuple_of_iterator_references.525"* dereferenceable(16) %0) %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references.525"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::tuple_of_iterator_references.525"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::tuple_of_iterator_references.525"* %agg.tmp to { i64, i16* }* %4 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %3, i32 0, i32 0 %5 = load i64, i64* %4, align 8 %6 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %3, i32 0, i32 1 %7 = load i16*, i16** %6, align 8 call void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIsLb0EEEEclINS0_28tuple_of_iterator_referencesImRsNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_(%"struct.thrust::detail::unary_transform_functor.523"* %m_f, i64 %5, i16* %7) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i16* } @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExEdeEv(%"class.thrust::iterator_facade.519"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.525", align 8 %this.addr = alloca %"class.thrust::iterator_facade.519"*, align 8 store %"class.thrust::iterator_facade.519"* %this, %"class.thrust::iterator_facade.519"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.519"*, %"class.thrust::iterator_facade.519"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator.518"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.519"* %this1) %call2 = call { i64, i16* } @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_(%"class.thrust::zip_iterator.518"* dereferenceable(16) %call) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.525", %"class.thrust::detail::tuple_of_iterator_references.525"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %coerce.dive, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive3 to { i64, i16* }* %1 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %0, i32 0, i32 0 %2 = extractvalue { i64, i16* } %call2, 0 store i64 %2, i64* %1, align 8 %3 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %0, i32 0, i32 1 %4 = extractvalue { i64, i16* } %call2, 1 store i16* %4, i16** %3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.525", %"class.thrust::detail::tuple_of_iterator_references.525"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %coerce.dive4, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive5 to { i64, i16* }* %6 = load { i64, i16* }, { i64, i16* }* %5, align 8 ret { i64, i16* } %6 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.518"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExEppEv(%"class.thrust::iterator_facade.519"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.519"*, align 8 store %"class.thrust::iterator_facade.519"* %this, %"class.thrust::iterator_facade.519"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.519"*, %"class.thrust::iterator_facade.519"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::zip_iterator.518"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.519"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_(%"class.thrust::zip_iterator.518"* dereferenceable(16) %call) %call2 = call dereferenceable(16) %"class.thrust::zip_iterator.518"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.519"* %this1) ret %"class.thrust::zip_iterator.518"* %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2EOSB_(%"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 %.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 store %"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.518"* %0, %"class.thrust::zip_iterator.518"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %this.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.518"* %this1 to %"class.thrust::iterator_facade.519"* %2 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.518"* %2 to %"class.thrust::iterator_facade.519"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.518", %"class.thrust::zip_iterator.518"* %this1, i32 0, i32 0 %4 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %.addr, align 8 %m_iterator_tuple2 = getelementptr inbounds %"class.thrust::zip_iterator.518", %"class.thrust::zip_iterator.518"* %4, i32 0, i32 0 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_(%"class.thrust::tuple.520"* %m_iterator_tuple, %"class.thrust::tuple.520"* dereferenceable(16) %m_iterator_tuple2) ret void } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEESD_EEbRKT_RKT0_(%"class.thrust::zip_iterator.518"* dereferenceable(16) %f1, %"class.thrust::zip_iterator.518"* dereferenceable(16) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 store %"class.thrust::zip_iterator.518"* %f1, %"class.thrust::zip_iterator.518"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.518"* %f2, %"class.thrust::zip_iterator.518"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %f2.addr, align 8 %call = call zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.518"* %0, %"class.thrust::zip_iterator.518"* dereferenceable(16) %1) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE5equalISA_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"* dereferenceable(16) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 store %"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.518"* %other, %"class.thrust::zip_iterator.518"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::tuple.520"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.518"* %this1) %0 = bitcast %"class.thrust::tuple.520"* %call to %"struct.thrust::detail::cons.521"* %call2 = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPsEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.521"* dereferenceable(16) %0) %1 = bitcast %"class.thrust::counting_iterator"* %call2 to %"class.thrust::iterator_facade.84"* %2 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %other.addr, align 8 %call3 = call dereferenceable(16) %"class.thrust::tuple.520"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.518"* %2) %3 = bitcast %"class.thrust::tuple.520"* %call3 to %"struct.thrust::detail::cons.521"* %call4 = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPsEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.521"* dereferenceable(16) %3) %4 = bitcast %"class.thrust::counting_iterator"* %call4 to %"class.thrust::iterator_facade.84"* %call5 = call zeroext i1 @_ZN6thrusteqINS_17counting_iteratorImNS_11use_defaultES2_S2_EEmNS_14any_system_tagENS_27random_access_traversal_tagEmxS3_mS4_S5_mxEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNS6_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.84"* dereferenceable(1) %1, %"class.thrust::iterator_facade.84"* dereferenceable(1) %4) ret i1 %call5 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPsEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.521"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.521"*, align 8 store %"struct.thrust::detail::cons.521"* %c, %"struct.thrust::detail::cons.521"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPsEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.521"* dereferenceable(16) %0) ret %"class.thrust::counting_iterator"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS_17counting_iteratorImNS_11use_defaultES5_S5_EES6_NS0_4consINS0_15normal_iteratorIPsEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.521"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.521"*, align 8 store %"struct.thrust::detail::cons.521"* %t, %"struct.thrust::detail::cons.521"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %0, i32 0, i32 0 ret %"class.thrust::counting_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail23unary_transform_functorIN8unittest14random_integerIsLb0EEEEclINS0_28tuple_of_iterator_referencesImRsNS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi1ET_E4typeEE4typeESD_(%"struct.thrust::detail::unary_transform_functor.523"* %this, i64 %t.coerce0, i16* %t.coerce1) #8 comdat align 2 { entry: %t = alloca %"class.thrust::detail::tuple_of_iterator_references.525", align 8 %this.addr = alloca %"struct.thrust::detail::unary_transform_functor.523"*, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.525"* %t to { i64, i16* }* %1 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %0, i32 0, i32 0 store i64 %t.coerce0, i64* %1, align 8 %2 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %0, i32 0, i32 1 store i16* %t.coerce1, i16** %2, align 8 store %"struct.thrust::detail::unary_transform_functor.523"* %this, %"struct.thrust::detail::unary_transform_functor.523"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::unary_transform_functor.523"*, %"struct.thrust::detail::unary_transform_functor.523"** %this.addr, align 8 %f = getelementptr inbounds %"struct.thrust::detail::unary_transform_functor.523", %"struct.thrust::detail::unary_transform_functor.523"* %this1, i32 0, i32 0 %3 = bitcast %"class.thrust::detail::tuple_of_iterator_references.525"* %t to %"struct.thrust::detail::cons.527"* %call = call dereferenceable(8) i64* @_ZN6thrust3getILi0EmNS_6detail4consIRsNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.527"* dereferenceable(16) %3) %4 = load i64, i64* %call, align 8, !tbaa !13 %conv = trunc i64 %4 to i32 %call2 = call signext i16 @_ZNK8unittest14random_integerIsLb0EEclEj(%"struct.unittest::random_integer.513"* %f, i32 %conv) %5 = bitcast %"class.thrust::detail::tuple_of_iterator_references.525"* %t to %"struct.thrust::detail::cons.527"* %call3 = call dereferenceable(2) i16* @_ZN6thrust3getILi1EmNS_6detail4consIRsNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.527"* dereferenceable(16) %5) store i16 %call2, i16* %call3, align 2, !tbaa !346 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(16) %"class.thrust::detail::tuple_of_iterator_references.525"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesImRsNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_13raw_referenceIKT_E4typeERS8_(%"class.thrust::detail::tuple_of_iterator_references.525"* dereferenceable(16) %ref) #8 comdat { entry: %ref.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.525"*, align 8 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.525"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.525"* %ref, %"class.thrust::detail::tuple_of_iterator_references.525"** %ref.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.525"*, %"class.thrust::detail::tuple_of_iterator_references.525"** %ref.addr, align 8 store %"class.thrust::detail::tuple_of_iterator_references.525"* %0, %"class.thrust::detail::tuple_of_iterator_references.525"** %ref.tmp, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references.525"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRsNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_(%"class.thrust::detail::tuple_of_iterator_references.525"** dereferenceable(8) %ref.tmp) ret %"class.thrust::detail::tuple_of_iterator_references.525"* %call } ; Function Attrs: uwtable define linkonce_odr signext i16 @_ZNK8unittest14random_integerIsLb0EEclEj(%"struct.unittest::random_integer.513"* %this, i32 %i) #0 comdat align 2 { entry: %this.addr = alloca %"struct.unittest::random_integer.513"*, align 8 %i.addr = alloca i32, align 4 %rng = alloca %"class.thrust::random::linear_congruential_engine", align 4 %dist = alloca %"class.thrust::random::uniform_int_distribution.529", align 2 store %"struct.unittest::random_integer.513"* %this, %"struct.unittest::random_integer.513"** %this.addr, align 8, !tbaa !1 store i32 %i, i32* %i.addr, align 4, !tbaa !11 %this1 = load %"struct.unittest::random_integer.513"*, %"struct.unittest::random_integer.513"** %this.addr, align 8 %0 = bitcast %"class.thrust::random::linear_congruential_engine"* %rng to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %i.addr, align 4, !tbaa !11 %call = call i32 @_ZN8unittest4hashEj(i32 %1) call void @_ZN6thrust6random26linear_congruential_engineIjLj48271ELj0ELj2147483647EEC2Ej(%"class.thrust::random::linear_congruential_engine"* %rng, i32 %call) %2 = bitcast %"class.thrust::random::uniform_int_distribution.529"* %dist to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 call void @_ZN6thrust6random24uniform_int_distributionIsEC2Ess(%"class.thrust::random::uniform_int_distribution.529"* %dist, i16 signext 0, i16 signext 32767) %call2 = call signext i16 @_ZN6thrust6random24uniform_int_distributionIsEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEsRT_(%"class.thrust::random::uniform_int_distribution.529"* %dist, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %rng) %3 = bitcast %"class.thrust::random::uniform_int_distribution.529"* %dist to i8* call void @llvm.lifetime.end(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::random::linear_congruential_engine"* %rng to i8* call void @llvm.lifetime.end(i64 4, i8* %4) #5 ret i16 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) i64* @_ZN6thrust3getILi0EmNS_6detail4consIRsNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.527"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.527"*, align 8 store %"struct.thrust::detail::cons.527"* %c, %"struct.thrust::detail::cons.527"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.527"*, %"struct.thrust::detail::cons.527"** %c.addr, align 8 %call = call dereferenceable(8) i64* @_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRsNS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.527"* dereferenceable(16) %0) ret i64* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust3getILi1EmNS_6detail4consIRsNS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS2_IT0_T1_EEE4typeEE14non_const_typeERSA_(%"struct.thrust::detail::cons.527"* dereferenceable(16) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.527"*, align 8 store %"struct.thrust::detail::cons.527"* %c, %"struct.thrust::detail::cons.527"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.527"*, %"struct.thrust::detail::cons.527"** %c.addr, align 8 %call = call dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi1EE3getIRsmNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.527"* dereferenceable(16) %0) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6random24uniform_int_distributionIsEC2Ess(%"class.thrust::random::uniform_int_distribution.529"* %this, i16 signext %a, i16 signext %b) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_int_distribution.529"*, align 8 %a.addr = alloca i16, align 2 %b.addr = alloca i16, align 2 store %"class.thrust::random::uniform_int_distribution.529"* %this, %"class.thrust::random::uniform_int_distribution.529"** %this.addr, align 8, !tbaa !1 store i16 %a, i16* %a.addr, align 2, !tbaa !346 store i16 %b, i16* %b.addr, align 2, !tbaa !346 %this1 = load %"class.thrust::random::uniform_int_distribution.529"*, %"class.thrust::random::uniform_int_distribution.529"** %this.addr, align 8 %m_param = getelementptr inbounds %"class.thrust::random::uniform_int_distribution.529", %"class.thrust::random::uniform_int_distribution.529"* %this1, i32 0, i32 0 call void @_ZN6thrust4pairIssEC2ERKsS3_(%"struct.thrust::pair.487"* %m_param, i16* dereferenceable(2) %a.addr, i16* dereferenceable(2) %b.addr) ret void } ; Function Attrs: uwtable define linkonce_odr signext i16 @_ZN6thrust6random24uniform_int_distributionIsEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEsRT_(%"class.thrust::random::uniform_int_distribution.529"* %this, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %urng) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_int_distribution.529"*, align 8 %urng.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 store %"class.thrust::random::uniform_int_distribution.529"* %this, %"class.thrust::random::uniform_int_distribution.529"** %this.addr, align 8, !tbaa !1 store %"class.thrust::random::linear_congruential_engine"* %urng, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::random::uniform_int_distribution.529"*, %"class.thrust::random::uniform_int_distribution.529"** %this.addr, align 8 %0 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8 %m_param = getelementptr inbounds %"class.thrust::random::uniform_int_distribution.529", %"class.thrust::random::uniform_int_distribution.529"* %this1, i32 0, i32 0 %call = call signext i16 @_ZN6thrust6random24uniform_int_distributionIsEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEsRT_RKNS_4pairIssEE(%"class.thrust::random::uniform_int_distribution.529"* %this1, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %0, %"struct.thrust::pair.487"* dereferenceable(4) %m_param) ret i16 %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairIssEC2ERKsS3_(%"struct.thrust::pair.487"* %this, i16* dereferenceable(2) %x, i16* dereferenceable(2) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.487"*, align 8 %x.addr = alloca i16*, align 8 %y.addr = alloca i16*, align 8 store %"struct.thrust::pair.487"* %this, %"struct.thrust::pair.487"** %this.addr, align 8, !tbaa !1 store i16* %x, i16** %x.addr, align 8, !tbaa !7 store i16* %y, i16** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %this1, i32 0, i32 0 %0 = load i16*, i16** %x.addr, align 8 %1 = load i16, i16* %0, align 2, !tbaa !346 store i16 %1, i16* %first, align 2, !tbaa !348 %second = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %this1, i32 0, i32 1 %2 = load i16*, i16** %y.addr, align 8 %3 = load i16, i16* %2, align 2, !tbaa !346 store i16 %3, i16* %second, align 2, !tbaa !350 ret void } ; Function Attrs: uwtable define linkonce_odr signext i16 @_ZN6thrust6random24uniform_int_distributionIsEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEsRT_RKNS_4pairIssEE(%"class.thrust::random::uniform_int_distribution.529"* %this, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %urng, %"struct.thrust::pair.487"* dereferenceable(4) %parm) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::random::uniform_int_distribution.529"*, align 8 %urng.addr = alloca %"class.thrust::random::linear_congruential_engine"*, align 8 %parm.addr = alloca %"struct.thrust::pair.487"*, align 8 %real_min = alloca double, align 8 %real_max = alloca double, align 8 %real_dist = alloca %"class.thrust::random::uniform_real_distribution", align 8 store %"class.thrust::random::uniform_int_distribution.529"* %this, %"class.thrust::random::uniform_int_distribution.529"** %this.addr, align 8, !tbaa !1 store %"class.thrust::random::linear_congruential_engine"* %urng, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %parm, %"struct.thrust::pair.487"** %parm.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::random::uniform_int_distribution.529"*, %"class.thrust::random::uniform_int_distribution.529"** %this.addr, align 8 %0 = bitcast double* %real_min to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %parm.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %1, i32 0, i32 0 %2 = load i16, i16* %first, align 2, !tbaa !348 %conv = sitofp i16 %2 to double store double %conv, double* %real_min, align 8, !tbaa !44 %3 = bitcast double* %real_max to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %parm.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %4, i32 0, i32 1 %5 = load i16, i16* %second, align 2, !tbaa !350 %conv2 = sitofp i16 %5 to double store double %conv2, double* %real_max, align 8, !tbaa !44 %6 = bitcast %"class.thrust::random::uniform_real_distribution"* %real_dist to i8* call void @llvm.lifetime.start(i64 16, i8* %6) #5 %7 = load double, double* %real_min, align 8, !tbaa !44 %8 = load double, double* %real_max, align 8, !tbaa !44 %add = fadd double %8, 1.000000e+00 call void @_ZN6thrust6random25uniform_real_distributionIdEC2Edd(%"class.thrust::random::uniform_real_distribution"* %real_dist, double %7, double %add) %9 = load %"class.thrust::random::linear_congruential_engine"*, %"class.thrust::random::linear_congruential_engine"** %urng.addr, align 8 %call = call double @_ZN6thrust6random25uniform_real_distributionIdEclINS0_26linear_congruential_engineIjLj48271ELj0ELj2147483647EEEEEdRT_(%"class.thrust::random::uniform_real_distribution"* %real_dist, %"class.thrust::random::linear_congruential_engine"* dereferenceable(4) %9) %conv3 = fptosi double %call to i16 %10 = bitcast %"class.thrust::random::uniform_real_distribution"* %real_dist to i8* call void @llvm.lifetime.end(i64 16, i8* %10) #5 %11 = bitcast double* %real_max to i8* call void @llvm.lifetime.end(i64 8, i8* %11) #5 %12 = bitcast double* %real_min to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret i16 %conv3 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) i64* @_ZN6thrust6detail9get_classILi0EE3getIRmmNS0_4consIRsNS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.527"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.527"*, align 8 store %"struct.thrust::detail::cons.527"* %t, %"struct.thrust::detail::cons.527"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.527"*, %"struct.thrust::detail::cons.527"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.527", %"struct.thrust::detail::cons.527"* %0, i32 0, i32 0 ret i64* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi1EE3getIRsmNS0_4consIS4_NS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.527"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.527"*, align 8 store %"struct.thrust::detail::cons.527"* %t, %"struct.thrust::detail::cons.527"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.527"*, %"struct.thrust::detail::cons.527"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.527", %"struct.thrust::detail::cons.527"* %0, i32 0, i32 1 %call = call dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi0EE3getIRsS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.528"* dereferenceable(8) %tail) ret i16* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi0EE3getIRsS4_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.528"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.528"*, align 8 store %"struct.thrust::detail::cons.528"* %t, %"struct.thrust::detail::cons.528"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.528"*, %"struct.thrust::detail::cons.528"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.528", %"struct.thrust::detail::cons.528"* %0, i32 0, i32 0 %ref = load i16*, i16** %head, align 8, !tbaa !7 ret i16* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references.525"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesImRsNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEEENS1_14pointer_traitsIT_E11raw_pointerERKS9_(%"class.thrust::detail::tuple_of_iterator_references.525"** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.525"**, align 8 store %"class.thrust::detail::tuple_of_iterator_references.525"** %ptr, %"class.thrust::detail::tuple_of_iterator_references.525"*** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.525"**, %"class.thrust::detail::tuple_of_iterator_references.525"*** %ptr.addr, align 8 %1 = load %"class.thrust::detail::tuple_of_iterator_references.525"*, %"class.thrust::detail::tuple_of_iterator_references.525"** %0, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references.525"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRsNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_(%"class.thrust::detail::tuple_of_iterator_references.525"* %1) ret %"class.thrust::detail::tuple_of_iterator_references.525"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references.525"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesImRsNS_9null_typeES4_S4_S4_S4_S4_S4_S4_EEE3getES7_(%"class.thrust::detail::tuple_of_iterator_references.525"* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.525"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.525"* %ptr, %"class.thrust::detail::tuple_of_iterator_references.525"** %ptr.addr, align 8, !tbaa !1 %0 = load %"class.thrust::detail::tuple_of_iterator_references.525"*, %"class.thrust::detail::tuple_of_iterator_references.525"** %ptr.addr, align 8, !tbaa !1 ret %"class.thrust::detail::tuple_of_iterator_references.525"* %0 } ; Function Attrs: uwtable define linkonce_odr { i64, i16* } @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEENT_9referenceERKSE_(%"class.thrust::zip_iterator.518"* dereferenceable(16) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.525", align 8 %f.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 store %"class.thrust::zip_iterator.518"* %f, %"class.thrust::zip_iterator.518"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %f.addr, align 8 %call = call { i64, i16* } @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv(%"class.thrust::zip_iterator.518"* %0) %coerce.dive = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.525", %"class.thrust::detail::tuple_of_iterator_references.525"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %coerce.dive, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive1 to { i64, i16* }* %2 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %1, i32 0, i32 0 %3 = extractvalue { i64, i16* } %call, 0 store i64 %3, i64* %2, align 8 %4 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %1, i32 0, i32 1 %5 = extractvalue { i64, i16* } %call, 1 store i16* %5, i16** %4, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.525", %"class.thrust::detail::tuple_of_iterator_references.525"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %coerce.dive2, i32 0, i32 0 %6 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive3 to { i64, i16* }* %7 = load { i64, i16* }, { i64, i16* }* %6, align 8 ret { i64, i16* } %7 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.518"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.519"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.519"*, align 8 store %"class.thrust::iterator_facade.519"* %this, %"class.thrust::iterator_facade.519"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.519"*, %"class.thrust::iterator_facade.519"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.519"* %this1 to %"class.thrust::zip_iterator.518"* ret %"class.thrust::zip_iterator.518"* %0 } ; Function Attrs: uwtable define linkonce_odr { i64, i16* } @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE11dereferenceEv(%"class.thrust::zip_iterator.518"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::tuple_of_iterator_references.525", align 8 %this.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 %ref.tmp = alloca %"class.thrust::tuple.526", align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %this.addr, align 8 %call = call dereferenceable(16) %"class.thrust::tuple.520"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.518"* %this1) %call2 = call { i64, i16* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_(%"class.thrust::tuple.520"* dereferenceable(16) %call) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %ref.tmp, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive to { i64, i16* }* %1 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %0, i32 0, i32 0 %2 = extractvalue { i64, i16* } %call2, 0 store i64 %2, i64* %1, align 8 %3 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %0, i32 0, i32 1 %4 = extractvalue { i64, i16* } %call2, 1 store i16* %4, i16** %3, align 8 call void @_ZN6thrust6detail28tuple_of_iterator_referencesImRsNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE(%"class.thrust::detail::tuple_of_iterator_references.525"* %retval, %"class.thrust::tuple.526"* dereferenceable(16) %ref.tmp) %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::tuple_of_iterator_references.525", %"class.thrust::detail::tuple_of_iterator_references.525"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %coerce.dive3, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive4 to { i64, i16* }* %6 = load { i64, i16* }, { i64, i16* }* %5, align 8 ret { i64, i16* } %6 } ; Function Attrs: uwtable define linkonce_odr { i64, i16* } @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS_17counting_iteratorImNS_11use_defaultES6_S6_EENS0_15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISE_EE5valueEE4typeERKSE_T1_(%"class.thrust::tuple.520"* dereferenceable(16) %t) #0 comdat { entry: %retval = alloca %"class.thrust::tuple.526", align 8 %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.520"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::tuple.520"* %t, %"class.thrust::tuple.520"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %t.addr, align 8 %call = call { i64, i16* } @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_(%"class.thrust::tuple.520"* dereferenceable(16) %0) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %retval, i32 0, i32 0 %1 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive to { i64, i16* }* %2 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %1, i32 0, i32 0 %3 = extractvalue { i64, i16* } %call, 0 store i64 %3, i64* %2, align 8 %4 = getelementptr inbounds { i64, i16* }, { i64, i16* }* %1, i32 0, i32 1 %5 = extractvalue { i64, i16* } %call, 1 store i16* %5, i16** %4, align 8 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %retval, i32 0, i32 0 %6 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive1 to { i64, i16* }* %7 = load { i64, i16* }, { i64, i16* }* %6, align 8 ret { i64, i16* } %7 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail28tuple_of_iterator_referencesImRsNS_9null_typeES3_S3_S3_S3_S3_S3_S3_EC2ERKNS_5tupleImS2_S3_S3_S3_S3_S3_S3_S3_S3_EE(%"class.thrust::detail::tuple_of_iterator_references.525"* %this, %"class.thrust::tuple.526"* dereferenceable(16) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.525"*, align 8 %other.addr = alloca %"class.thrust::tuple.526"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.525"* %this, %"class.thrust::detail::tuple_of_iterator_references.525"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.526"* %other, %"class.thrust::tuple.526"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::tuple_of_iterator_references.525"*, %"class.thrust::detail::tuple_of_iterator_references.525"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.525"* %this1 to %"class.thrust::tuple.526"* %1 = load %"class.thrust::tuple.526"*, %"class.thrust::tuple.526"** %other.addr, align 8 %2 = bitcast %"class.thrust::tuple.526"* %0 to i8* %3 = bitcast %"class.thrust::tuple.526"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 16, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr { i64, i16* } @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS0_15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EENS0_20dereference_iterator5applyESB_Lj2EE27do_it_on_the_host_or_deviceERKSA_SB_(%"class.thrust::tuple.520"* dereferenceable(16) %t) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::tuple.526", align 8 %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.520"*, align 8 %ref.tmp = alloca i64, align 8 store %"class.thrust::tuple.520"* %t, %"class.thrust::tuple.520"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.520"* %0 to %"struct.thrust::detail::cons.521"* %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust3getILi0ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPsEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.521"* dereferenceable(16) %1) %call1 = call i64 @_ZN6thrust6detail20dereference_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::counting_iterator"* dereferenceable(8) %call) store i64 %call1, i64* %ref.tmp, align 8, !tbaa !13 %2 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.520"* %2 to %"struct.thrust::detail::cons.521"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust3getILi1ENS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail4consINS4_15normal_iteratorIPsEENS_9null_typeEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSF_(%"struct.thrust::detail::cons.521"* dereferenceable(16) %3) %call3 = call dereferenceable(2) i16* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPsEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %call2) call void @_ZN6thrust5tupleImRsNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_(%"class.thrust::tuple.526"* %retval, i64* dereferenceable(8) %ref.tmp, i16* dereferenceable(2) %call3) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.526", %"class.thrust::tuple.526"* %retval, i32 0, i32 0 %4 = bitcast %"struct.thrust::detail::cons.527"* %coerce.dive to { i64, i16* }* %5 = load { i64, i16* }, { i64, i16* }* %4, align 8 ret { i64, i16* } %5 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPsEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %this, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %it) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::dereference_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 store %"struct.thrust::detail::dereference_iterator"* %this, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.475"* %it, %"class.thrust::detail::normal_iterator.475"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::dereference_iterator"*, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %0 to %"class.thrust::iterator_facade.477"* %call = call dereferenceable(2) i16* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEdeEv(%"class.thrust::iterator_facade.477"* %1) ret i16* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleImRsNS_9null_typeES2_S2_S2_S2_S2_S2_S2_EC2ERKmS1_(%"class.thrust::tuple.526"* %this, i64* dereferenceable(8) %t0, i16* dereferenceable(2) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.526"*, align 8 %t0.addr = alloca i64*, align 8 %t1.addr = alloca i16*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.526"* %this, %"class.thrust::tuple.526"** %this.addr, align 8, !tbaa !1 store i64* %t0, i64** %t0.addr, align 8, !tbaa !7 store i16* %t1, i16** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.526"*, %"class.thrust::tuple.526"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.526"* %this1 to %"struct.thrust::detail::cons.527"* %1 = load i64*, i64** %t0.addr, align 8 %2 = load i16*, i16** %t1.addr, align 8 call void @_ZN6thrust6detail4consImNS1_IRsNS_9null_typeEEEEC2IKmsKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.527"* %0, i64* dereferenceable(8) %1, i16* dereferenceable(2) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) i16* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEdeEv(%"class.thrust::iterator_facade.477"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 store %"class.thrust::iterator_facade.477"* %this, %"class.thrust::iterator_facade.477"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslE7derivedEv(%"class.thrust::iterator_facade.477"* %this1) %call2 = call dereferenceable(2) i16* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPsEEEENT_9referenceERKS6_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %call) ret i16* %call2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPsEEEENT_9referenceERKS6_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 store %"class.thrust::detail::normal_iterator.475"* %f, %"class.thrust::detail::normal_iterator.475"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %0 to %"class.thrust::iterator_adaptor.476"* %call = call dereferenceable(2) i16* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv(%"class.thrust::iterator_adaptor.476"* %1) ret i16* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslE7derivedEv(%"class.thrust::iterator_facade.477"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 store %"class.thrust::iterator_facade.477"* %this, %"class.thrust::iterator_facade.477"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.477"* %this1 to %"class.thrust::detail::normal_iterator.475"* ret %"class.thrust::detail::normal_iterator.475"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(2) i16* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E11dereferenceEv(%"class.thrust::iterator_adaptor.476"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.476"*, align 8 store %"class.thrust::iterator_adaptor.476"* %this, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.476"*, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %this1, i32 0, i32 0 %0 = load i16*, i16** %m_iterator, align 8, !tbaa !357 ret i16* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consImNS1_IRsNS_9null_typeEEEEC2IKmsKS3_S8_S8_S8_S8_S8_S8_S8_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.527"* %this, i64* dereferenceable(8) %t1, i16* dereferenceable(2) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.527"*, align 8 %t1.addr = alloca i64*, align 8 %t2.addr = alloca i16*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.527"* %this, %"struct.thrust::detail::cons.527"** %this.addr, align 8, !tbaa !1 store i64* %t1, i64** %t1.addr, align 8, !tbaa !7 store i16* %t2, i16** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.527"*, %"struct.thrust::detail::cons.527"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.527", %"struct.thrust::detail::cons.527"* %this1, i32 0, i32 0 %0 = load i64*, i64** %t1.addr, align 8 %1 = load i64, i64* %0, align 8, !tbaa !13 store i64 %1, i64* %head, align 8, !tbaa !362 %tail = getelementptr inbounds %"struct.thrust::detail::cons.527", %"struct.thrust::detail::cons.527"* %this1, i32 0, i32 1 %2 = load i16*, i16** %t2.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRsNS_9null_typeEEC2IsEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.528"* %tail, i16* dereferenceable(2) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIRsNS_9null_typeEEC2IsEERT_RKS3_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.528"* %this, i16* dereferenceable(2) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.528"*, align 8 %t1.addr = alloca i16*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.528"* %this, %"struct.thrust::detail::cons.528"** %this.addr, align 8, !tbaa !1 store i16* %t1, i16** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.528"*, %"struct.thrust::detail::cons.528"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.528", %"struct.thrust::detail::cons.528"* %this9, i32 0, i32 0 %9 = load i16*, i16** %t1.addr, align 8 store i16* %9, i16** %head, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS_6detail15normal_iteratorIPsEENS_9null_typeESB_SB_SB_SB_SB_SB_SB_EEEEEEvRT_(%"class.thrust::zip_iterator.518"* dereferenceable(16) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 store %"class.thrust::zip_iterator.518"* %f, %"class.thrust::zip_iterator.518"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %f.addr, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv(%"class.thrust::zip_iterator.518"* %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(16) %"class.thrust::zip_iterator.518"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES4_S4_EENS_6detail15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EEEENS2_ImsSA_SA_SA_SA_SA_SA_SA_SA_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS6_28tuple_of_iterator_referencesImRsSA_SA_SA_SA_SA_SA_SA_SA_EExE7derivedEv(%"class.thrust::iterator_facade.519"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.519"*, align 8 store %"class.thrust::iterator_facade.519"* %this, %"class.thrust::iterator_facade.519"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.519"*, %"class.thrust::iterator_facade.519"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.519"* %this1 to %"class.thrust::zip_iterator.518"* ret %"class.thrust::zip_iterator.518"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEE9incrementEv(%"class.thrust::zip_iterator.518"* %this) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.518", %"class.thrust::zip_iterator.518"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_(%"class.thrust::tuple.520"* dereferenceable(16) %m_iterator_tuple) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS_17counting_iteratorImNS_11use_defaultES5_S5_EENS0_15normal_iteratorIPsEENS_9null_typeESA_SA_SA_SA_SA_SA_SA_EENS0_18increment_iteratorEEET0_RT_SD_(%"class.thrust::tuple.520"* dereferenceable(16) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.520"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::tuple.520"* %t, %"class.thrust::tuple.520"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.520"* %0 to %"struct.thrust::detail::cons.521"* %call = call dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.521"* %1) call void @_ZN6thrust6detail18increment_iteratorclINS_17counting_iteratorImNS_11use_defaultES4_S4_EEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::counting_iterator"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.520"* %2 to %"struct.thrust::detail::cons.521"* %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.522"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.521"* %3) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPsEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_(%"struct.thrust::detail::cons.522"* dereferenceable(8) %call1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::counting_iterator"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.521"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.521"*, align 8 store %"struct.thrust::detail::cons.521"* %this, %"struct.thrust::detail::cons.521"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %this1, i32 0, i32 0 ret %"class.thrust::counting_iterator"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPsEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SA_(%"struct.thrust::detail::cons.522"* dereferenceable(8) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"struct.thrust::detail::cons.522"*, align 8 %agg.tmp = alloca %"struct.thrust::null_type", align 1 %undef.agg.tmp = alloca %"struct.thrust::null_type", align 1 %agg.tmp1 = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp2 = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"struct.thrust::detail::cons.522"* %t, %"struct.thrust::detail::cons.522"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.522"*, %"struct.thrust::detail::cons.522"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.522"* %0) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPsEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.522"*, %"struct.thrust::detail::cons.522"** %t.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.522"* %1) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_18increment_iteratorEEET_NS_9null_typeES4_() ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.522"* @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.521"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.521"*, align 8 store %"struct.thrust::detail::cons.521"* %this, %"struct.thrust::detail::cons.521"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.522"* %tail } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPsEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %this, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::increment_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 store %"struct.thrust::detail::increment_iterator"* %this, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.475"* %it, %"class.thrust::detail::normal_iterator.475"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::increment_iterator"*, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %0 to %"class.thrust::iterator_facade.477"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEppEv(%"class.thrust::iterator_facade.477"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.522"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.522"*, align 8 store %"struct.thrust::detail::cons.522"* %this, %"struct.thrust::detail::cons.522"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.522"*, %"struct.thrust::detail::cons.522"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.522", %"struct.thrust::detail::cons.522"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.475"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.522"* %this) #9 comdat align 2 { entry: %retval = alloca %"struct.thrust::null_type", align 1 %this.addr = alloca %"struct.thrust::detail::cons.522"*, align 8 store %"struct.thrust::detail::cons.522"* %this, %"struct.thrust::detail::cons.522"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.522"*, %"struct.thrust::detail::cons.522"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEppEv(%"class.thrust::iterator_facade.477"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 store %"class.thrust::iterator_facade.477"* %this, %"class.thrust::iterator_facade.477"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslE7derivedEv(%"class.thrust::iterator_facade.477"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPsEEEEvRT_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslE7derivedEv(%"class.thrust::iterator_facade.477"* %this1) ret %"class.thrust::detail::normal_iterator.475"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPsEEEEvRT_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 store %"class.thrust::detail::normal_iterator.475"* %f, %"class.thrust::detail::normal_iterator.475"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %0 to %"class.thrust::iterator_adaptor.476"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv(%"class.thrust::iterator_adaptor.476"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslE7derivedEv(%"class.thrust::iterator_facade.477"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 store %"class.thrust::iterator_facade.477"* %this, %"class.thrust::iterator_facade.477"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.477"* %this1 to %"class.thrust::detail::normal_iterator.475"* ret %"class.thrust::detail::normal_iterator.475"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E9incrementEv(%"class.thrust::iterator_adaptor.476"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.476"*, align 8 store %"class.thrust::iterator_adaptor.476"* %this, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.476"*, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %this1, i32 0, i32 0 %0 = load i16*, i16** %m_iterator, align 8, !tbaa !357 %incdec.ptr = getelementptr inbounds i16, i16* %0, i32 1 store i16* %incdec.ptr, i16** %m_iterator, align 8, !tbaa !357 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2EOS9_(%"class.thrust::tuple.520"* %this, %"class.thrust::tuple.520"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.520"*, align 8 %.addr = alloca %"class.thrust::tuple.520"*, align 8 store %"class.thrust::tuple.520"* %this, %"class.thrust::tuple.520"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.520"* %0, %"class.thrust::tuple.520"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %this.addr, align 8 %1 = bitcast %"class.thrust::tuple.520"* %this1 to %"struct.thrust::detail::cons.521"* %2 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %.addr, align 8 %3 = bitcast %"class.thrust::tuple.520"* %2 to %"struct.thrust::detail::cons.521"* call void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEEC2ERKSA_(%"struct.thrust::detail::cons.521"* %1, %"struct.thrust::detail::cons.521"* dereferenceable(16) %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEEC2ERKSA_(%"struct.thrust::detail::cons.521"* %this, %"struct.thrust::detail::cons.521"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.521"*, align 8 %.addr = alloca %"struct.thrust::detail::cons.521"*, align 8 store %"struct.thrust::detail::cons.521"* %this, %"struct.thrust::detail::cons.521"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::cons.521"* %0, %"struct.thrust::detail::cons.521"** %.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %.addr, align 8 %head2 = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %1, i32 0, i32 0 call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %head, %"class.thrust::counting_iterator"* dereferenceable(8) %head2) %tail = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %this1, i32 0, i32 1 %2 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %.addr, align 8 %tail3 = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %2, i32 0, i32 1 %3 = bitcast %"struct.thrust::detail::cons.522"* %tail to i8* %4 = bitcast %"struct.thrust::detail::cons.522"* %tail3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple.520"* %this, %"class.thrust::tuple.520"* dereferenceable(16)) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.520"*, align 8 %.addr = alloca %"class.thrust::tuple.520"*, align 8 store %"class.thrust::tuple.520"* %this, %"class.thrust::tuple.520"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.520"* %0, %"class.thrust::tuple.520"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %this.addr, align 8 %1 = bitcast %"class.thrust::tuple.520"* %this1 to %"struct.thrust::detail::cons.521"* %2 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %.addr, align 8 %3 = bitcast %"class.thrust::tuple.520"* %2 to %"struct.thrust::detail::cons.521"* call void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEEC2ERKSA_(%"struct.thrust::detail::cons.521"* %1, %"struct.thrust::detail::cons.521"* dereferenceable(16) %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS_6detail15normal_iteratorIPsEENS_9null_typeES9_S9_S9_S9_S9_S9_S9_EEEC2ESA_(%"class.thrust::zip_iterator.518"* %this, %"class.thrust::tuple.520"* %iterator_tuple) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.518"*, align 8 store %"class.thrust::zip_iterator.518"* %this, %"class.thrust::zip_iterator.518"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.518"*, %"class.thrust::zip_iterator.518"** %this.addr, align 8 %0 = bitcast %"class.thrust::zip_iterator.518"* %this1 to %"class.thrust::iterator_facade.519"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.518", %"class.thrust::zip_iterator.518"* %this1, i32 0, i32 0 call void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS9_(%"class.thrust::tuple.520"* %m_iterator_tuple, %"class.thrust::tuple.520"* dereferenceable(16) %iterator_tuple) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_17counting_iteratorImNS_11use_defaultES2_S2_EENS_6detail15normal_iteratorIPsEENS_9null_typeES8_S8_S8_S8_S8_S8_S8_EC2ERKS3_RKS7_(%"class.thrust::tuple.520"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t1) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.520"*, align 8 %t0.addr = alloca %"class.thrust::counting_iterator"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 %ref.tmp8 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.520"* %this, %"class.thrust::tuple.520"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %t0, %"class.thrust::counting_iterator"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.475"* %t1, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.520"*, %"class.thrust::tuple.520"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.520"* %this1 to %"struct.thrust::detail::cons.521"* %1 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8 call void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.521"* %0, %"class.thrust::counting_iterator"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp8) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_17counting_iteratorImNS_11use_defaultES3_S3_EENS1_INS0_15normal_iteratorIPsEENS_9null_typeEEEEC2IKS4_KS7_KS8_SE_SE_SE_SE_SE_SE_SE_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.521"* %this, %"class.thrust::counting_iterator"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.521"*, align 8 %t1.addr = alloca %"class.thrust::counting_iterator"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.521"* %this, %"struct.thrust::detail::cons.521"** %this.addr, align 8, !tbaa !1 store %"class.thrust::counting_iterator"* %t1, %"class.thrust::counting_iterator"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.475"* %t2, %"class.thrust::detail::normal_iterator.475"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %this1, i32 0, i32 0 %0 = load %"class.thrust::counting_iterator"*, %"class.thrust::counting_iterator"** %t1.addr, align 8 call void @_ZN6thrust17counting_iteratorImNS_11use_defaultES1_S1_EC2ERKS2_(%"class.thrust::counting_iterator"* %head, %"class.thrust::counting_iterator"* dereferenceable(8) %0) %tail = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %this1, i32 0, i32 1 %1 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_(%"struct.thrust::detail::cons.522"* %tail, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS_9null_typeEEC2IKS4_EERT_RKS5_SC_SC_SC_SC_SC_SC_SC_SC_(%"struct.thrust::detail::cons.522"* %this, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.522"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.522"* %this, %"struct.thrust::detail::cons.522"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.475"* %t1, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.522"*, %"struct.thrust::detail::cons.522"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.522", %"struct.thrust::detail::cons.522"* %this9, i32 0, i32 0 %9 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8 %10 = bitcast %"class.thrust::detail::normal_iterator.475"* %head to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.475"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPsEENS_17counting_iteratorImNS_11use_defaultESA_SA_EENS0_4consIS6_NS_9null_typeEEEEET_RKNSC_IT0_T1_EE(%"struct.thrust::detail::cons.521"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.521"*, align 8 store %"struct.thrust::detail::cons.521"* %t, %"struct.thrust::detail::cons.521"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.521"*, %"struct.thrust::detail::cons.521"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.521", %"struct.thrust::detail::cons.521"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPsEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.522"* dereferenceable(8) %tail) ret %"class.thrust::detail::normal_iterator.475"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPsEES6_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.522"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.522"*, align 8 store %"struct.thrust::detail::cons.522"* %t, %"struct.thrust::detail::cons.522"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.522"*, %"struct.thrust::detail::cons.522"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.522", %"struct.thrust::detail::cons.522"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.475"* %head } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EEC2Em(%"class.thrust::detail::vector_base.479"* %this, i64 %n) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.479"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.std::allocator.481", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::vector_base.479"* %this, %"class.thrust::detail::vector_base.479"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base.479"*, %"class.thrust::detail::vector_base.479"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 0 call void @_ZNSaIN6thrust4pairIssEEEC2Ev(%"class.std::allocator.481"* %ref.tmp) #5 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EEC2ERKS4_(%"class.thrust::detail::contiguous_storage.480"* %m_storage, %"class.std::allocator.481"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void bitcast (void (%"class.__gnu_cxx::new_allocator.482"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEED2Ev to void (%"class.std::allocator.481"*)*)(%"class.std::allocator.481"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !365 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE12default_initEm(%"class.thrust::detail::vector_base.479"* %this1, i64 %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.482"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEED2Ev to void (%"class.std::allocator.481"*)*)(%"class.std::allocator.481"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EED2Ev(%"class.thrust::detail::contiguous_storage.480"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val4 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val4 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIN6thrust4pairIssEEEC2Ev(%"class.std::allocator.481"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.481"*, align 8 store %"class.std::allocator.481"* %this, %"class.std::allocator.481"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.481"* %this1 to %"class.__gnu_cxx::new_allocator.482"* call void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEEC2Ev(%"class.__gnu_cxx::new_allocator.482"* %0) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EEC2ERKS4_(%"class.thrust::detail::contiguous_storage.480"* %this, %"class.std::allocator.481"* dereferenceable(1) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.480"*, align 8 %alloc.addr = alloca %"class.std::allocator.481"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.480"* %this, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.481"* %alloc, %"class.std::allocator.481"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.480"*, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 0 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %alloc.addr, align 8 call void @_ZNSaIN6thrust4pairIssEEEC2ERKS2_(%"class.std::allocator.481"* %m_allocator, %"class.std::allocator.481"* dereferenceable(1) %0) #5 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 1 invoke void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIssEEEC2ES4_(%"class.thrust::detail::normal_iterator.484"* %m_begin, %"struct.thrust::pair.487"* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !370 ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.482"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEED2Ev to void (%"class.std::allocator.481"*)*)(%"class.std::allocator.481"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEED2Ev(%"class.__gnu_cxx::new_allocator.482"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.482"*, align 8 store %"class.__gnu_cxx::new_allocator.482"* %this, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.482"*, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE12default_initEm(%"class.thrust::detail::vector_base.479"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.479"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.484", align 8 store %"class.thrust::detail::vector_base.479"* %this, %"class.thrust::detail::vector_base.479"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::vector_base.479"*, %"class.thrust::detail::vector_base.479"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE8allocateEm(%"class.thrust::detail::contiguous_storage.480"* %m_storage, i64 %1) %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 1 store i64 %2, i64* %m_size, align 8, !tbaa !365 %m_storage2 = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 0 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.479"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %call4 = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE4sizeEv(%"class.thrust::detail::vector_base.479"* %this1) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive5, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive6, align 8 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE19default_construct_nENS0_15normal_iteratorIPS3_EEm(%"class.thrust::detail::contiguous_storage.480"* %m_storage2, %"struct.thrust::pair.487"* %3, i64 %call4) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EED2Ev(%"class.thrust::detail::contiguous_storage.480"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.480"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.480"* %this, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.480"*, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE10deallocateEv(%"class.thrust::detail::contiguous_storage.480"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.482"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEED2Ev to void (%"class.std::allocator.481"*)*)(%"class.std::allocator.481"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } cleanup filter [0 x i8*] zeroinitializer %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 0 call void bitcast (void (%"class.__gnu_cxx::new_allocator.482"*)* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEED2Ev to void (%"class.std::allocator.481"*)*)(%"class.std::allocator.481"* %m_allocator2) #5 br label %filter.dispatch filter.dispatch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__cxa_call_unexpected(i8* %exn) #15 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEEC2Ev(%"class.__gnu_cxx::new_allocator.482"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.482"*, align 8 store %"class.__gnu_cxx::new_allocator.482"* %this, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.482"*, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZNSaIN6thrust4pairIssEEEC2ERKS2_(%"class.std::allocator.481"* %this, %"class.std::allocator.481"* dereferenceable(1) %__a) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.481"*, align 8 %__a.addr = alloca %"class.std::allocator.481"*, align 8 store %"class.std::allocator.481"* %this, %"class.std::allocator.481"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.481"* %__a, %"class.std::allocator.481"** %__a.addr, align 8, !tbaa !7 %this1 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.481"* %this1 to %"class.__gnu_cxx::new_allocator.482"* %1 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %__a.addr, align 8 %2 = bitcast %"class.std::allocator.481"* %1 to %"class.__gnu_cxx::new_allocator.482"* call void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEEC2ERKS4_(%"class.__gnu_cxx::new_allocator.482"* %0, %"class.__gnu_cxx::new_allocator.482"* dereferenceable(1) %2) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIssEEEC2ES4_(%"class.thrust::detail::normal_iterator.484"* %this, %"struct.thrust::pair.487"* %p) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 %p.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"class.thrust::detail::normal_iterator.484"* %this, %"class.thrust::detail::normal_iterator.484"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %p, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.484"* %this1 to %"class.thrust::iterator_adaptor.485"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_EC2ERKS5_(%"class.thrust::iterator_adaptor.485"* %0, %"struct.thrust::pair.487"** dereferenceable(8) %p.addr) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEEC2ERKS4_(%"class.__gnu_cxx::new_allocator.482"* %this, %"class.__gnu_cxx::new_allocator.482"* dereferenceable(1)) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.482"*, align 8 %.addr = alloca %"class.__gnu_cxx::new_allocator.482"*, align 8 store %"class.__gnu_cxx::new_allocator.482"* %this, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8, !tbaa !1 store %"class.__gnu_cxx::new_allocator.482"* %0, %"class.__gnu_cxx::new_allocator.482"** %.addr, align 8, !tbaa !7 %this1 = load %"class.__gnu_cxx::new_allocator.482"*, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_EC2ERKS5_(%"class.thrust::iterator_adaptor.485"* %this, %"struct.thrust::pair.487"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.485"*, align 8 %iter.addr = alloca %"struct.thrust::pair.487"**, align 8 store %"class.thrust::iterator_adaptor.485"* %this, %"class.thrust::iterator_adaptor.485"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"** %iter, %"struct.thrust::pair.487"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.485"*, %"class.thrust::iterator_adaptor.485"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.485"* %this1 to %"class.thrust::iterator_facade.486"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"**, %"struct.thrust::pair.487"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %1, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %2, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !371 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE8allocateEm(%"class.thrust::detail::contiguous_storage.480"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.480"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.484", align 8 %ref.tmp3 = alloca %"class.thrust::detail::normal_iterator.484", align 8 store %"class.thrust::detail::contiguous_storage.480"* %this, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.480"*, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE8allocateERS4_m(%"class.std::allocator.481"* dereferenceable(1) %m_allocator, i64 %1) call void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIssEEEC2ES4_(%"class.thrust::detail::normal_iterator.484"* %ref.tmp, %"struct.thrust::pair.487"* %call) %2 = bitcast %"class.thrust::detail::normal_iterator.484"* %m_begin to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.484"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 2 store i64 %4, i64* %m_size, align 8, !tbaa !370 br label %if.end if.else: ; preds = %entry %m_begin2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIssEEEC2ES4_(%"class.thrust::detail::normal_iterator.484"* %ref.tmp3, %"struct.thrust::pair.487"* null) %5 = bitcast %"class.thrust::detail::normal_iterator.484"* %m_begin2 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.484"* %ref.tmp3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 2 store i64 0, i64* %m_size4, align 8, !tbaa !370 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE19default_construct_nENS0_15normal_iteratorIPS3_EEm(%"class.thrust::detail::contiguous_storage.480"* %this, %"struct.thrust::pair.487"* %first.coerce, i64 %n) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.484", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.480"*, align 8 %n.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"class.thrust::detail::contiguous_storage.480"* %this, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::contiguous_storage.480"*, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this2, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.484"* %first to %"class.thrust::iterator_adaptor.485"* %call = call dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.485"* %0) %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %call, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23default_construct_rangeISaINS_4pairIssEEEPS3_mEEvRT_T0_T1_(%"class.std::allocator.481"* dereferenceable(1) %m_allocator, %"struct.thrust::pair.487"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE4sizeEv(%"class.thrust::detail::vector_base.479"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.479"*, align 8 store %"class.thrust::detail::vector_base.479"* %this, %"class.thrust::detail::vector_base.479"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.479"*, %"class.thrust::detail::vector_base.479"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 1 %0 = load i64, i64* %m_size, align 8, !tbaa !365 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE8allocateERS4_m(%"class.std::allocator.481"* dereferenceable(1) %a, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.481"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE8allocateERS4_mEN19workaround_warnings8allocateES6_m(%"class.std::allocator.481"* dereferenceable(1) %0, i64 %1) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE8allocateERS4_mEN19workaround_warnings8allocateES6_m(%"class.std::allocator.481"* dereferenceable(1) %a, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.481"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.481"* %0 to %"class.__gnu_cxx::new_allocator.482"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.482"* %1, i64 %2, i8* null) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.482"* %this, i64 %__n, i8*) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.482"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator.482"* %this, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8, !tbaa !1 store i64 %__n, i64* %__n.addr, align 8, !tbaa !13 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.482"*, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8, !tbaa !13 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.482"* %this1) #5 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #15 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8, !tbaa !13 %mul = mul i64 %2, 4 %call2 = call i8* @_Znwm(i64 %mul) %3 = bitcast i8* %call2 to %"struct.thrust::pair.487"* ret %"struct.thrust::pair.487"* %3 } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.482"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.482"*, align 8 store %"class.__gnu_cxx::new_allocator.482"* %this, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.482"*, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8 ret i64 4611686018427387903 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23default_construct_rangeISaINS_4pairIssEEEPS3_mEEvRT_T0_T1_(%"class.std::allocator.481"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.481"*, align 8 %p.addr = alloca %"struct.thrust::pair.487"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %p, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaINS_4pairIssEEEPS4_mEENS0_9enable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS8_SA_T1_(%"class.std::allocator.481"* dereferenceable(1) %0, %"struct.thrust::pair.487"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.485"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.485"*, align 8 store %"class.thrust::iterator_adaptor.485"* %this, %"class.thrust::iterator_adaptor.485"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.485"*, %"class.thrust::iterator_adaptor.485"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %this1, i32 0, i32 0 ret %"struct.thrust::pair.487"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail23default_construct_rangeISaINS_4pairIssEEEPS4_mEENS0_9enable_ifIXsr37needs_default_construct_via_allocatorIT_NS0_15pointer_elementIT0_E4typeEEE5valueEvE4typeERS8_SA_T1_(%"class.std::allocator.481"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.481"*, align 8 %p.addr = alloca %"struct.thrust::pair.487"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", align 8 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %p, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemISaINS_4pairIssEEEE3getERS4_(%"class.std::allocator.481"* dereferenceable(1) %0) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.85"* %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEC2ERS5_(%"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %agg.tmp, %"class.std::allocator.481"* dereferenceable(1) %4) %coerce.dive = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %agg.tmp, i32 0, i32 0 %5 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %coerce.dive, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIssEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS6_EEEEET0_RKNS8_21execution_policy_baseIT_EESD_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1, %"struct.thrust::pair.487"* %2, i64 %3, %"class.std::allocator.481"* %5) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust10for_each_nINS_6system3cpp6detail3tagEPNS_4pairIssEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS6_EEEEET0_RKNS8_21execution_policy_baseIT_EESD_T1_T2_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first, i64 %n, %"class.std::allocator.481"* %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %first.addr = alloca %"struct.thrust::pair.487"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %f, i32 0, i32 0 store %"class.std::allocator.481"* %f.coerce, %"class.std::allocator.481"** %coerce.dive, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %first, %"struct.thrust::pair.487"** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %first.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %agg.tmp to i8* %5 = bitcast %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false), !tbaa.struct !62 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %agg.tmp, i32 0, i32 0 %6 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %coerce.dive2, align 8 %call3 = call %"struct.thrust::pair.487"* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIssEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS8_EEEEET0_RNS2_16execution_policyIT_EESF_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"struct.thrust::pair.487"* %2, i64 %3, %"class.std::allocator.481"* %6) ret %"struct.thrust::pair.487"* %call3 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_systemISaINS_4pairIssEEEE3getERS4_(%"class.std::allocator.481"* dereferenceable(1) %a) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.481"*, align 8 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail6systemISaINS_4pairIssEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS7_E4typeEE4typeERS7_(%"class.std::allocator.481"* dereferenceable(1) %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEC2ERS5_(%"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %this, %"class.std::allocator.481"* dereferenceable(1) %a) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"*, align 8 %a.addr = alloca %"class.std::allocator.481"*, align 8 store %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %this, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"** %this.addr, align 8, !tbaa !1 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"*, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"** %this.addr, align 8 %a2 = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %this1, i32 0, i32 0 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 store %"class.std::allocator.481"* %0, %"class.std::allocator.481"** %a2, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system6detail10sequential10for_each_nINS0_3cpp6detail3tagEPNS_4pairIssEEmNS_6detail23allocator_traits_detail24construct1_via_allocatorISaIS8_EEEEET0_RNS2_16execution_policyIT_EESF_T1_T2_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"struct.thrust::pair.487"* %first, i64 %n, %"class.std::allocator.481"* %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", align 8 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %first.addr = alloca %"struct.thrust::pair.487"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.531", align 8 %i = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %f, i32 0, i32 0 store %"class.std::allocator.481"* %f.coerce, %"class.std::allocator.481"** %coerce.dive, align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %first, %"struct.thrust::pair.487"** %first.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = bitcast %"struct.thrust::detail::wrapped_function.531"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEEvEC2ERKS7_(%"struct.thrust::detail::wrapped_function.531"* %wrapped_f, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* dereferenceable(8) %f) %2 = bitcast i64* %i to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 store i64 0, i64* %i, align 8, !tbaa !13 br label %for.cond for.cond: ; preds = %for.inc, %entry %3 = load i64, i64* %i, align 8, !tbaa !13 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ne i64 %3, %4 br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %5 = bitcast i64* %i to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 br label %for.end for.body: ; preds = %for.cond %6 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %first.addr, align 8, !tbaa !1 call void @_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEEvEclIS5_EEvRT_(%"struct.thrust::detail::wrapped_function.531"* %wrapped_f, %"struct.thrust::pair.487"* dereferenceable(4) %6) %7 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %first.addr, align 8, !tbaa !1 %incdec.ptr = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %7, i32 1 store %"struct.thrust::pair.487"* %incdec.ptr, %"struct.thrust::pair.487"** %first.addr, align 8, !tbaa !1 br label %for.inc for.inc: ; preds = %for.body %8 = load i64, i64* %i, align 8, !tbaa !13 %inc = add i64 %8, 1 store i64 %inc, i64* %i, align 8, !tbaa !13 br label %for.cond for.end: ; preds = %for.cond.cleanup %9 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %first.addr, align 8, !tbaa !1 %10 = bitcast %"struct.thrust::detail::wrapped_function.531"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 8, i8* %10) #5 ret %"struct.thrust::pair.487"* %9 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEEvEC2ERKS7_(%"struct.thrust::detail::wrapped_function.531"* %this, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* dereferenceable(8) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.531"*, align 8 %f.addr = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"*, align 8 store %"struct.thrust::detail::wrapped_function.531"* %this, %"struct.thrust::detail::wrapped_function.531"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %f, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.531"*, %"struct.thrust::detail::wrapped_function.531"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.531", %"struct.thrust::detail::wrapped_function.531"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"*, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false), !tbaa.struct !62 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEEvEclIS5_EEvRT_(%"struct.thrust::detail::wrapped_function.531"* %this, %"struct.thrust::pair.487"* dereferenceable(4) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.531"*, align 8 %x.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"struct.thrust::detail::wrapped_function.531"* %this, %"struct.thrust::detail::wrapped_function.531"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %x, %"struct.thrust::pair.487"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.531"*, %"struct.thrust::detail::wrapped_function.531"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.531", %"struct.thrust::detail::wrapped_function.531"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %x.addr, align 8 %call = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust18raw_reference_castINS_4pairIssEEEENS_6detail13raw_referenceIT_E4typeERS5_(%"struct.thrust::pair.487"* dereferenceable(4) %0) call void @_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEclIS4_EEvRT_(%"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %m_f, %"struct.thrust::pair.487"* dereferenceable(4) %call) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail24construct1_via_allocatorISaINS_4pairIssEEEEclIS4_EEvRT_(%"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %this, %"struct.thrust::pair.487"* dereferenceable(4) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"*, align 8 %x.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %this, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %x, %"struct.thrust::pair.487"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"*, %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"** %this.addr, align 8 %a = getelementptr inbounds %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530", %"struct.thrust::detail::allocator_traits_detail::construct1_via_allocator.530"* %this1, i32 0, i32 0 %ref = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a, align 8, !tbaa !7 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %x.addr, align 8 call void @_ZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE9constructIS3_EEvRS4_PT_(%"class.std::allocator.481"* dereferenceable(1) %ref, %"struct.thrust::pair.487"* %0) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust18raw_reference_castINS_4pairIssEEEENS_6detail13raw_referenceIT_E4typeERS5_(%"struct.thrust::pair.487"* dereferenceable(4) %ref) #8 comdat { entry: %ref.addr = alloca %"struct.thrust::pair.487"*, align 8 %ref.tmp = alloca %"struct.thrust::pair.487"*, align 8 store %"struct.thrust::pair.487"* %ref, %"struct.thrust::pair.487"** %ref.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %ref.addr, align 8 store %"struct.thrust::pair.487"* %0, %"struct.thrust::pair.487"** %ref.tmp, align 8, !tbaa !1 %call = call %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castIPNS_4pairIssEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS6_(%"struct.thrust::pair.487"** dereferenceable(8) %ref.tmp) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE9constructIS3_EEvRS4_PT_(%"class.std::allocator.481"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.481"*, align 8 %p.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %p, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 call void @_ZN6thrust6detail23allocator_traits_detail9constructISaINS_4pairIssEEES4_EENS0_9enable_ifIXsr21has_member_construct1IT_T0_EE5valueEvE4typeERS7_PS8_(%"class.std::allocator.481"* dereferenceable(1) %0, %"struct.thrust::pair.487"* %1) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail9constructISaINS_4pairIssEEES4_EENS0_9enable_ifIXsr21has_member_construct1IT_T0_EE5valueEvE4typeERS7_PS8_(%"class.std::allocator.481"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p) #8 comdat { entry: %a.addr = alloca %"class.std::allocator.481"*, align 8 %p.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %p, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.481"* %0 to %"class.__gnu_cxx::new_allocator.482"* %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 call void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE9constructIS3_JEEEvPT_DpOT0_(%"class.__gnu_cxx::new_allocator.482"* %1, %"struct.thrust::pair.487"* %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE9constructIS3_JEEEvPT_DpOT0_(%"class.__gnu_cxx::new_allocator.482"* %this, %"struct.thrust::pair.487"* %__p) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.482"*, align 8 %__p.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"class.__gnu_cxx::new_allocator.482"* %this, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %__p, %"struct.thrust::pair.487"** %__p.addr, align 8, !tbaa !1 %this1 = load %"class.__gnu_cxx::new_allocator.482"*, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %__p.addr, align 8, !tbaa !1 %1 = bitcast %"struct.thrust::pair.487"* %0 to i8* %2 = bitcast i8* %1 to %"struct.thrust::pair.487"* call void @_ZN6thrust4pairIssEC2Ev(%"struct.thrust::pair.487"* %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust4pairIssEC2Ev(%"struct.thrust::pair.487"* %this) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"struct.thrust::pair.487"* %this, %"struct.thrust::pair.487"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %this1, i32 0, i32 0 store i16 0, i16* %first, align 2, !tbaa !348 %second = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %this1, i32 0, i32 1 store i16 0, i16* %second, align 2, !tbaa !350 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castIPNS_4pairIssEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS6_(%"struct.thrust::pair.487"** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"struct.thrust::pair.487"**, align 8 store %"struct.thrust::pair.487"** %ptr, %"struct.thrust::pair.487"*** %ptr.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::pair.487"**, %"struct.thrust::pair.487"*** %ptr.addr, align 8 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %0, align 8, !tbaa !1 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail14pointer_traitsIPNS_4pairIssEEE3getES4_(%"struct.thrust::pair.487"* %1) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail14pointer_traitsIPNS_4pairIssEEE3getES4_(%"struct.thrust::pair.487"* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"struct.thrust::pair.487"* %ptr, %"struct.thrust::pair.487"** %ptr.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %ptr.addr, align 8, !tbaa !1 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail6systemISaINS_4pairIssEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS7_E4typeEE4typeERS7_(%"class.std::allocator.481"* dereferenceable(1) %a) #1 comdat { entry: %retval = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %a.addr = alloca %"class.std::allocator.481"*, align 8 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE10deallocateEv(%"class.thrust::detail::contiguous_storage.480"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.480"*, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.484", align 8 store %"class.thrust::detail::contiguous_storage.480"* %this, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.480"*, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE4sizeEv(%"class.thrust::detail::contiguous_storage.480"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.484"* %m_begin to %"class.thrust::iterator_adaptor.485"* %call2 = call dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.485"* %0) %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %call2, align 8, !tbaa !1 %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE4sizeEv(%"class.thrust::detail::contiguous_storage.480"* %this1) call void @_ZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE10deallocateERS4_PS3_m(%"class.std::allocator.481"* dereferenceable(1) %m_allocator, %"struct.thrust::pair.487"* %1, i64 %call3) %m_begin4 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPNS_4pairIssEEEC2ES4_(%"class.thrust::detail::normal_iterator.484"* %ref.tmp, %"struct.thrust::pair.487"* null) %2 = bitcast %"class.thrust::detail::normal_iterator.484"* %m_begin4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.484"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !370 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE4sizeEv(%"class.thrust::detail::contiguous_storage.480"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.480"*, align 8 store %"class.thrust::detail::contiguous_storage.480"* %this, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.480"*, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !370 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE10deallocateERS4_PS3_m(%"class.std::allocator.481"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p, i64 %n) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.481"*, align 8 %p.addr = alloca %"struct.thrust::pair.487"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %p, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE10deallocateERS4_PS3_mEN19workaround_warnings10deallocateES6_S7_m(%"class.std::allocator.481"* dereferenceable(1) %0, %"struct.thrust::pair.487"* %1, i64 %2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsISaINS_4pairIssEEEE10deallocateERS4_PS3_mEN19workaround_warnings10deallocateES6_S7_m(%"class.std::allocator.481"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p, i64 %n) #0 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.481"*, align 8 %p.addr = alloca %"struct.thrust::pair.487"*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.481"* %a, %"class.std::allocator.481"** %a.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %p, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.481"*, %"class.std::allocator.481"** %a.addr, align 8 %1 = bitcast %"class.std::allocator.481"* %0 to %"class.__gnu_cxx::new_allocator.482"* %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %p.addr, align 8, !tbaa !1 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE10deallocateEPS3_m(%"class.__gnu_cxx::new_allocator.482"* %1, %"struct.thrust::pair.487"* %2, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN9__gnu_cxx13new_allocatorIN6thrust4pairIssEEE10deallocateEPS3_m(%"class.__gnu_cxx::new_allocator.482"* %this, %"struct.thrust::pair.487"* %__p, i64) #1 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.482"*, align 8 %__p.addr = alloca %"struct.thrust::pair.487"*, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator.482"* %this, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %__p, %"struct.thrust::pair.487"** %__p.addr, align 8, !tbaa !1 store i64 %0, i64* %.addr, align 8, !tbaa !13 %this1 = load %"class.__gnu_cxx::new_allocator.482"*, %"class.__gnu_cxx::new_allocator.482"** %this.addr, align 8 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %__p.addr, align 8, !tbaa !1 %2 = bitcast %"struct.thrust::pair.487"* %1 to i8* call void @_ZdlPv(i8* %2) #5 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust9transformINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPsEES8_NS6_IPNS_4pairIssEEEE17make_pair_functorEET2_RKNS5_21execution_policy_baseIT_EET0_SK_T1_SE_T3_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i16* %first1.coerce, i16* %last1.coerce, i16* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.484", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %result = alloca %"class.thrust::detail::normal_iterator.484", align 8 %op = alloca %struct.make_pair_functor, align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp12 = alloca %struct.make_pair_functor, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive2, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive4, i32 0, i32 0 store i16* %first2.coerce, i16** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive7, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call8 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call8 to %"struct.thrust::execution_policy.88"* %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp9 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.475"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp10 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.475"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::detail::normal_iterator.484"* %agg.tmp11 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.484"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive13, i32 0, i32 0 %10 = load i16*, i16** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp9, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive15, i32 0, i32 0 %11 = load i16*, i16** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp10, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive17, i32 0, i32 0 %12 = load i16*, i16** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp11, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive19, i32 0, i32 0 %13 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive20, align 8 %call21 = call %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPsEESA_NS8_IPNS_4pairIssEEEE17make_pair_functorEET2_RNS_16execution_policyIT_EET0_SL_T1_SG_T3_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, i16* %10, i16* %11, i16* %12, %"struct.thrust::pair.487"* %13) %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive22, i32 0, i32 0 store %"struct.thrust::pair.487"* %call21, %"struct.thrust::pair.487"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive24, i32 0, i32 0 %14 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive25, align 8 ret %"struct.thrust::pair.487"* %14 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic9transformINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPsEESA_NS8_IPNS_4pairIssEEEE17make_pair_functorEET2_RNS_16execution_policyIT_EET0_SL_T1_SG_T3_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %exec, i16* %first1.coerce, i16* %last1.coerce, i16* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.484", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %result = alloca %"class.thrust::detail::normal_iterator.484", align 8 %op = alloca %struct.make_pair_functor, align 1 %exec.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %zipped_result = alloca %"class.thrust::zip_iterator.532", align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.532", align 8 %agg.tmp8 = alloca %"class.thrust::tuple.534", align 8 %agg.tmp9 = alloca %"class.thrust::zip_iterator.532", align 8 %agg.tmp10 = alloca %"class.thrust::tuple.534", align 8 %agg.tmp11 = alloca %"struct.thrust::detail::binary_transform_functor", align 1 %agg.tmp12 = alloca %struct.make_pair_functor, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive2, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive4, i32 0, i32 0 store i16* %first2.coerce, i16** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive7, align 8 store %"struct.thrust::execution_policy.88"* %exec, %"struct.thrust::execution_policy.88"** %exec.addr, align 8, !tbaa !7 %0 = bitcast %"class.thrust::zip_iterator.532"* %zipped_result to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.88"* %1 to %"struct.thrust::detail::execution_policy_base.85"* call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESD_SD_SD_SD_SD_SD_E4typeERKSA_RKSB_RKSC_(%"class.thrust::tuple.534"* sret %agg.tmp8, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %first1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS_12zip_iteratorIT_EESD_(%"class.thrust::zip_iterator.532"* sret %agg.tmp, %"class.thrust::tuple.534"* byval align 8 %agg.tmp8) call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESD_SD_SD_SD_SD_SD_E4typeERKSA_RKSB_RKSC_(%"class.thrust::tuple.534"* sret %agg.tmp10, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %last1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS_12zip_iteratorIT_EESD_(%"class.thrust::zip_iterator.532"* sret %agg.tmp9, %"class.thrust::tuple.534"* byval align 8 %agg.tmp10) call void @_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEC2ES2_(%"struct.thrust::detail::binary_transform_functor"* %agg.tmp11) call void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEESA_NS8_IPNS_4pairIssEEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS7_24binary_transform_functorI17make_pair_functorEEEET0_RKNS7_21execution_policy_baseIT_EESL_SL_T1_(%"class.thrust::zip_iterator.532"* sret %zipped_result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %2, %"class.thrust::zip_iterator.532"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.532"* byval align 8 %agg.tmp9) %call = call dereferenceable(24) %"class.thrust::tuple.534"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.532"* %zipped_result) %3 = bitcast %"class.thrust::tuple.534"* %call to %"struct.thrust::detail::cons.535"* %call13 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.535"* dereferenceable(24) %3) %4 = bitcast %"class.thrust::detail::normal_iterator.484"* %retval to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.484"* %call13 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::zip_iterator.532"* %zipped_result to i8* call void @llvm.lifetime.end(i64 24, i8* %6) #5 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive14, i32 0, i32 0 %7 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive15, align 8 ret %"struct.thrust::pair.487"* %7 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust8for_eachINS_6system3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEESA_NS8_IPNS_4pairIssEEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS7_24binary_transform_functorI17make_pair_functorEEEET0_RKNS7_21execution_policy_baseIT_EESL_SL_T1_(%"class.thrust::zip_iterator.532"* noalias sret %agg.result, %"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.532"* byval align 8 %first, %"class.thrust::zip_iterator.532"* byval align 8 %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.532", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.532", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor", align 1 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call1 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = bitcast %"class.thrust::zip_iterator.532"* %agg.tmp to i8* %3 = bitcast %"class.thrust::zip_iterator.532"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %4 = bitcast %"class.thrust::zip_iterator.532"* %agg.tmp2 to i8* %5 = bitcast %"class.thrust::zip_iterator.532"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 8, i1 false) %6 = bitcast %"struct.thrust::detail::binary_transform_functor"* %agg.tmp3 to i8* %7 = bitcast %"struct.thrust::detail::binary_transform_functor"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEESC_NSA_IPNS_4pairIssEEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEENS9_24binary_transform_functorI17make_pair_functorEEEET0_RNS2_16execution_policyIT_EESN_SN_T1_(%"class.thrust::zip_iterator.532"* sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, %"class.thrust::zip_iterator.532"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.532"* byval align 8 %agg.tmp2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS_12zip_iteratorIT_EESD_(%"class.thrust::zip_iterator.532"* noalias sret %agg.result, %"class.thrust::tuple.534"* byval align 8 %t) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::tuple.534", align 8 %0 = bitcast %"class.thrust::tuple.534"* %agg.tmp to i8* %1 = bitcast %"class.thrust::tuple.534"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEC2ESB_(%"class.thrust::zip_iterator.532"* %agg.result, %"class.thrust::tuple.534"* byval align 8 %agg.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESD_SD_SD_SD_SD_SD_E4typeERKSA_RKSB_RKSC_(%"class.thrust::tuple.534"* noalias sret %agg.result, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %t2) #8 comdat { entry: %t0.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 store %"class.thrust::detail::normal_iterator.475"* %t0, %"class.thrust::detail::normal_iterator.475"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.475"* %t1, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.484"* %t2, %"class.thrust::detail::normal_iterator.484"** %t2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %t2.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEENS_9null_typeES9_S9_S9_S9_S9_S9_EC2ERKS4_SC_RKS8_(%"class.thrust::tuple.534"* %agg.result, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %2) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.535"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.535"*, align 8 store %"struct.thrust::detail::cons.535"* %c, %"struct.thrust::detail::cons.535"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.535"*, %"struct.thrust::detail::cons.535"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorIPNS_4pairIssEEEENS4_IPsEENS0_4consISC_NSD_IS8_NS_9null_typeEEEEEEET_RKNSD_IT0_T1_EE(%"struct.thrust::detail::cons.535"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.484"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::tuple.534"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.532"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 store %"class.thrust::zip_iterator.532"* %this, %"class.thrust::zip_iterator.532"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.532", %"class.thrust::zip_iterator.532"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.534"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail10sequential8for_eachINS0_3cpp6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEESC_NSA_IPNS_4pairIssEEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEENS9_24binary_transform_functorI17make_pair_functorEEEET0_RNS2_16execution_policyIT_EESN_SN_T1_(%"class.thrust::zip_iterator.532"* noalias sret %agg.result, %"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), %"class.thrust::zip_iterator.532"* byval align 8 %first, %"class.thrust::zip_iterator.532"* byval align 8 %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor", align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.106", align 1 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.538", align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 %1 = bitcast %"struct.thrust::detail::wrapped_function.106"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %1) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEC2ERKS4_(%"struct.thrust::detail::wrapped_function.106"* %wrapped_f, %"struct.thrust::detail::binary_transform_functor"* dereferenceable(1) %f) br label %for.cond for.cond: ; preds = %for.inc, %entry %2 = bitcast %"class.thrust::zip_iterator.532"* %first to %"class.thrust::iterator_facade.533"* %3 = bitcast %"class.thrust::zip_iterator.532"* %last to %"class.thrust::iterator_facade.533"* %call = call zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElSD_SE_SI_SJ_SN_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSO_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.533"* dereferenceable(1) %2, %"class.thrust::iterator_facade.533"* dereferenceable(1) %3) br i1 %call, label %for.body, label %for.end for.body: ; preds = %for.cond %4 = bitcast %"class.thrust::zip_iterator.532"* %first to %"class.thrust::iterator_facade.533"* call void @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEdeEv(%"class.thrust::detail::tuple_of_iterator_references.538"* sret %ref.tmp, %"class.thrust::iterator_facade.533"* %4) call void @_ZNK6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEclINS0_28tuple_of_iterator_referencesIRsS8_RNS_4pairIssEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.106"* %wrapped_f, %"class.thrust::detail::tuple_of_iterator_references.538"* dereferenceable(24) %ref.tmp) br label %for.inc for.inc: ; preds = %for.body %5 = bitcast %"class.thrust::zip_iterator.532"* %first to %"class.thrust::iterator_facade.533"* %call1 = call dereferenceable(24) %"class.thrust::zip_iterator.532"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEppEv(%"class.thrust::iterator_facade.533"* %5) br label %for.cond for.end: ; preds = %for.cond %6 = bitcast %"class.thrust::zip_iterator.532"* %agg.result to i8* %7 = bitcast %"class.thrust::zip_iterator.532"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 24, i32 8, i1 false) %8 = bitcast %"struct.thrust::detail::wrapped_function.106"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %8) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrustneINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElSD_SE_SI_SJ_SN_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSO_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.533"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.533"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.533"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.533"*, align 8 store %"class.thrust::iterator_facade.533"* %lhs, %"class.thrust::iterator_facade.533"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.533"* %rhs, %"class.thrust::iterator_facade.533"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.533"*, %"class.thrust::iterator_facade.533"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.533"* %0 to %"class.thrust::zip_iterator.532"* %2 = load %"class.thrust::iterator_facade.533"*, %"class.thrust::iterator_facade.533"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.533"* %2 to %"class.thrust::zip_iterator.532"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEESE_EEbRKT_RKT0_(%"class.thrust::zip_iterator.532"* dereferenceable(24) %1, %"class.thrust::zip_iterator.532"* dereferenceable(24) %3) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16wrapped_functionINS0_24binary_transform_functorI17make_pair_functorEEvEclINS0_28tuple_of_iterator_referencesIRsS8_RNS_4pairIssEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEvRKT_(%"struct.thrust::detail::wrapped_function.106"* %this, %"class.thrust::detail::tuple_of_iterator_references.538"* dereferenceable(24) %x) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.106"*, align 8 %x.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.538"*, align 8 %agg.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.538", align 8 store %"struct.thrust::detail::wrapped_function.106"* %this, %"struct.thrust::detail::wrapped_function.106"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::tuple_of_iterator_references.538"* %x, %"class.thrust::detail::tuple_of_iterator_references.538"** %x.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.106"*, %"struct.thrust::detail::wrapped_function.106"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.106", %"struct.thrust::detail::wrapped_function.106"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::tuple_of_iterator_references.538"*, %"class.thrust::detail::tuple_of_iterator_references.538"** %x.addr, align 8 %call = call dereferenceable(24) %"class.thrust::detail::tuple_of_iterator_references.538"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesIRsS3_RNS_4pairIssEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_13raw_referenceIKT_E4typeERSB_(%"class.thrust::detail::tuple_of_iterator_references.538"* dereferenceable(24) %0) %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references.538"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::tuple_of_iterator_references.538"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) call void @_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEclINS0_28tuple_of_iterator_referencesIRsS6_RNS_4pairIssEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi2ET_E4typeEE4typeESE_(%"struct.thrust::detail::binary_transform_functor"* %m_f, %"class.thrust::detail::tuple_of_iterator_references.538"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEdeEv(%"class.thrust::detail::tuple_of_iterator_references.538"* noalias sret %agg.result, %"class.thrust::iterator_facade.533"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.533"*, align 8 store %"class.thrust::iterator_facade.533"* %this, %"class.thrust::iterator_facade.533"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.533"*, %"class.thrust::iterator_facade.533"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::zip_iterator.532"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.533"* %this1) call void @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEENT_9referenceERKSF_(%"class.thrust::detail::tuple_of_iterator_references.538"* sret %agg.result, %"class.thrust::zip_iterator.532"* dereferenceable(24) %call) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.532"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElEppEv(%"class.thrust::iterator_facade.533"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.533"*, align 8 store %"class.thrust::iterator_facade.533"* %this, %"class.thrust::iterator_facade.533"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.533"*, %"class.thrust::iterator_facade.533"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::zip_iterator.532"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.533"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEEvRT_(%"class.thrust::zip_iterator.532"* dereferenceable(24) %call) %call2 = call dereferenceable(24) %"class.thrust::zip_iterator.532"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.533"* %this1) ret %"class.thrust::zip_iterator.532"* %call2 } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEESE_EEbRKT_RKT0_(%"class.thrust::zip_iterator.532"* dereferenceable(24) %f1, %"class.thrust::zip_iterator.532"* dereferenceable(24) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 store %"class.thrust::zip_iterator.532"* %f1, %"class.thrust::zip_iterator.532"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.532"* %f2, %"class.thrust::zip_iterator.532"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %f2.addr, align 8 %call = call zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE5equalISB_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.532"* %0, %"class.thrust::zip_iterator.532"* dereferenceable(24) %1) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE5equalISB_EEbRKNS0_IT_EE(%"class.thrust::zip_iterator.532"* %this, %"class.thrust::zip_iterator.532"* dereferenceable(24) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 store %"class.thrust::zip_iterator.532"* %this, %"class.thrust::zip_iterator.532"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.532"* %other, %"class.thrust::zip_iterator.532"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::tuple.534"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.532"* %this1) %0 = bitcast %"class.thrust::tuple.534"* %call to %"struct.thrust::detail::cons.535"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.535"* dereferenceable(24) %0) %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %call2 to %"class.thrust::iterator_facade.477"* %2 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %other.addr, align 8 %call3 = call dereferenceable(24) %"class.thrust::tuple.534"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.532"* %2) %3 = bitcast %"class.thrust::tuple.534"* %call3 to %"struct.thrust::detail::cons.535"* %call4 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.535"* dereferenceable(24) %3) %4 = bitcast %"class.thrust::detail::normal_iterator.475"* %call4 to %"class.thrust::iterator_facade.477"* %call5 = call zeroext i1 @_ZN6thrusteqINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.477"* dereferenceable(1) %1, %"class.thrust::iterator_facade.477"* dereferenceable(1) %4) ret i1 %call5 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrusteqINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.477"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.477"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 store %"class.thrust::iterator_facade.477"* %lhs, %"class.thrust::iterator_facade.477"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.477"* %rhs, %"class.thrust::iterator_facade.477"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.477"* %0 to %"class.thrust::detail::normal_iterator.475"* %2 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.477"* %2 to %"class.thrust::detail::normal_iterator.475"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPsEES5_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.535"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.535"*, align 8 store %"struct.thrust::detail::cons.535"* %c, %"struct.thrust::detail::cons.535"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.535"*, %"struct.thrust::detail::cons.535"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPsEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIssEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.535"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.475"* %call } ; Function Attrs: uwtable define linkonce_odr zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPsEES5_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 store %"class.thrust::detail::normal_iterator.475"* %f1, %"class.thrust::detail::normal_iterator.475"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.475"* %f2, %"class.thrust::detail::normal_iterator.475"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %f1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %0 to %"class.thrust::iterator_adaptor.476"* %2 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %f2.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.475"* %2 to %"class.thrust::iterator_adaptor.476"* %call = call zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E5equalIS4_S3_S5_S5_S5_S5_S5_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.476"* %1, %"class.thrust::iterator_adaptor.476"* dereferenceable(8) %3) ret i1 %call } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E5equalIS4_S3_S5_S5_S5_S5_S5_EEbRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.476"* %this, %"class.thrust::iterator_adaptor.476"* dereferenceable(8) %x) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.476"*, align 8 %x.addr = alloca %"class.thrust::iterator_adaptor.476"*, align 8 store %"class.thrust::iterator_adaptor.476"* %this, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.476"* %x, %"class.thrust::iterator_adaptor.476"** %x.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.476"*, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %this1, i32 0, i32 0 %0 = load i16*, i16** %m_iterator, align 8, !tbaa !357 %1 = load %"class.thrust::iterator_adaptor.476"*, %"class.thrust::iterator_adaptor.476"** %x.addr, align 8 %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.476"* %1) %2 = load i16*, i16** %call, align 8, !tbaa !1 %cmp = icmp eq i16* %0, %2 ret i1 %cmp } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPsEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIssEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.535"* dereferenceable(24) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.535"*, align 8 store %"struct.thrust::detail::cons.535"* %t, %"struct.thrust::detail::cons.535"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.535"*, %"struct.thrust::detail::cons.535"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.535", %"struct.thrust::detail::cons.535"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.475"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail24binary_transform_functorI17make_pair_functorEclINS0_28tuple_of_iterator_referencesIRsS6_RNS_4pairIssEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEENS0_61enable_if_non_const_reference_or_tuple_of_iterator_referencesINS_13tuple_elementILi2ET_E4typeEE4typeESE_(%"struct.thrust::detail::binary_transform_functor"* %this, %"class.thrust::detail::tuple_of_iterator_references.538"* byval align 8 %t) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::binary_transform_functor"*, align 8 %ref.tmp = alloca %"struct.thrust::pair.487", align 2 store %"struct.thrust::detail::binary_transform_functor"* %this, %"struct.thrust::detail::binary_transform_functor"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::binary_transform_functor"*, %"struct.thrust::detail::binary_transform_functor"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.538"* %t to %"struct.thrust::detail::cons.540"* %call = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust3getILi2ERsNS_6detail4consIS1_NS3_IRNS_4pairIssEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.540"* dereferenceable(24) %0) %f = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor", %"struct.thrust::detail::binary_transform_functor"* %this1, i32 0, i32 0 %1 = bitcast %"class.thrust::detail::tuple_of_iterator_references.538"* %t to %"struct.thrust::detail::cons.540"* %call2 = call dereferenceable(2) i16* @_ZN6thrust3getILi0ERsNS_6detail4consIS1_NS3_IRNS_4pairIssEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.540"* dereferenceable(24) %1) %2 = bitcast %"class.thrust::detail::tuple_of_iterator_references.538"* %t to %"struct.thrust::detail::cons.540"* %call3 = call dereferenceable(2) i16* @_ZN6thrust3getILi1ERsNS_6detail4consIS1_NS3_IRNS_4pairIssEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.540"* dereferenceable(24) %2) %call4 = call i32 @_ZN17make_pair_functorclIssEEN6thrust4pairIT_T0_EERKS3_RKS4_(%struct.make_pair_functor* %f, i16* dereferenceable(2) %call2, i16* dereferenceable(2) %call3) %3 = bitcast %"struct.thrust::pair.487"* %ref.tmp to i32* store i32 %call4, i32* %3, align 2 %4 = bitcast %"struct.thrust::pair.487"* %call to i8* %5 = bitcast %"struct.thrust::pair.487"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 4, i32 2, i1 false), !tbaa.struct !345 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(24) %"class.thrust::detail::tuple_of_iterator_references.538"* @_ZN6thrust18raw_reference_castINS_6detail28tuple_of_iterator_referencesIRsS3_RNS_4pairIssEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_13raw_referenceIKT_E4typeERSB_(%"class.thrust::detail::tuple_of_iterator_references.538"* dereferenceable(24) %ref) #8 comdat { entry: %ref.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.538"*, align 8 %ref.tmp = alloca %"class.thrust::detail::tuple_of_iterator_references.538"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.538"* %ref, %"class.thrust::detail::tuple_of_iterator_references.538"** %ref.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.538"*, %"class.thrust::detail::tuple_of_iterator_references.538"** %ref.addr, align 8 store %"class.thrust::detail::tuple_of_iterator_references.538"* %0, %"class.thrust::detail::tuple_of_iterator_references.538"** %ref.tmp, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references.538"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesIRsS3_RNS_4pairIssEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::detail::tuple_of_iterator_references.538"** dereferenceable(8) %ref.tmp) ret %"class.thrust::detail::tuple_of_iterator_references.538"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust3getILi2ERsNS_6detail4consIS1_NS3_IRNS_4pairIssEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.540"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.540"*, align 8 store %"struct.thrust::detail::cons.540"* %c, %"struct.thrust::detail::cons.540"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.540"*, %"struct.thrust::detail::cons.540"** %c.addr, align 8 %call = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust6detail9get_classILi2EE3getIRNS_4pairIssEERsNS0_4consIS7_NS8_IS6_NS_9null_typeEEEEEEET_RNS8_IT0_T1_EE(%"struct.thrust::detail::cons.540"* dereferenceable(24) %0) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN17make_pair_functorclIssEEN6thrust4pairIT_T0_EERKS3_RKS4_(%struct.make_pair_functor* %this, i16* dereferenceable(2) %x, i16* dereferenceable(2) %y) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.487", align 2 %this.addr = alloca %struct.make_pair_functor*, align 8 %x.addr = alloca i16*, align 8 %y.addr = alloca i16*, align 8 store %struct.make_pair_functor* %this, %struct.make_pair_functor** %this.addr, align 8, !tbaa !1 store i16* %x, i16** %x.addr, align 8, !tbaa !7 store i16* %y, i16** %y.addr, align 8, !tbaa !7 %this1 = load %struct.make_pair_functor*, %struct.make_pair_functor** %this.addr, align 8 %0 = load i16*, i16** %x.addr, align 8 %1 = load i16, i16* %0, align 2, !tbaa !346 %2 = load i16*, i16** %y.addr, align 8 %3 = load i16, i16* %2, align 2, !tbaa !346 %call = call i32 @_ZN6thrust9make_pairIssEENS_4pairIT_T0_EES2_S3_(i16 signext %1, i16 signext %3) %4 = bitcast %"struct.thrust::pair.487"* %retval to i32* store i32 %call, i32* %4, align 2 %5 = bitcast %"struct.thrust::pair.487"* %retval to i32* %6 = load i32, i32* %5, align 2 ret i32 %6 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust3getILi0ERsNS_6detail4consIS1_NS3_IRNS_4pairIssEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.540"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.540"*, align 8 store %"struct.thrust::detail::cons.540"* %c, %"struct.thrust::detail::cons.540"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.540"*, %"struct.thrust::detail::cons.540"** %c.addr, align 8 %call = call dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi0EE3getIRsS4_NS0_4consIS4_NS5_IRNS_4pairIssEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.540"* dereferenceable(24) %0) ret i16* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust3getILi1ERsNS_6detail4consIS1_NS3_IRNS_4pairIssEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS3_IT0_T1_EEE4typeEE14non_const_typeERSE_(%"struct.thrust::detail::cons.540"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.540"*, align 8 store %"struct.thrust::detail::cons.540"* %c, %"struct.thrust::detail::cons.540"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.540"*, %"struct.thrust::detail::cons.540"** %c.addr, align 8 %call = call dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi1EE3getIRsS4_NS0_4consIS4_NS5_IRNS_4pairIssEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.540"* dereferenceable(24) %0) ret i16* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust6detail9get_classILi2EE3getIRNS_4pairIssEERsNS0_4consIS7_NS8_IS6_NS_9null_typeEEEEEEET_RNS8_IT0_T1_EE(%"struct.thrust::detail::cons.540"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.540"*, align 8 store %"struct.thrust::detail::cons.540"* %t, %"struct.thrust::detail::cons.540"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.540"*, %"struct.thrust::detail::cons.540"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.540", %"struct.thrust::detail::cons.540"* %0, i32 0, i32 1 %call = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIssEERsNS0_4consIS6_NS_9null_typeEEEEET_RNS8_IT0_T1_EE(%"struct.thrust::detail::cons.541"* dereferenceable(16) %tail) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust6detail9get_classILi1EE3getIRNS_4pairIssEERsNS0_4consIS6_NS_9null_typeEEEEET_RNS8_IT0_T1_EE(%"struct.thrust::detail::cons.541"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.541"*, align 8 store %"struct.thrust::detail::cons.541"* %t, %"struct.thrust::detail::cons.541"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.541"*, %"struct.thrust::detail::cons.541"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.541", %"struct.thrust::detail::cons.541"* %0, i32 0, i32 1 %call = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIssEES6_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.542"* dereferenceable(8) %tail) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust6detail9get_classILi0EE3getIRNS_4pairIssEES6_NS_9null_typeEEET_RNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.542"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.542"*, align 8 store %"struct.thrust::detail::cons.542"* %t, %"struct.thrust::detail::cons.542"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.542"*, %"struct.thrust::detail::cons.542"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.542", %"struct.thrust::detail::cons.542"* %0, i32 0, i32 0 %ref = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %head, align 8, !tbaa !7 ret %"struct.thrust::pair.487"* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr i32 @_ZN6thrust9make_pairIssEENS_4pairIT_T0_EES2_S3_(i16 signext %x, i16 signext %y) #8 comdat { entry: %retval = alloca %"struct.thrust::pair.487", align 2 %x.addr = alloca i16, align 2 %y.addr = alloca i16, align 2 store i16 %x, i16* %x.addr, align 2, !tbaa !346 store i16 %y, i16* %y.addr, align 2, !tbaa !346 call void @_ZN6thrust4pairIssEC2ERKsS3_(%"struct.thrust::pair.487"* %retval, i16* dereferenceable(2) %x.addr, i16* dereferenceable(2) %y.addr) %0 = bitcast %"struct.thrust::pair.487"* %retval to i32* %1 = load i32, i32* %0, align 2 ret i32 %1 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi0EE3getIRsS4_NS0_4consIS4_NS5_IRNS_4pairIssEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.540"* dereferenceable(24) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.540"*, align 8 store %"struct.thrust::detail::cons.540"* %t, %"struct.thrust::detail::cons.540"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.540"*, %"struct.thrust::detail::cons.540"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.540", %"struct.thrust::detail::cons.540"* %0, i32 0, i32 0 %ref = load i16*, i16** %head, align 8, !tbaa !7 ret i16* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi1EE3getIRsS4_NS0_4consIS4_NS5_IRNS_4pairIssEENS_9null_typeEEEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.540"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.540"*, align 8 store %"struct.thrust::detail::cons.540"* %t, %"struct.thrust::detail::cons.540"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.540"*, %"struct.thrust::detail::cons.540"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.540", %"struct.thrust::detail::cons.540"* %0, i32 0, i32 1 %call = call dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi0EE3getIRsS4_NS0_4consIRNS_4pairIssEENS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.541"* dereferenceable(16) %tail) ret i16* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust6detail9get_classILi0EE3getIRsS4_NS0_4consIRNS_4pairIssEENS_9null_typeEEEEET_RNS5_IT0_T1_EE(%"struct.thrust::detail::cons.541"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.541"*, align 8 store %"struct.thrust::detail::cons.541"* %t, %"struct.thrust::detail::cons.541"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.541"*, %"struct.thrust::detail::cons.541"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.541", %"struct.thrust::detail::cons.541"* %0, i32 0, i32 0 %ref = load i16*, i16** %head, align 8, !tbaa !7 ret i16* %ref } ; Function Attrs: inlinehint uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references.538"* @_ZN6thrust16raw_pointer_castIPKNS_6detail28tuple_of_iterator_referencesIRsS3_RNS_4pairIssEENS_9null_typeES7_S7_S7_S7_S7_S7_EEEENS1_14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::detail::tuple_of_iterator_references.538"** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.538"**, align 8 store %"class.thrust::detail::tuple_of_iterator_references.538"** %ptr, %"class.thrust::detail::tuple_of_iterator_references.538"*** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::tuple_of_iterator_references.538"**, %"class.thrust::detail::tuple_of_iterator_references.538"*** %ptr.addr, align 8 %1 = load %"class.thrust::detail::tuple_of_iterator_references.538"*, %"class.thrust::detail::tuple_of_iterator_references.538"** %0, align 8, !tbaa !1 %call = call %"class.thrust::detail::tuple_of_iterator_references.538"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesIRsS3_RNS_4pairIssEENS_9null_typeES7_S7_S7_S7_S7_S7_EEE3getESA_(%"class.thrust::detail::tuple_of_iterator_references.538"* %1) ret %"class.thrust::detail::tuple_of_iterator_references.538"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %"class.thrust::detail::tuple_of_iterator_references.538"* @_ZN6thrust6detail14pointer_traitsIPKNS0_28tuple_of_iterator_referencesIRsS3_RNS_4pairIssEENS_9null_typeES7_S7_S7_S7_S7_S7_EEE3getESA_(%"class.thrust::detail::tuple_of_iterator_references.538"* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.538"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.538"* %ptr, %"class.thrust::detail::tuple_of_iterator_references.538"** %ptr.addr, align 8, !tbaa !1 %0 = load %"class.thrust::detail::tuple_of_iterator_references.538"*, %"class.thrust::detail::tuple_of_iterator_references.538"** %ptr.addr, align 8, !tbaa !1 ret %"class.thrust::detail::tuple_of_iterator_references.538"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access11dereferenceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEENT_9referenceERKSF_(%"class.thrust::detail::tuple_of_iterator_references.538"* noalias sret %agg.result, %"class.thrust::zip_iterator.532"* dereferenceable(24) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 store %"class.thrust::zip_iterator.532"* %f, %"class.thrust::zip_iterator.532"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %f.addr, align 8 call void @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE11dereferenceEv(%"class.thrust::detail::tuple_of_iterator_references.538"* sret %agg.result, %"class.thrust::zip_iterator.532"* %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.532"* @_ZNK6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.533"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.533"*, align 8 store %"class.thrust::iterator_facade.533"* %this, %"class.thrust::iterator_facade.533"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.533"*, %"class.thrust::iterator_facade.533"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.533"* %this1 to %"class.thrust::zip_iterator.532"* ret %"class.thrust::zip_iterator.532"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE11dereferenceEv(%"class.thrust::detail::tuple_of_iterator_references.538"* noalias sret %agg.result, %"class.thrust::zip_iterator.532"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 %ref.tmp = alloca %"class.thrust::tuple.539", align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::zip_iterator.532"* %this, %"class.thrust::zip_iterator.532"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::tuple.534"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.532"* %this1) call void @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISF_EE5valueEE4typeERKSF_T1_(%"class.thrust::tuple.539"* sret %ref.tmp, %"class.thrust::tuple.534"* dereferenceable(24) %call) call void @_ZN6thrust6detail28tuple_of_iterator_referencesIRsS2_RNS_4pairIssEENS_9null_typeES6_S6_S6_S6_S6_S6_EC2ERKNS_5tupleIS2_S2_S5_S6_S6_S6_S6_S6_S6_S6_EE(%"class.thrust::detail::tuple_of_iterator_references.538"* %agg.result, %"class.thrust::tuple.539"* dereferenceable(24) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail27tuple_host_device_transformINS0_20dereference_iterator5applyENS_5tupleINS0_15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EES2_EENS0_20tuple_meta_transformIT0_T_Xsr6thrust10tuple_sizeISF_EE5valueEE4typeERKSF_T1_(%"class.thrust::tuple.539"* noalias sret %agg.result, %"class.thrust::tuple.534"* dereferenceable(24) %t) #0 comdat { entry: %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.534"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::dereference_iterator", align 1 store %"class.thrust::tuple.534"* %t, %"class.thrust::tuple.534"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.534"*, %"class.thrust::tuple.534"** %t.addr, align 8 call void @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EENS0_20dereference_iterator5applyESC_Lj3EE27do_it_on_the_host_or_deviceERKSB_SC_(%"class.thrust::tuple.539"* sret %agg.result, %"class.thrust::tuple.534"* dereferenceable(24) %0) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail28tuple_of_iterator_referencesIRsS2_RNS_4pairIssEENS_9null_typeES6_S6_S6_S6_S6_S6_EC2ERKNS_5tupleIS2_S2_S5_S6_S6_S6_S6_S6_S6_S6_EE(%"class.thrust::detail::tuple_of_iterator_references.538"* %this, %"class.thrust::tuple.539"* dereferenceable(24) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tuple_of_iterator_references.538"*, align 8 %other.addr = alloca %"class.thrust::tuple.539"*, align 8 store %"class.thrust::detail::tuple_of_iterator_references.538"* %this, %"class.thrust::detail::tuple_of_iterator_references.538"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.539"* %other, %"class.thrust::tuple.539"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::tuple_of_iterator_references.538"*, %"class.thrust::detail::tuple_of_iterator_references.538"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::tuple_of_iterator_references.538"* %this1 to %"class.thrust::tuple.539"* %1 = load %"class.thrust::tuple.539"*, %"class.thrust::tuple.539"** %other.addr, align 8 %2 = bitcast %"class.thrust::tuple.539"* %0 to i8* %3 = bitcast %"class.thrust::tuple.539"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23tuple_transform_functorINS_5tupleINS0_15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EENS0_20dereference_iterator5applyESC_Lj3EE27do_it_on_the_host_or_deviceERKSB_SC_(%"class.thrust::tuple.539"* noalias sret %agg.result, %"class.thrust::tuple.534"* dereferenceable(24) %t) #0 comdat align 2 { entry: %f = alloca %"struct.thrust::detail::dereference_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.534"*, align 8 store %"class.thrust::tuple.534"* %t, %"class.thrust::tuple.534"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.534"*, %"class.thrust::tuple.534"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.534"* %0 to %"struct.thrust::detail::cons.535"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.535"* dereferenceable(24) %1) %call1 = call dereferenceable(2) i16* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPsEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.534"*, %"class.thrust::tuple.534"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.534"* %2 to %"struct.thrust::detail::cons.535"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust3getILi1ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.535"* dereferenceable(24) %3) %call3 = call dereferenceable(2) i16* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPsEEEENS1_5applyIT_E4typeERKS7_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %call2) %4 = load %"class.thrust::tuple.534"*, %"class.thrust::tuple.534"** %t.addr, align 8 %5 = bitcast %"class.thrust::tuple.534"* %4 to %"struct.thrust::detail::cons.535"* %call4 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.535"* dereferenceable(24) %5) %call5 = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPNS_4pairIssEEEEEENS1_5applyIT_E4typeERKS9_(%"struct.thrust::detail::dereference_iterator"* %f, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %call4) call void @_ZN6thrust5tupleIRsS1_RNS_4pairIssEENS_9null_typeES5_S5_S5_S5_S5_S5_EC2ES1_S1_S4_(%"class.thrust::tuple.539"* %agg.result, i16* dereferenceable(2) %call1, i16* dereferenceable(2) %call3, %"struct.thrust::pair.487"* dereferenceable(4) %call5) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust3getILi1ENS_6detail15normal_iteratorIPsEENS1_4consIS4_NS5_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS5_IT0_T1_EEE4typeEE10const_typeERKSH_(%"struct.thrust::detail::cons.535"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.535"*, align 8 store %"struct.thrust::detail::cons.535"* %c, %"struct.thrust::detail::cons.535"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.535"*, %"struct.thrust::detail::cons.535"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPsEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIssEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.535"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.475"* %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust6detail20dereference_iteratorclINS0_15normal_iteratorIPNS_4pairIssEEEEEENS1_5applyIT_E4typeERKS9_(%"struct.thrust::detail::dereference_iterator"* %this, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %it) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::dereference_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 store %"struct.thrust::detail::dereference_iterator"* %this, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.484"* %it, %"class.thrust::detail::normal_iterator.484"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::dereference_iterator"*, %"struct.thrust::detail::dereference_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.484"* %0 to %"class.thrust::iterator_facade.486"* %call = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.486"* %1) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleIRsS1_RNS_4pairIssEENS_9null_typeES5_S5_S5_S5_S5_S5_EC2ES1_S1_S4_(%"class.thrust::tuple.539"* %this, i16* dereferenceable(2) %t0, i16* dereferenceable(2) %t1, %"struct.thrust::pair.487"* dereferenceable(4) %t2) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.539"*, align 8 %t0.addr = alloca i16*, align 8 %t1.addr = alloca i16*, align 8 %t2.addr = alloca %"struct.thrust::pair.487"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.539"* %this, %"class.thrust::tuple.539"** %this.addr, align 8, !tbaa !1 store i16* %t0, i16** %t0.addr, align 8, !tbaa !7 store i16* %t1, i16** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %t2, %"struct.thrust::pair.487"** %t2.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.539"*, %"class.thrust::tuple.539"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.539"* %this1 to %"struct.thrust::detail::cons.540"* %1 = load i16*, i16** %t0.addr, align 8 %2 = load i16*, i16** %t1.addr, align 8 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %t2.addr, align 8 call void @_ZN6thrust6detail4consIRsNS1_IS2_NS1_IRNS_4pairIssEENS_9null_typeEEEEEEC2IssS4_KS6_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.540"* %0, i16* dereferenceable(2) %1, i16* dereferenceable(2) %2, %"struct.thrust::pair.487"* dereferenceable(4) %3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPsEES6_NS0_4consIS6_NS9_INS4_IPNS_4pairIssEEEENS_9null_typeEEEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.535"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.535"*, align 8 store %"struct.thrust::detail::cons.535"* %t, %"struct.thrust::detail::cons.535"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.535"*, %"struct.thrust::detail::cons.535"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.535", %"struct.thrust::detail::cons.535"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPsEES6_NS0_4consINS4_IPNS_4pairIssEEEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.536"* dereferenceable(16) %tail) ret %"class.thrust::detail::normal_iterator.475"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPsEES6_NS0_4consINS4_IPNS_4pairIssEEEENS_9null_typeEEEEET_RKNS9_IT0_T1_EE(%"struct.thrust::detail::cons.536"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.536"*, align 8 store %"struct.thrust::detail::cons.536"* %t, %"struct.thrust::detail::cons.536"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.536"*, %"struct.thrust::detail::cons.536"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.536", %"struct.thrust::detail::cons.536"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.475"* %head } ; Function Attrs: uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.486"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.486"*, align 8 store %"class.thrust::iterator_facade.486"* %this, %"class.thrust::iterator_facade.486"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.486"*, %"class.thrust::iterator_facade.486"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.486"* %this1) %call2 = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPNS_4pairIssEEEEEENT_9referenceERKS8_(%"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %call) ret %"struct.thrust::pair.487"* %call2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPNS_4pairIssEEEEEENT_9referenceERKS8_(%"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 store %"class.thrust::detail::normal_iterator.484"* %f, %"class.thrust::detail::normal_iterator.484"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.484"* %0 to %"class.thrust::iterator_adaptor.485"* %call = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E11dereferenceEv(%"class.thrust::iterator_adaptor.485"* %1) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.486"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.486"*, align 8 store %"class.thrust::iterator_facade.486"* %this, %"class.thrust::iterator_facade.486"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.486"*, %"class.thrust::iterator_facade.486"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.486"* %this1 to %"class.thrust::detail::normal_iterator.484"* ret %"class.thrust::detail::normal_iterator.484"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E11dereferenceEv(%"class.thrust::iterator_adaptor.485"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.485"*, align 8 store %"class.thrust::iterator_adaptor.485"* %this, %"class.thrust::iterator_adaptor.485"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.485"*, %"class.thrust::iterator_adaptor.485"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !371 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIRsNS1_IS2_NS1_IRNS_4pairIssEENS_9null_typeEEEEEEC2IssS4_KS6_SB_SB_SB_SB_SB_SB_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.540"* %this, i16* dereferenceable(2) %t1, i16* dereferenceable(2) %t2, %"struct.thrust::pair.487"* dereferenceable(4) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.540"*, align 8 %t1.addr = alloca i16*, align 8 %t2.addr = alloca i16*, align 8 %t3.addr = alloca %"struct.thrust::pair.487"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.540"* %this, %"struct.thrust::detail::cons.540"** %this.addr, align 8, !tbaa !1 store i16* %t1, i16** %t1.addr, align 8, !tbaa !7 store i16* %t2, i16** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %t3, %"struct.thrust::pair.487"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.540"*, %"struct.thrust::detail::cons.540"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.540", %"struct.thrust::detail::cons.540"* %this1, i32 0, i32 0 %0 = load i16*, i16** %t1.addr, align 8 store i16* %0, i16** %head, align 8, !tbaa !7 %tail = getelementptr inbounds %"struct.thrust::detail::cons.540", %"struct.thrust::detail::cons.540"* %this1, i32 0, i32 1 %1 = load i16*, i16** %t2.addr, align 8 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRsNS1_IRNS_4pairIssEENS_9null_typeEEEEC2IsS4_KS6_SA_SA_SA_SA_SA_SA_SA_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.541"* %tail, i16* dereferenceable(2) %1, %"struct.thrust::pair.487"* dereferenceable(4) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consIRsNS1_IRNS_4pairIssEENS_9null_typeEEEEC2IsS4_KS6_SA_SA_SA_SA_SA_SA_SA_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.541"* %this, i16* dereferenceable(2) %t1, %"struct.thrust::pair.487"* dereferenceable(4) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.541"*, align 8 %t1.addr = alloca i16*, align 8 %t2.addr = alloca %"struct.thrust::pair.487"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.541"* %this, %"struct.thrust::detail::cons.541"** %this.addr, align 8, !tbaa !1 store i16* %t1, i16** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %t2, %"struct.thrust::pair.487"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.541"*, %"struct.thrust::detail::cons.541"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.541", %"struct.thrust::detail::cons.541"* %this1, i32 0, i32 0 %0 = load i16*, i16** %t1.addr, align 8 store i16* %0, i16** %head, align 8, !tbaa !7 %tail = getelementptr inbounds %"struct.thrust::detail::cons.541", %"struct.thrust::detail::cons.541"* %this1, i32 0, i32 1 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %t2.addr, align 8 %2 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %3 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIRNS_4pairIssEENS_9null_typeEEC2IS3_EERT_RKS5_SB_SB_SB_SB_SB_SB_SB_SB_(%"struct.thrust::detail::cons.542"* %tail, %"struct.thrust::pair.487"* dereferenceable(4) %1, %"struct.thrust::null_type"* dereferenceable(1) %2, %"struct.thrust::null_type"* dereferenceable(1) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consIRNS_4pairIssEENS_9null_typeEEC2IS3_EERT_RKS5_SB_SB_SB_SB_SB_SB_SB_SB_(%"struct.thrust::detail::cons.542"* %this, %"struct.thrust::pair.487"* dereferenceable(4) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.542"*, align 8 %t1.addr = alloca %"struct.thrust::pair.487"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.542"* %this, %"struct.thrust::detail::cons.542"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %t1, %"struct.thrust::pair.487"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.542"*, %"struct.thrust::detail::cons.542"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.542", %"struct.thrust::detail::cons.542"* %this9, i32 0, i32 0 %9 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %t1.addr, align 8 store %"struct.thrust::pair.487"* %9, %"struct.thrust::pair.487"** %head, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES7_NS5_IPNS_4pairIssEEEENS_9null_typeESC_SC_SC_SC_SC_SC_EEEEEEvRT_(%"class.thrust::zip_iterator.532"* dereferenceable(24) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 store %"class.thrust::zip_iterator.532"* %f, %"class.thrust::zip_iterator.532"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %f.addr, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE9incrementEv(%"class.thrust::zip_iterator.532"* %0) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.532"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EEEENS2_IssS8_SB_SB_SB_SB_SB_SB_SB_EENS_6system3cpp6detail3tagENS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesIRsSL_RS8_SB_SB_SB_SB_SB_SB_SB_EElE7derivedEv(%"class.thrust::iterator_facade.533"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.533"*, align 8 store %"class.thrust::iterator_facade.533"* %this, %"class.thrust::iterator_facade.533"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.533"*, %"class.thrust::iterator_facade.533"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.533"* %this1 to %"class.thrust::zip_iterator.532"* ret %"class.thrust::zip_iterator.532"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEE9incrementEv(%"class.thrust::zip_iterator.532"* %this) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::zip_iterator.532"* %this, %"class.thrust::zip_iterator.532"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.532", %"class.thrust::zip_iterator.532"* %this1, i32 0, i32 0 call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EENS0_18increment_iteratorEEET0_RT_SE_(%"class.thrust::tuple.534"* dereferenceable(24) %m_iterator_tuple) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorIPsEES6_NS4_IPNS_4pairIssEEEENS_9null_typeESB_SB_SB_SB_SB_SB_EENS0_18increment_iteratorEEET0_RT_SE_(%"class.thrust::tuple.534"* dereferenceable(24) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"class.thrust::tuple.534"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"class.thrust::tuple.534"* %t, %"class.thrust::tuple.534"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.534"*, %"class.thrust::tuple.534"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.534"* %0 to %"struct.thrust::detail::cons.535"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_IS4_NS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.535"* %1) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPsEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.534"*, %"class.thrust::tuple.534"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.534"* %2 to %"struct.thrust::detail::cons.535"* %call1 = call dereferenceable(16) %"struct.thrust::detail::cons.536"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_IS4_NS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.535"* %3) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPsEENS3_INS4_IPNS_4pairIssEEEENS_9null_typeEEEEENS0_18increment_iteratorEEET0_RT_SF_(%"struct.thrust::detail::cons.536"* dereferenceable(16) %call1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_IS4_NS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.535"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.535"*, align 8 store %"struct.thrust::detail::cons.535"* %this, %"struct.thrust::detail::cons.535"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.535"*, %"struct.thrust::detail::cons.535"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.535", %"struct.thrust::detail::cons.535"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.475"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPsEENS3_INS4_IPNS_4pairIssEEEENS_9null_typeEEEEENS0_18increment_iteratorEEET0_RT_SF_(%"struct.thrust::detail::cons.536"* dereferenceable(16) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"struct.thrust::detail::cons.536"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"struct.thrust::detail::cons.536"* %t, %"struct.thrust::detail::cons.536"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.536"*, %"struct.thrust::detail::cons.536"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.536"* %0) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPsEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.536"*, %"struct.thrust::detail::cons.536"** %t.addr, align 8 %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.537"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.536"* %1) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SC_(%"struct.thrust::detail::cons.537"* dereferenceable(8) %call1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"struct.thrust::detail::cons.536"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_IS4_NS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.535"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.535"*, align 8 store %"struct.thrust::detail::cons.535"* %this, %"struct.thrust::detail::cons.535"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.535"*, %"struct.thrust::detail::cons.535"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.535", %"struct.thrust::detail::cons.535"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.536"* %tail } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.536"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.536"*, align 8 store %"struct.thrust::detail::cons.536"* %this, %"struct.thrust::detail::cons.536"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.536"*, %"struct.thrust::detail::cons.536"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.536", %"struct.thrust::detail::cons.536"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.475"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEEENS0_18increment_iteratorEEET0_RT_SC_(%"struct.thrust::detail::cons.537"* dereferenceable(8) %t) #8 comdat { entry: %retval = alloca %"struct.thrust::detail::increment_iterator", align 1 %f = alloca %"struct.thrust::detail::increment_iterator", align 1 %t.addr = alloca %"struct.thrust::detail::cons.537"*, align 8 %agg.tmp = alloca %"struct.thrust::null_type", align 1 %undef.agg.tmp = alloca %"struct.thrust::null_type", align 1 %agg.tmp1 = alloca %"struct.thrust::detail::increment_iterator", align 1 %undef.agg.tmp2 = alloca %"struct.thrust::detail::increment_iterator", align 1 store %"struct.thrust::detail::cons.537"* %t, %"struct.thrust::detail::cons.537"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.537"*, %"struct.thrust::detail::cons.537"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.537"* %0) call void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPNS_4pairIssEEEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %f, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.537"*, %"struct.thrust::detail::cons.537"** %t.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.537"* %1) call void @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_18increment_iteratorEEET_NS_9null_typeES4_() ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.537"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.536"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.536"*, align 8 store %"struct.thrust::detail::cons.536"* %this, %"struct.thrust::detail::cons.536"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.536"*, %"struct.thrust::detail::cons.536"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.536", %"struct.thrust::detail::cons.536"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.537"* %tail } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18increment_iteratorclINS0_15normal_iteratorIPNS_4pairIssEEEEEEvRT_(%"struct.thrust::detail::increment_iterator"* %this, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::increment_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 store %"struct.thrust::detail::increment_iterator"* %this, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.484"* %it, %"class.thrust::detail::normal_iterator.484"** %it.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::increment_iterator"*, %"struct.thrust::detail::increment_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.484"* %0 to %"class.thrust::iterator_facade.486"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.486"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEE8get_headEv(%"struct.thrust::detail::cons.537"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.537"*, align 8 store %"struct.thrust::detail::cons.537"* %this, %"struct.thrust::detail::cons.537"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.537"*, %"struct.thrust::detail::cons.537"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.537", %"struct.thrust::detail::cons.537"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.484"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEE8get_tailEv(%"struct.thrust::detail::cons.537"* %this) #9 comdat align 2 { entry: %retval = alloca %"struct.thrust::null_type", align 1 %this.addr = alloca %"struct.thrust::detail::cons.537"*, align 8 store %"struct.thrust::detail::cons.537"* %this, %"struct.thrust::detail::cons.537"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.537"*, %"struct.thrust::detail::cons.537"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.486"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.486"*, align 8 store %"class.thrust::iterator_facade.486"* %this, %"class.thrust::iterator_facade.486"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.486"*, %"class.thrust::iterator_facade.486"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.486"* %this1) call void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPNS_4pairIssEEEEEEvRT_(%"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %call) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.486"* %this1) ret %"class.thrust::detail::normal_iterator.484"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access9incrementINS_6detail15normal_iteratorIPNS_4pairIssEEEEEEvRT_(%"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 store %"class.thrust::detail::normal_iterator.484"* %f, %"class.thrust::detail::normal_iterator.484"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.484"* %0 to %"class.thrust::iterator_adaptor.485"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E9incrementEv(%"class.thrust::iterator_adaptor.485"* %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lE7derivedEv(%"class.thrust::iterator_facade.486"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.486"*, align 8 store %"class.thrust::iterator_facade.486"* %this, %"class.thrust::iterator_facade.486"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.486"*, %"class.thrust::iterator_facade.486"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.486"* %this1 to %"class.thrust::detail::normal_iterator.484"* ret %"class.thrust::detail::normal_iterator.484"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E9incrementEv(%"class.thrust::iterator_adaptor.485"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.485"*, align 8 store %"class.thrust::iterator_adaptor.485"* %this, %"class.thrust::iterator_adaptor.485"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.485"*, %"class.thrust::iterator_adaptor.485"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !371 %incdec.ptr = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %0, i32 1 store %"struct.thrust::pair.487"* %incdec.ptr, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !371 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorIPsEES5_NS3_IPNS_4pairIssEEEENS_9null_typeESA_SA_SA_SA_SA_SA_EEEC2ESB_(%"class.thrust::zip_iterator.532"* %this, %"class.thrust::tuple.534"* byval align 8 %iterator_tuple) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.532"*, align 8 store %"class.thrust::zip_iterator.532"* %this, %"class.thrust::zip_iterator.532"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.532"*, %"class.thrust::zip_iterator.532"** %this.addr, align 8 %0 = bitcast %"class.thrust::zip_iterator.532"* %this1 to %"class.thrust::iterator_facade.533"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.532", %"class.thrust::zip_iterator.532"* %this1, i32 0, i32 0 %1 = bitcast %"class.thrust::tuple.534"* %m_iterator_tuple to i8* %2 = bitcast %"class.thrust::tuple.534"* %iterator_tuple to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6detail15normal_iteratorIPsEES4_NS2_IPNS_4pairIssEEEENS_9null_typeES9_S9_S9_S9_S9_S9_EC2ERKS4_SC_RKS8_(%"class.thrust::tuple.534"* %this, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %t2) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.534"*, align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.534"* %this, %"class.thrust::tuple.534"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.475"* %t0, %"class.thrust::detail::normal_iterator.475"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.475"* %t1, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.484"* %t2, %"class.thrust::detail::normal_iterator.484"** %t2.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.534"*, %"class.thrust::tuple.534"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.534"* %this1 to %"struct.thrust::detail::cons.535"* %1 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %t2.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_IS4_NS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEC2IKS4_SE_KS8_KS9_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.535"* %0, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %2, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_IS4_NS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEEEC2IKS4_SE_KS8_KS9_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.535"* %this, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t2, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.535"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.535"* %this, %"struct.thrust::detail::cons.535"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.475"* %t1, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.475"* %t2, %"class.thrust::detail::normal_iterator.475"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.484"* %t3, %"class.thrust::detail::normal_iterator.484"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.535"*, %"struct.thrust::detail::cons.535"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.535", %"struct.thrust::detail::cons.535"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.535", %"struct.thrust::detail::cons.535"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEC2IKS4_KS8_KS9_SF_SF_SF_SF_SF_SF_SF_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.536"* %tail, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %3, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPsEENS1_INS2_IPNS_4pairIssEEEENS_9null_typeEEEEC2IKS4_KS8_KS9_SF_SF_SF_SF_SF_SF_SF_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.536"* %this, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.536"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.536"* %this, %"struct.thrust::detail::cons.536"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.475"* %t1, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.484"* %t2, %"class.thrust::detail::normal_iterator.484"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.536"*, %"struct.thrust::detail::cons.536"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.536", %"struct.thrust::detail::cons.536"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.536", %"struct.thrust::detail::cons.536"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEEC2IKS6_EERT_RKS7_SE_SE_SE_SE_SE_SE_SE_SE_(%"struct.thrust::detail::cons.537"* %tail, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorIPNS_4pairIssEEEENS_9null_typeEEC2IKS6_EERT_RKS7_SE_SE_SE_SE_SE_SE_SE_SE_(%"struct.thrust::detail::cons.537"* %this, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %t1, %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1), %"struct.thrust::null_type"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.537"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 %.addr = alloca %"struct.thrust::null_type"*, align 8 %.addr1 = alloca %"struct.thrust::null_type"*, align 8 %.addr2 = alloca %"struct.thrust::null_type"*, align 8 %.addr3 = alloca %"struct.thrust::null_type"*, align 8 %.addr4 = alloca %"struct.thrust::null_type"*, align 8 %.addr5 = alloca %"struct.thrust::null_type"*, align 8 %.addr6 = alloca %"struct.thrust::null_type"*, align 8 %.addr7 = alloca %"struct.thrust::null_type"*, align 8 %.addr8 = alloca %"struct.thrust::null_type"*, align 8 store %"struct.thrust::detail::cons.537"* %this, %"struct.thrust::detail::cons.537"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.484"* %t1, %"class.thrust::detail::normal_iterator.484"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %0, %"struct.thrust::null_type"** %.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %1, %"struct.thrust::null_type"** %.addr1, align 8, !tbaa !7 store %"struct.thrust::null_type"* %2, %"struct.thrust::null_type"** %.addr2, align 8, !tbaa !7 store %"struct.thrust::null_type"* %3, %"struct.thrust::null_type"** %.addr3, align 8, !tbaa !7 store %"struct.thrust::null_type"* %4, %"struct.thrust::null_type"** %.addr4, align 8, !tbaa !7 store %"struct.thrust::null_type"* %5, %"struct.thrust::null_type"** %.addr5, align 8, !tbaa !7 store %"struct.thrust::null_type"* %6, %"struct.thrust::null_type"** %.addr6, align 8, !tbaa !7 store %"struct.thrust::null_type"* %7, %"struct.thrust::null_type"** %.addr7, align 8, !tbaa !7 store %"struct.thrust::null_type"* %8, %"struct.thrust::null_type"** %.addr8, align 8, !tbaa !7 %this9 = load %"struct.thrust::detail::cons.537"*, %"struct.thrust::detail::cons.537"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.537", %"struct.thrust::detail::cons.537"* %this9, i32 0, i32 0 %9 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %t1.addr, align 8 %10 = bitcast %"class.thrust::detail::normal_iterator.484"* %head to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.484"* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorIPNS_4pairIssEEEENS4_IPsEENS0_4consISC_NSD_IS8_NS_9null_typeEEEEEEET_RKNSD_IT0_T1_EE(%"struct.thrust::detail::cons.535"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.535"*, align 8 store %"struct.thrust::detail::cons.535"* %t, %"struct.thrust::detail::cons.535"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.535"*, %"struct.thrust::detail::cons.535"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.535", %"struct.thrust::detail::cons.535"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPNS_4pairIssEEEENS4_IPsEENS0_4consIS8_NS_9null_typeEEEEET_RKNSD_IT0_T1_EE(%"struct.thrust::detail::cons.536"* dereferenceable(16) %tail) ret %"class.thrust::detail::normal_iterator.484"* %call } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorIPNS_4pairIssEEEENS4_IPsEENS0_4consIS8_NS_9null_typeEEEEET_RKNSD_IT0_T1_EE(%"struct.thrust::detail::cons.536"* dereferenceable(16) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.536"*, align 8 store %"struct.thrust::detail::cons.536"* %t, %"struct.thrust::detail::cons.536"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.536"*, %"struct.thrust::detail::cons.536"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.536", %"struct.thrust::detail::cons.536"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPNS_4pairIssEEEES8_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.537"* dereferenceable(8) %tail) ret %"class.thrust::detail::normal_iterator.484"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorIPNS_4pairIssEEEES8_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.537"* dereferenceable(8) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.537"*, align 8 store %"struct.thrust::detail::cons.537"* %t, %"struct.thrust::detail::cons.537"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.537"*, %"struct.thrust::detail::cons.537"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.537", %"struct.thrust::detail::cons.537"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.484"* %head } ; Function Attrs: nounwind uwtable define linkonce_odr i16* @_ZN6thrust6detail18contiguous_storageIsSaIsEE5beginEv(%"class.thrust::detail::contiguous_storage.471"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.475", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.475"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 %2 = load i16*, i16** %coerce.dive2, align 8 ret i16* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.475"* %i, %"class.thrust::detail::normal_iterator.475"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.475"* %i, %"class.thrust::detail::normal_iterator.475"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.475"* %i, %"class.thrust::detail::normal_iterator.475"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %1 to %"class.thrust::iterator_facade.477"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEpLEl(%"class.thrust::iterator_facade.477"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEpLEl(%"class.thrust::iterator_facade.477"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.477"* %this, %"class.thrust::iterator_facade.477"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslE7derivedEv(%"class.thrust::iterator_facade.477"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPsEEEEvRT_NS6_15difference_typeE(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslE7derivedEv(%"class.thrust::iterator_facade.477"* %this1) ret %"class.thrust::detail::normal_iterator.475"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPsEEEEvRT_NS6_15difference_typeE(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.475"* %f, %"class.thrust::detail::normal_iterator.475"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.475"* %0 to %"class.thrust::iterator_adaptor.476"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl(%"class.thrust::iterator_adaptor.476"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E7advanceEl(%"class.thrust::iterator_adaptor.476"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.476"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.476"* %this, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.476"*, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %this1, i32 0, i32 0 %1 = load i16*, i16** %m_iterator, align 8, !tbaa !357 %add.ptr = getelementptr inbounds i16, i16* %1, i64 %0 store i16* %add.ptr, i16** %m_iterator, align 8, !tbaa !357 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::contiguous_storage.480"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.484", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.480"*, align 8 store %"class.thrust::detail::contiguous_storage.480"* %this, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.480"*, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.484"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.484"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive2, align 8 ret %"struct.thrust::pair.487"* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEEC2IsSaIsEEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.470"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.489"*, align 8 %v.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 %ref.tmp = alloca %"class.thrust::device_malloc_allocator.491", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.543", align 8 store %"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.489"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::vector_base.470"* %v, %"class.thrust::detail::vector_base.470"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::vector_base.489"*, %"class.thrust::detail::vector_base.489"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorIsEC2Ev(%"class.thrust::device_malloc_allocator.491"* %ref.tmp) invoke void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEEC2ERKS3_(%"class.thrust::detail::contiguous_storage.490"* %m_storage, %"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZN6thrust23device_malloc_allocatorIsED2Ev(%"class.thrust::device_malloc_allocator.491"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !373 %0 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %v.addr, align 8 %call = invoke i16* @_ZNK6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive4, align 8 %1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %v.addr, align 8 %call7 = invoke i16* @_ZNK6thrust6detail11vector_baseIsSaIsEE3endEv(%"class.thrust::detail::vector_base.470"* %1) to label %invoke.cont6 unwind label %lpad2 invoke.cont6: ; preds = %invoke.cont3 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive8, i32 0, i32 0 store i16* %call7, i16** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive10, i32 0, i32 0 %2 = load i16*, i16** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp5, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive12, i32 0, i32 0 %3 = load i16*, i16** %coerce.dive13, align 8 invoke void @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE10range_initINS0_15normal_iteratorIPKsEEEEvT_SA_(%"class.thrust::detail::vector_base.489"* %this1, i16* %2, i16* %3) to label %invoke.cont14 unwind label %lpad2 invoke.cont14: ; preds = %invoke.cont6 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZN6thrust23device_malloc_allocatorIsED2Ev(%"class.thrust::device_malloc_allocator.491"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont6, %invoke.cont3, %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEED2Ev(%"class.thrust::detail::contiguous_storage.490"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val15 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val15 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorIsEC2Ev(%"class.thrust::device_malloc_allocator.491"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 store %"class.thrust::device_malloc_allocator.491"* %this, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEEC2ERKS3_(%"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 %alloc.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_malloc_allocator.491"* %alloc, %"class.thrust::device_malloc_allocator.491"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %alloc.addr, align 8 call void @_ZN6thrust23device_malloc_allocatorIsEC2ERKS1_(%"class.thrust::device_malloc_allocator.491"* %m_allocator, %"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %0) %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 1 invoke void @_ZN6thrust10device_ptrIsEC2IsEEPT_(%"class.thrust::device_ptr.496"* %agg.tmp, i16* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive2, i32 0, i32 0 %1 = load i16*, i16** %coerce.dive3, align 8 invoke void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIsEEEC2ES3_(%"class.thrust::detail::normal_iterator.493"* %m_begin, i16* %1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !378 ret void lpad: ; preds = %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 call void @_ZN6thrust23device_malloc_allocatorIsED2Ev(%"class.thrust::device_malloc_allocator.491"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorIsED2Ev(%"class.thrust::device_malloc_allocator.491"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 store %"class.thrust::device_malloc_allocator.491"* %this, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE10range_initINS0_15normal_iteratorIPKsEEEEvT_SA_(%"class.thrust::detail::vector_base.489"* %this, i16* %first.coerce, i16* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.489"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp6 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.489"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.489"*, %"class.thrust::detail::vector_base.489"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive7, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp5, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive9, i32 0, i32 0 %5 = load i16*, i16** %coerce.dive10, align 8 call void @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE10range_initINS0_15normal_iteratorIPKsEEEEvT_SA_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.489"* %this4, i16* %4, i16* %5) ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZNK6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.543", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 %call = call i16* @_ZNK6thrust6detail18contiguous_storageIsSaIsEE5beginEv(%"class.thrust::detail::contiguous_storage.471"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive3, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive4, align 8 ret i16* %0 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZNK6thrust6detail11vector_baseIsSaIsEE3endEv(%"class.thrust::detail::vector_base.470"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.543", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %call = call i16* @_ZNK6thrust6detail11vector_baseIsSaIsEE5beginEv(%"class.thrust::detail::vector_base.470"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive2, align 8 %call3 = call i64 @_ZNK6thrust6detail11vector_baseIsSaIsEE4sizeEv(%"class.thrust::detail::vector_base.470"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKsEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %retval, i64 %call3) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive4, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive5, align 8 ret i16* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEED2Ev(%"class.thrust::detail::contiguous_storage.490"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.490"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorIsED2Ev(%"class.thrust::device_malloc_allocator.491"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorIsED2Ev(%"class.thrust::device_malloc_allocator.491"* %m_allocator2) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorIsEC2ERKS1_(%"class.thrust::device_malloc_allocator.491"* %this, %"class.thrust::device_malloc_allocator.491"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 store %"class.thrust::device_malloc_allocator.491"* %this, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_malloc_allocator.491"* %0, %"class.thrust::device_malloc_allocator.491"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIsEC2IsEEPT_(%"class.thrust::device_ptr.496"* %this, i16* %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.496"*, align 8 %ptr.addr = alloca i16*, align 8 store %"class.thrust::device_ptr.496"* %this, %"class.thrust::device_ptr.496"** %this.addr, align 8, !tbaa !1 store i16* %ptr, i16** %ptr.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.496"* %this1 to %"class.thrust::pointer.497"* %1 = load i16*, i16** %ptr.addr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIsNS_6system4cuda6detail3tagENS_16device_referenceIsEENS_10device_ptrIsEEEC2IsEEPT_(%"class.thrust::pointer.497"* %0, i16* %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIsEEEC2ES3_(%"class.thrust::detail::normal_iterator.493"* %this, i16* %p.coerce) unnamed_addr #0 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.496", align 8 %this.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 store i16* %p.coerce, i16** %coerce.dive2, align 8 store %"class.thrust::detail::normal_iterator.493"* %this, %"class.thrust::detail::normal_iterator.493"** %this.addr, align 8, !tbaa !1 %this3 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.493"* %this3 to %"class.thrust::iterator_adaptor.494"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.494"* %0, %"class.thrust::device_ptr.496"* dereferenceable(8) %p) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIsNS_6system4cuda6detail3tagENS_16device_referenceIsEENS_10device_ptrIsEEEC2IsEEPT_(%"class.thrust::pointer.497"* %this, i16* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.497"*, align 8 %other.addr = alloca i16*, align 8 store %"class.thrust::pointer.497"* %this, %"class.thrust::pointer.497"** %this.addr, align 8, !tbaa !1 store i16* %other, i16** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.497"*, %"class.thrust::pointer.497"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.497"* %this1 to %"class.thrust::iterator_adaptor.498"* call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEC2ERKS3_(%"class.thrust::iterator_adaptor.498"* %0, i16** dereferenceable(8) %other.addr) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEC2ERKS3_(%"class.thrust::iterator_adaptor.498"* %this, i16** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.498"*, align 8 %iter.addr = alloca i16**, align 8 store %"class.thrust::iterator_adaptor.498"* %this, %"class.thrust::iterator_adaptor.498"** %this.addr, align 8, !tbaa !1 store i16** %iter, i16*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.498"*, %"class.thrust::iterator_adaptor.498"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.498"* %this1 to %"class.thrust::iterator_facade.499"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %this1, i32 0, i32 0 %1 = load i16**, i16*** %iter.addr, align 8 %2 = load i16*, i16** %1, align 8, !tbaa !1 store i16* %2, i16** %m_iterator, align 8, !tbaa !379 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.494"* %this, %"class.thrust::device_ptr.496"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.494"*, align 8 %iter.addr = alloca %"class.thrust::device_ptr.496"*, align 8 store %"class.thrust::iterator_adaptor.494"* %this, %"class.thrust::iterator_adaptor.494"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.496"* %iter, %"class.thrust::device_ptr.496"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.494"*, %"class.thrust::iterator_adaptor.494"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.494"* %this1 to %"class.thrust::iterator_facade.495"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %this1, i32 0, i32 0 %1 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %iter.addr, align 8 %2 = bitcast %"class.thrust::device_ptr.496"* %m_iterator to i8* %3 = bitcast %"class.thrust::device_ptr.496"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE10range_initINS0_15normal_iteratorIPKsEEEEvT_SA_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.489"* %this, i16* %first.coerce, i16* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %this.addr = alloca %"class.thrust::detail::vector_base.489"*, align 8 %new_size = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.489"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.489"*, %"class.thrust::detail::vector_base.489"** %this.addr, align 8 %1 = bitcast i64* %new_size to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp5 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive6, i32 0, i32 0 %6 = load i16*, i16** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive8, i32 0, i32 0 %7 = load i16*, i16** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKsEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_(i16* %6, i16* %7) store i64 %call, i64* %new_size, align 8, !tbaa !13 %8 = load i64, i64* %new_size, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp11 to i8* %12 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this4, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp10, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive12, i32 0, i32 0 %13 = load i16*, i16** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp11, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive14, i32 0, i32 0 %14 = load i16*, i16** %coerce.dive15, align 8 call void @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE17allocate_and_copyINS0_15normal_iteratorIPKsEEEEvmT_SA_RNS0_18contiguous_storageIsS3_EE(%"class.thrust::detail::vector_base.489"* %this4, i64 %8, i16* %13, i16* %14, %"class.thrust::detail::contiguous_storage.490"* dereferenceable(24) %m_storage) %15 = load i64, i64* %new_size, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this4, i32 0, i32 1 store i64 %15, i64* %m_size, align 8, !tbaa !373 %16 = bitcast i64* %new_size to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKsEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_(i16* %first.coerce, i16* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive5, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive7, i32 0, i32 0 %5 = load i16*, i16** %coerce.dive8, align 8 %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKsEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_(i16* %4, i16* %5) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE17allocate_and_copyINS0_15normal_iteratorIPKsEEEEvmT_SA_RNS0_18contiguous_storageIsS3_EE(%"class.thrust::detail::vector_base.489"* %this, i64 %requested_size, i16* %first.coerce, i16* %last.coerce, %"class.thrust::detail::contiguous_storage.490"* dereferenceable(24) %new_storage) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.489"*, align 8 %requested_size.addr = alloca i64, align 8 %new_storage.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 %allocated_size = alloca i64, align 8 %ref.tmp = alloca i64, align 8 %ref.tmp6 = alloca i64, align 8 %ref.tmp11 = alloca %"class.std::basic_string", align 8 %ref.tmp12 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp17 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp18 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %coerce = alloca %"class.thrust::detail::normal_iterator.493", align 8 %new_storage_end = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp54 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp62 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.489"** %this.addr, align 8, !tbaa !1 store i64 %requested_size, i64* %requested_size.addr, align 8, !tbaa !13 store %"class.thrust::detail::contiguous_storage.490"* %new_storage, %"class.thrust::detail::contiguous_storage.490"** %new_storage.addr, align 8, !tbaa !7 %this4 = load %"class.thrust::detail::vector_base.489"*, %"class.thrust::detail::vector_base.489"** %this.addr, align 8 %0 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %cmp = icmp eq i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %new_storage.addr, align 8 call void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.490"* %1) br label %return if.end: ; preds = %entry %2 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 %call = call i64 @_ZNK6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE8capacityEv(%"class.thrust::detail::vector_base.489"* %this4) %mul = mul i64 2, %call store i64 %mul, i64* %ref.tmp, align 8, !tbaa !13 %call5 = call i64 @_ZN6thrust3maxImEET_RKS1_S3_(i64* dereferenceable(8) %requested_size.addr, i64* dereferenceable(8) %ref.tmp) store i64 %call5, i64* %allocated_size, align 8, !tbaa !13 %call7 = call i64 @_ZNK6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE8max_sizeEv(%"class.thrust::detail::vector_base.489"* %this4) store i64 %call7, i64* %ref.tmp6, align 8, !tbaa !13 %call8 = call i64 @_ZN6thrust3minImEET_RKS1_S3_(i64* dereferenceable(8) %allocated_size, i64* dereferenceable(8) %ref.tmp6) store i64 %call8, i64* %allocated_size, align 8, !tbaa !13 %3 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %4 = load i64, i64* %allocated_size, align 8, !tbaa !13 %cmp9 = icmp ugt i64 %3, %4 br i1 %cmp9, label %if.then10, label %if.end16 if.then10: ; preds = %if.end %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %5 = bitcast i8* %exception to %"class.std::length_error"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp12) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp11, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.23, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp12) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then10 invoke void @_ZNSt12length_errorC1ERKSs(%"class.std::length_error"* %5, %"class.std::basic_string"* dereferenceable(8) %ref.tmp11) to label %invoke.cont14 unwind label %lpad13 invoke.cont14: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt12length_error to i8*), i8* bitcast (void (%"class.std::length_error"*)* @_ZNSt12length_errorD1Ev to i8*)) #15 to label %unreachable unwind label %lpad13 lpad: ; preds = %if.then10 %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 br label %ehcleanup lpad13: ; preds = %invoke.cont14, %invoke.cont %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp11) #5 br label %ehcleanup ehcleanup: ; preds = %lpad13, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp12) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup br label %ehcleanup78 if.end16: ; preds = %if.end %12 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %new_storage.addr, align 8 %13 = load i64, i64* %allocated_size, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE8allocateEm(%"class.thrust::detail::contiguous_storage.490"* %12, i64 %13) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this4, i32 0, i32 0 %14 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp17 to i8* %17 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %18 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %new_storage.addr, align 8 %call21 = invoke i16* @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE5beginEv(%"class.thrust::detail::contiguous_storage.490"* %18) to label %invoke.cont20 unwind label %lpad19 invoke.cont20: ; preds = %if.end16 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp18, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive25, i32 0, i32 0 store i16* %call21, i16** %coerce.dive26, align 8 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive27, i32 0, i32 0 %19 = load i16*, i16** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp17, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive29, i32 0, i32 0 %20 = load i16*, i16** %coerce.dive30, align 8 %coerce.dive31 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp18, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive31, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive32, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive34, i32 0, i32 0 %21 = load i16*, i16** %coerce.dive35, align 8 %call37 = invoke i16* @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE18uninitialized_copyINS0_15normal_iteratorIPKsEEEENS6_INS_10device_ptrIsEEEET_SD_SC_(%"class.thrust::detail::contiguous_storage.490"* %m_storage, i16* %19, i16* %20, i16* %21) to label %invoke.cont36 unwind label %lpad19 invoke.cont36: ; preds = %invoke.cont20 %coerce.dive38 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %coerce, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive41, i32 0, i32 0 store i16* %call37, i16** %coerce.dive42, align 8 br label %try.cont lpad19: ; preds = %invoke.cont20, %if.end16 %22 = landingpad { i8*, i32 } catch i8* null %23 = extractvalue { i8*, i32 } %22, 0 store i8* %23, i8** %exn.slot, align 8 %24 = extractvalue { i8*, i32 } %22, 1 store i32 %24, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad19 %exn = load i8*, i8** %exn.slot, align 8 %25 = call i8* @__cxa_begin_catch(i8* %exn) #5 %26 = bitcast %"class.thrust::detail::normal_iterator.493"* %new_storage_end to i8* call void @llvm.lifetime.start(i64 8, i8* %26) #5 %27 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %new_storage.addr, align 8 %call45 = invoke i16* @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE5beginEv(%"class.thrust::detail::contiguous_storage.490"* %27) to label %invoke.cont44 unwind label %lpad43 invoke.cont44: ; preds = %catch %coerce.dive46 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %new_storage_end, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive49, i32 0, i32 0 store i16* %call45, i16** %coerce.dive50, align 8 %28 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 invoke void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %new_storage_end, i64 %28) to label %invoke.cont52 unwind label %lpad51 invoke.cont52: ; preds = %invoke.cont44 %m_storage53 = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this4, i32 0, i32 0 %29 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %new_storage.addr, align 8 %call56 = invoke i16* @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE5beginEv(%"class.thrust::detail::contiguous_storage.490"* %29) to label %invoke.cont55 unwind label %lpad51 invoke.cont55: ; preds = %invoke.cont52 %coerce.dive57 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp54, i32 0, i32 0 %coerce.dive58 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive57, i32 0, i32 0 %coerce.dive59 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive58, i32 0, i32 0 %coerce.dive60 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive59, i32 0, i32 0 %coerce.dive61 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive60, i32 0, i32 0 store i16* %call56, i16** %coerce.dive61, align 8 %30 = bitcast %"class.thrust::detail::normal_iterator.493"* %agg.tmp62 to i8* %31 = bitcast %"class.thrust::detail::normal_iterator.493"* %new_storage_end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %31, i64 8, i32 8, i1 false) %coerce.dive63 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp54, i32 0, i32 0 %coerce.dive64 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive63, i32 0, i32 0 %coerce.dive65 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive64, i32 0, i32 0 %coerce.dive66 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive65, i32 0, i32 0 %coerce.dive67 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive66, i32 0, i32 0 %32 = load i16*, i16** %coerce.dive67, align 8 %coerce.dive68 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp62, i32 0, i32 0 %coerce.dive69 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive68, i32 0, i32 0 %coerce.dive70 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive69, i32 0, i32 0 %coerce.dive71 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive70, i32 0, i32 0 %coerce.dive72 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive71, i32 0, i32 0 %33 = load i16*, i16** %coerce.dive72, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE7destroyENS0_15normal_iteratorINS_10device_ptrIsEEEES8_(%"class.thrust::detail::contiguous_storage.490"* %m_storage53, i16* %32, i16* %33) to label %invoke.cont73 unwind label %lpad51 invoke.cont73: ; preds = %invoke.cont55 %34 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %new_storage.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.490"* %34) to label %invoke.cont74 unwind label %lpad51 invoke.cont74: ; preds = %invoke.cont73 invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad51 lpad43: ; preds = %catch %35 = landingpad { i8*, i32 } cleanup %36 = extractvalue { i8*, i32 } %35, 0 store i8* %36, i8** %exn.slot, align 8 %37 = extractvalue { i8*, i32 } %35, 1 store i32 %37, i32* %ehselector.slot, align 4 br label %ehcleanup76 lpad51: ; preds = %invoke.cont74, %invoke.cont73, %invoke.cont55, %invoke.cont52, %invoke.cont44 %38 = landingpad { i8*, i32 } cleanup %39 = extractvalue { i8*, i32 } %38, 0 store i8* %39, i8** %exn.slot, align 8 %40 = extractvalue { i8*, i32 } %38, 1 store i32 %40, i32* %ehselector.slot, align 4 %41 = bitcast %"class.thrust::detail::normal_iterator.493"* %new_storage_end to i8* call void @llvm.lifetime.end(i64 8, i8* %41) #5 br label %ehcleanup76 ehcleanup76: ; preds = %lpad51, %lpad43 invoke void @__cxa_end_catch() to label %invoke.cont77 unwind label %terminate.lpad invoke.cont77: ; preds = %ehcleanup76 br label %ehcleanup78 try.cont: ; preds = %invoke.cont36 %42 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %42) #5 br label %return return: ; preds = %try.cont, %if.then ret void ehcleanup78: ; preds = %invoke.cont77, %cleanup.done %43 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %43) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup78 %exn79 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn79, 0 %lpad.val80 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val80 terminate.lpad: ; preds = %ehcleanup76 %44 = landingpad { i8*, i32 } catch i8* null %45 = extractvalue { i8*, i32 } %44, 0 call void @__clang_call_terminate(i8* %45) #13 unreachable unreachable: ; preds = %invoke.cont74, %invoke.cont14 unreachable } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKsEEEENS_15iterator_traitsIT_E15difference_typeESA_SA_(i16* %first.coerce, i16* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp5 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive6, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp4, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive8, i32 0, i32 0 %5 = load i16*, i16** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKsEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE(i16* %4, i16* %5) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKsEEEENS_15iterator_traitsIT_E15difference_typeESB_SB_NS_27random_access_traversal_tagE(i16* %first.coerce, i16* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to %"class.thrust::iterator_facade.545"* %2 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to %"class.thrust::iterator_facade.545"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_sS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.545"* dereferenceable(1) %1, %"class.thrust::iterator_facade.545"* dereferenceable(1) %2) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_sS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.545"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.545"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.545"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.545"*, align 8 store %"class.thrust::iterator_facade.545"* %lhs, %"class.thrust::iterator_facade.545"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.545"* %rhs, %"class.thrust::iterator_facade.545"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.545"*, %"class.thrust::iterator_facade.545"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.545"* %0 to %"class.thrust::detail::normal_iterator.543"* %2 = load %"class.thrust::iterator_facade.545"*, %"class.thrust::iterator_facade.545"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.545"* %2 to %"class.thrust::detail::normal_iterator.543"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKsEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKsEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.543"* %f1, %"class.thrust::detail::normal_iterator.543"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.543"* %f2, %"class.thrust::detail::normal_iterator.543"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKsEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKsEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 store %"class.thrust::detail::normal_iterator.543"* %f1, %"class.thrust::detail::normal_iterator.543"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.543"* %f2, %"class.thrust::detail::normal_iterator.543"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.543"* %1 to %"class.thrust::iterator_adaptor.544"* %3 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.543"* %3 to %"class.thrust::iterator_adaptor.544"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.544"* %2, %"class.thrust::iterator_adaptor.544"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.544"* %this, %"class.thrust::iterator_adaptor.544"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.544"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.544"*, align 8 store %"class.thrust::iterator_adaptor.544"* %this, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.544"* %y, %"class.thrust::iterator_adaptor.544"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.544"*, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.544"*, %"class.thrust::iterator_adaptor.544"** %y.addr, align 8 %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.544"* %0) %1 = load i16*, i16** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %this1, i32 0, i32 0 %2 = load i16*, i16** %m_iterator, align 8, !tbaa !381 %sub.ptr.lhs.cast = ptrtoint i16* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i16* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 ret i64 %sub.ptr.div } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.544"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.544"*, align 8 store %"class.thrust::iterator_adaptor.544"* %this, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.544"*, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %this1, i32 0, i32 0 ret i16** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.490"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp7 = alloca %"class.thrust::device_ptr.496", align 8 store %"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE4sizeEv(%"class.thrust::detail::contiguous_storage.490"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.493"* %m_begin to %"class.thrust::iterator_adaptor.494"* %call2 = call dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.494"* %0) %1 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.496"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE4sizeEv(%"class.thrust::detail::contiguous_storage.490"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 %3 = load i16*, i16** %coerce.dive5, align 8 call void @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE10deallocateERS3_NS_10device_ptrIsEEm(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %m_allocator, i16* %3, i64 %call3) %m_begin6 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 1 call void @_ZN6thrust10device_ptrIsEC2IsEEPT_(%"class.thrust::device_ptr.496"* %agg.tmp7, i16* null) %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive9, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive10, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIsEEEC2ES3_(%"class.thrust::detail::normal_iterator.493"* %ref.tmp, i16* %4) %5 = bitcast %"class.thrust::detail::normal_iterator.493"* %m_begin6 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.493"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !378 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE8capacityEv(%"class.thrust::detail::vector_base.489"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.489"*, align 8 store %"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.489"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.489"*, %"class.thrust::detail::vector_base.489"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE4sizeEv(%"class.thrust::detail::contiguous_storage.490"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIsNS_23device_malloc_allocatorIsEEE8max_sizeEv(%"class.thrust::detail::vector_base.489"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.489"*, align 8 store %"class.thrust::detail::vector_base.489"* %this, %"class.thrust::detail::vector_base.489"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.489"*, %"class.thrust::detail::vector_base.489"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.489", %"class.thrust::detail::vector_base.489"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.490"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE8allocateEm(%"class.thrust::detail::contiguous_storage.490"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 %ref.tmp8 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.496", align 8 store %"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i16* @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE8allocateERS3_m(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %m_allocator, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive2, i32 0, i32 0 store i16* %call, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 %2 = load i16*, i16** %coerce.dive6, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIsEEEC2ES3_(%"class.thrust::detail::normal_iterator.493"* %ref.tmp, i16* %2) %3 = bitcast %"class.thrust::detail::normal_iterator.493"* %m_begin to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.493"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 2 store i64 %5, i64* %m_size, align 8, !tbaa !378 br label %if.end if.else: ; preds = %entry %m_begin7 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 1 call void @_ZN6thrust10device_ptrIsEC2IsEEPT_(%"class.thrust::device_ptr.496"* %agg.tmp9, i16* null) %coerce.dive10 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive11, i32 0, i32 0 %6 = load i16*, i16** %coerce.dive12, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIsEEEC2ES3_(%"class.thrust::detail::normal_iterator.493"* %ref.tmp8, i16* %6) %7 = bitcast %"class.thrust::detail::normal_iterator.493"* %m_begin7 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.493"* %ref.tmp8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %m_size13 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 2 store i64 0, i64* %m_size13, align 8, !tbaa !378 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE18uninitialized_copyINS0_15normal_iteratorIPKsEEEENS6_INS_10device_ptrIsEEEET_SD_SC_(%"class.thrust::detail::contiguous_storage.490"* %this, i16* %first.coerce, i16* %last.coerce, i16* %result.coerce) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.493", align 8 %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::detail::normal_iterator.493", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 %from_system = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp12 = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive7, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive8, align 8 store %"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8, !tbaa !1 %this9 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to %"struct.thrust::execution_policy.88"* %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this9, i32 0, i32 0 %2 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp10 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp11 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.493"* %result to %"class.thrust::iterator_adaptor.494"* %call = call dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.494"* %6) %7 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp12 to i8* %8 = bitcast %"class.thrust::device_ptr.496"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp10, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive13, i32 0, i32 0 %9 = load i16*, i16** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp11, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive15, i32 0, i32 0 %10 = load i16*, i16** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp12, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive18, i32 0, i32 0 %11 = load i16*, i16** %coerce.dive19, align 8 %call20 = call i16* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIsEENS0_15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_RNS_16execution_policyIT_EERT0_T1_SL_SE_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %m_allocator, i16* %9, i16* %10, i16* %11) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive22, i32 0, i32 0 store i16* %call20, i16** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive25, i32 0, i32 0 %12 = load i16*, i16** %coerce.dive26, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrIsEEEC2ES3_(%"class.thrust::detail::normal_iterator.493"* %retval, i16* %12) %13 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.end(i64 1, i8* %13) #5 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %retval, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive27, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive30, i32 0, i32 0 %14 = load i16*, i16** %coerce.dive31, align 8 ret i16* %14 } ; Function Attrs: nounwind uwtable define linkonce_odr i16* @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE5beginEv(%"class.thrust::detail::contiguous_storage.490"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.493", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 store %"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.493"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.493"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 %2 = load i16*, i16** %coerce.dive5, align 8 ret i16* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.493"* %i, %"class.thrust::detail::normal_iterator.493"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE7destroyENS0_15normal_iteratorINS_10device_ptrIsEEEES8_(%"class.thrust::detail::contiguous_storage.490"* %this, i16* %first.coerce, i16* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.493", align 8 %last = alloca %"class.thrust::detail::normal_iterator.493", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive3, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive8, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive9, align 8 store %"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8, !tbaa !1 %this10 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this10, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.493"* %first to %"class.thrust::iterator_adaptor.494"* %call = call dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.494"* %0) %1 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.496"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.493"* %last to %"class.thrust::iterator_facade.495"* %4 = bitcast %"class.thrust::detail::normal_iterator.493"* %first to %"class.thrust::iterator_facade.495"* %call11 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElS5_sS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.495"* dereferenceable(1) %3, %"class.thrust::iterator_facade.495"* dereferenceable(1) %4) %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive13, i32 0, i32 0 %5 = load i16*, i16** %coerce.dive14, align 8 call void @_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorIsEENS_10device_ptrIsEElEEvRT_T0_T1_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %m_allocator, i16* %5, i64 %call11) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE4sizeEv(%"class.thrust::detail::contiguous_storage.490"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 store %"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !378 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE10deallocateERS3_NS_10device_ptrIsEEm(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a, i16* %p.coerce, i64 %n) #8 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.496", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 store i16* %p.coerce, i16** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.496"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive5, align 8 call void @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE10deallocateERS3_NS_10device_ptrIsEEmEN19workaround_warnings10deallocateES5_S7_m(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %0, i16* %4, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.494"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.494"*, align 8 store %"class.thrust::iterator_adaptor.494"* %this, %"class.thrust::iterator_adaptor.494"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.494"*, %"class.thrust::iterator_adaptor.494"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %this1, i32 0, i32 0 ret %"class.thrust::device_ptr.496"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE10deallocateERS3_NS_10device_ptrIsEEmEN19workaround_warnings10deallocateES5_S7_m(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a, i16* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.496", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 store i16* %p.coerce, i16** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.496"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive5, align 8 call void @_ZN6thrust23device_malloc_allocatorIsE10deallocateENS_10device_ptrIsEEm(%"class.thrust::device_malloc_allocator.491"* %0, i16* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorIsE10deallocateENS_10device_ptrIsEEm(%"class.thrust::device_malloc_allocator.491"* %this, i16* %p.coerce, i64 %cnt) #8 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.496", align 8 %this.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %cnt.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.115", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 store i16* %p.coerce, i16** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.491"* %this, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this3 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8 call void @_ZN6thrust10device_ptrIvEC2IsEERKNS0_IT_EE(%"class.thrust::device_ptr.115"* %agg.tmp, %"class.thrust::device_ptr.496"* dereferenceable(8) %p) %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive5, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive6, align 8 call void @_ZN6thrust11device_freeENS_10device_ptrIvEE(i8* %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIvEC2IsEERKNS0_IT_EE(%"class.thrust::device_ptr.115"* %this, %"class.thrust::device_ptr.496"* dereferenceable(8) %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.115"*, align 8 %other.addr = alloca %"class.thrust::device_ptr.496"*, align 8 store %"class.thrust::device_ptr.115"* %this, %"class.thrust::device_ptr.115"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.496"* %other, %"class.thrust::device_ptr.496"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_ptr.115"*, %"class.thrust::device_ptr.115"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.115"* %this1 to %"class.thrust::pointer.116"* %1 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %other.addr, align 8 call void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_IsEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISC_S9_vE4typeE(%"class.thrust::pointer.116"* %0, %"class.thrust::device_ptr.496"* dereferenceable(8) %1, i8* null) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_IsEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISC_S9_vE4typeE(%"class.thrust::pointer.116"* %this, %"class.thrust::device_ptr.496"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.116"*, align 8 %other.addr = alloca %"class.thrust::device_ptr.496"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 store %"class.thrust::pointer.116"* %this, %"class.thrust::pointer.116"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.496"* %other, %"class.thrust::device_ptr.496"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.116"*, %"class.thrust::pointer.116"** %this.addr, align 8 %1 = bitcast %"class.thrust::pointer.116"* %this1 to %"class.thrust::iterator_adaptor.117"* %2 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %other.addr, align 8 %3 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp to i8* %4 = bitcast %"class.thrust::device_ptr.496"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive2, i32 0, i32 0 %5 = load i16*, i16** %coerce.dive3, align 8 %call = call i16* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIsEEE3getES3_(i16* %5) %6 = bitcast i16* %call to i8* store i8* %6, i8** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIvEEPvvNS_6system4cuda6detail3tagENS_27random_access_traversal_tagEvlEC2ERKS3_(%"class.thrust::iterator_adaptor.117"* %1, i8** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIsEEE3getES3_(i16* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 store i16* %ptr.coerce, i16** %coerce.dive2, align 8 %0 = bitcast %"class.thrust::device_ptr.496"* %ptr to %"class.thrust::pointer.497"* %call = call i16* @_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_16device_referenceIsEENS_10device_ptrIsEEE3getEv(%"class.thrust::pointer.497"* %0) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_16device_referenceIsEENS_10device_ptrIsEEE3getEv(%"class.thrust::pointer.497"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.497"*, align 8 store %"class.thrust::pointer.497"* %this, %"class.thrust::pointer.497"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.497"*, %"class.thrust::pointer.497"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.497"* %this1 to %"class.thrust::iterator_adaptor.498"* %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE4baseEv(%"class.thrust::iterator_adaptor.498"* %0) %1 = load i16*, i16** %call, align 8, !tbaa !1 ret i16* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE4baseEv(%"class.thrust::iterator_adaptor.498"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.498"*, align 8 store %"class.thrust::iterator_adaptor.498"* %this, %"class.thrust::iterator_adaptor.498"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.498"*, %"class.thrust::iterator_adaptor.498"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %this1, i32 0, i32 0 ret i16** %m_iterator } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIsNS_23device_malloc_allocatorIsEEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.490"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.490"*, align 8 store %"class.thrust::detail::contiguous_storage.490"* %this, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.490"*, %"class.thrust::detail::contiguous_storage.490"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.490", %"class.thrust::detail::contiguous_storage.490"* %this1, i32 0, i32 0 %call = call i64 @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE8max_sizeERKS3_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %m_allocator) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE8max_sizeERKS3_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a) #8 comdat align 2 { entry: %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8 %call = call i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorIsEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS6_E9size_typeEE4typeERKS6_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %0) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorIsEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS6_E9size_typeEE4typeERKS6_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a) #1 comdat { entry: %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 ret i64 -1 } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE8allocateERS3_m(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a, i64 %n) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i16* @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE8allocateERS3_mEN19workaround_warnings8allocateES5_m(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 store i16* %call, i16** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 %2 = load i16*, i16** %coerce.dive5, align 8 ret i16* %2 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorIsEEE8allocateERS3_mEN19workaround_warnings8allocateES5_m(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.546", align 8 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust10device_ptrIKsEC2IsEEPT_(%"class.thrust::device_ptr.546"* %agg.tmp, i16* null) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.546", %"class.thrust::device_ptr.546"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.547", %"class.thrust::pointer.547"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.548", %"class.thrust::iterator_adaptor.548"* %coerce.dive1, i32 0, i32 0 %2 = load i16*, i16** %coerce.dive2, align 8 %call = call i16* @_ZN6thrust23device_malloc_allocatorIsE8allocateEmNS_10device_ptrIKsEE(%"class.thrust::device_malloc_allocator.491"* %0, i64 %1, i16* %2) %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 store i16* %call, i16** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive7, i32 0, i32 0 %3 = load i16*, i16** %coerce.dive8, align 8 ret i16* %3 } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrust23device_malloc_allocatorIsE8allocateEmNS_10device_ptrIKsEE(%"class.thrust::device_malloc_allocator.491"* %this, i64 %cnt, i16* %.coerce) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %0 = alloca %"class.thrust::device_ptr.546", align 8 %this.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %cnt.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.546", %"class.thrust::device_ptr.546"* %0, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.547", %"class.thrust::pointer.547"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.548", %"class.thrust::iterator_adaptor.548"* %coerce.dive1, i32 0, i32 0 store i16* %.coerce, i16** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.491"* %this, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this3 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8 %1 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call = call i64 @_ZNK6thrust23device_malloc_allocatorIsE8max_sizeEv(%"class.thrust::device_malloc_allocator.491"* %this3) %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %exception = call i8* @__cxa_allocate_exception(i64 8) #5 %2 = bitcast i8* %exception to %"class.std::bad_alloc"* call void @_ZNSt9bad_allocC2Ev(%"class.std::bad_alloc"* %2) #5 call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt9bad_alloc to i8*), i8* bitcast (void (%"class.std::bad_alloc"*)* @_ZNSt9bad_allocD1Ev to i8*)) #15 unreachable if.end: ; preds = %entry %3 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call4 = call i16* @_ZN6thrust13device_mallocIsEENS_10device_ptrIT_EEm(i64 %3) %coerce.dive5 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive6, i32 0, i32 0 store i16* %call4, i16** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive9, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive10, align 8 ret i16* %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIKsEC2IsEEPT_(%"class.thrust::device_ptr.546"* %this, i16* %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.546"*, align 8 %ptr.addr = alloca i16*, align 8 store %"class.thrust::device_ptr.546"* %this, %"class.thrust::device_ptr.546"** %this.addr, align 8, !tbaa !1 store i16* %ptr, i16** %ptr.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_ptr.546"*, %"class.thrust::device_ptr.546"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.546"* %this1 to %"class.thrust::pointer.547"* %1 = load i16*, i16** %ptr.addr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIKsNS_6system4cuda6detail3tagENS_16device_referenceIS1_EENS_10device_ptrIS1_EEEC2IsEEPT_(%"class.thrust::pointer.547"* %0, i16* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZNK6thrust23device_malloc_allocatorIsE8max_sizeEv(%"class.thrust::device_malloc_allocator.491"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 store %"class.thrust::device_malloc_allocator.491"* %this, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %this.addr, align 8 %call = call i64 @_ZNSt14numeric_limitsImE3maxEv() #5 %div = udiv i64 %call, 2 ret i64 %div } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust13device_mallocIsEENS_10device_ptrIT_EEm(i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %n.addr = alloca i64, align 8 %s = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %coerce = alloca %"class.thrust::pointer.550", align 8 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to %"struct.thrust::detail::execution_policy_base.121"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call i16* @_ZN6thrust6mallocIsNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i64 %2) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.550", %"class.thrust::pointer.550"* %coerce, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.551", %"class.thrust::iterator_adaptor.551"* %coerce.dive, i32 0, i32 0 store i16* %call, i16** %coerce.dive1, align 8 %call2 = call i16* @_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.550"* %coerce) call void @_ZN6thrust10device_ptrIsEC2IsEEPT_(%"class.thrust::device_ptr.496"* %retval, i16* %call2) %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.end(i64 1, i8* %3) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive5, align 8 ret i16* %4 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6mallocIsNS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultES8_EERKNS_6detail21execution_policy_baseIS7_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.550", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %raw_ptr = alloca i16*, align 8 %ref.tmp = alloca %"class.thrust::pointer.550", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i16** %raw_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call i16* @_ZN6thrust6system6detail7generic6mallocIsNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.550", %"class.thrust::pointer.550"* %ref.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.551", %"class.thrust::iterator_adaptor.551"* %coerce.dive, i32 0, i32 0 store i16* %call2, i16** %coerce.dive3, align 8 %call4 = call i16* @_ZN6thrust16raw_pointer_castINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_(%"class.thrust::pointer.550"* dereferenceable(8) %ref.tmp) store i16* %call4, i16** %raw_ptr, align 8, !tbaa !1 %4 = load i16*, i16** %raw_ptr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IsEEPT_(%"class.thrust::pointer.550"* %retval, i16* %4) %5 = bitcast i16** %raw_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.550", %"class.thrust::pointer.550"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.551", %"class.thrust::iterator_adaptor.551"* %coerce.dive5, i32 0, i32 0 %6 = load i16*, i16** %coerce.dive6, align 8 ret i16* %6 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.550"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.550"*, align 8 store %"class.thrust::pointer.550"* %this, %"class.thrust::pointer.550"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.550"*, %"class.thrust::pointer.550"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.550"* %this1 to %"class.thrust::iterator_adaptor.551"* %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPssS5_NS_27random_access_traversal_tagENS_9referenceIsS7_S6_EElE4baseEv(%"class.thrust::iterator_adaptor.551"* %0) %1 = load i16*, i16** %call, align 8, !tbaa !1 ret i16* %1 } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrust16raw_pointer_castINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES6_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSA_(%"class.thrust::pointer.550"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::pointer.550"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.550", align 8 store %"class.thrust::pointer.550"* %ptr, %"class.thrust::pointer.550"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.550"*, %"class.thrust::pointer.550"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.550"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.550"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.550", %"class.thrust::pointer.550"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.551", %"class.thrust::iterator_adaptor.551"* %coerce.dive, i32 0, i32 0 %3 = load i16*, i16** %coerce.dive1, align 8 %call = call i16* @_ZN6thrust6detail14pointer_traitsINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_(i16* %3) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail7generic6mallocIsNS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERNS_16execution_policyIS9_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.550", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %void_ptr = alloca %"class.thrust::pointer.129", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 2, %3 %call = call i8* @_ZN6thrust6mallocINS_6system4cuda6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %mul) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.129", %"class.thrust::pointer.129"* %void_ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.130", %"class.thrust::iterator_adaptor.130"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive1, align 8 %call2 = call i8* @_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.129"* %void_ptr) %4 = bitcast i8* %call2 to i16* call void @_ZN6thrust7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IsEEPT_(%"class.thrust::pointer.550"* %retval, i16* %4) %5 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.550", %"class.thrust::pointer.550"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.551", %"class.thrust::iterator_adaptor.551"* %coerce.dive3, i32 0, i32 0 %6 = load i16*, i16** %coerce.dive4, align 8 ret i16* %6 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES5_EC2IsEEPT_(%"class.thrust::pointer.550"* %this, i16* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.550"*, align 8 %other.addr = alloca i16*, align 8 store %"class.thrust::pointer.550"* %this, %"class.thrust::pointer.550"** %this.addr, align 8, !tbaa !1 store i16* %other, i16** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.550"*, %"class.thrust::pointer.550"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.550"* %this1 to %"class.thrust::iterator_adaptor.551"* call void @_ZN6thrust16iterator_adaptorINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPssS5_NS_27random_access_traversal_tagENS_9referenceIsS7_S6_EElEC2ERKS8_(%"class.thrust::iterator_adaptor.551"* %0, i16** dereferenceable(8) %other.addr) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrust6detail14pointer_traitsINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES7_EEE3getES8_(i16* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::pointer.550", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.550", %"class.thrust::pointer.550"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.551", %"class.thrust::iterator_adaptor.551"* %coerce.dive, i32 0, i32 0 store i16* %ptr.coerce, i16** %coerce.dive1, align 8 %call = call i16* @_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.550"* %ptr) ret i16* %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPssS5_NS_27random_access_traversal_tagENS_9referenceIsS7_S6_EElEC2ERKS8_(%"class.thrust::iterator_adaptor.551"* %this, i16** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.551"*, align 8 %iter.addr = alloca i16**, align 8 store %"class.thrust::iterator_adaptor.551"* %this, %"class.thrust::iterator_adaptor.551"** %this.addr, align 8, !tbaa !1 store i16** %iter, i16*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.551"*, %"class.thrust::iterator_adaptor.551"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.551"* %this1 to %"class.thrust::iterator_facade.552"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.551", %"class.thrust::iterator_adaptor.551"* %this1, i32 0, i32 0 %1 = load i16**, i16*** %iter.addr, align 8 %2 = load i16*, i16** %1, align 8, !tbaa !1 store i16* %2, i16** %m_iterator, align 8, !tbaa !383 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_7pointerIsNS_6system4cuda6detail3tagENS_11use_defaultES6_EEPssS5_NS_27random_access_traversal_tagENS_9referenceIsS7_S6_EElE4baseEv(%"class.thrust::iterator_adaptor.551"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.551"*, align 8 store %"class.thrust::iterator_adaptor.551"* %this, %"class.thrust::iterator_adaptor.551"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.551"*, %"class.thrust::iterator_adaptor.551"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.551", %"class.thrust::iterator_adaptor.551"* %this1, i32 0, i32 0 ret i16** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIKsNS_6system4cuda6detail3tagENS_16device_referenceIS1_EENS_10device_ptrIS1_EEEC2IsEEPT_(%"class.thrust::pointer.547"* %this, i16* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.547"*, align 8 %other.addr = alloca i16*, align 8 %ref.tmp = alloca i16*, align 8 store %"class.thrust::pointer.547"* %this, %"class.thrust::pointer.547"** %this.addr, align 8, !tbaa !1 store i16* %other, i16** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.547"*, %"class.thrust::pointer.547"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.547"* %this1 to %"class.thrust::iterator_adaptor.548"* %1 = load i16*, i16** %other.addr, align 8, !tbaa !1 store i16* %1, i16** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKsEEPS2_sNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS2_EElEC2ERKS4_(%"class.thrust::iterator_adaptor.548"* %0, i16** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKsEEPS2_sNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS2_EElEC2ERKS4_(%"class.thrust::iterator_adaptor.548"* %this, i16** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.548"*, align 8 %iter.addr = alloca i16**, align 8 store %"class.thrust::iterator_adaptor.548"* %this, %"class.thrust::iterator_adaptor.548"** %this.addr, align 8, !tbaa !1 store i16** %iter, i16*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.548"*, %"class.thrust::iterator_adaptor.548"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.548"* %this1 to %"class.thrust::iterator_facade.549"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.548", %"class.thrust::iterator_adaptor.548"* %this1, i32 0, i32 0 %1 = load i16**, i16*** %iter.addr, align 8 %2 = load i16*, i16** %1, align 8, !tbaa !1 store i16* %2, i16** %m_iterator, align 8, !tbaa !385 ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIsEENS0_15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_RNS_16execution_policyIT_EERT0_T1_SL_SE_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a, i16* %first.coerce, i16* %last.coerce, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::device_ptr.496", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp8 = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp7 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp8 to i8* %7 = bitcast %"class.thrust::device_ptr.496"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive9, i32 0, i32 0 %8 = load i16*, i16** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp7, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive11, i32 0, i32 0 %9 = load i16*, i16** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp8, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive14, i32 0, i32 0 %10 = load i16*, i16** %coerce.dive15, align 8 %call = call i16* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIsEENS0_15normal_iteratorIPKsEENS_10device_ptrIsEEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESI_E4typeERNS_16execution_policyIT_EERSG_T1_SS_SI_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %1, i16* %8, i16* %9, i16* %10) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive17, i32 0, i32 0 store i16* %call, i16** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive20, i32 0, i32 0 %11 = load i16*, i16** %coerce.dive21, align 8 ret i16* %11 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorIsEENS0_15normal_iteratorIPKsEENS_10device_ptrIsEEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESI_E4typeERNS_16execution_policyIT_EERSG_T1_SS_SI_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a, i16* %first.coerce, i16* %last.coerce, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::device_ptr.496", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp8 = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorIsEEE3getERS3_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %1) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %ref.tmp to %"struct.thrust::execution_policy.120"* %3 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::device_ptr.496"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive9, i32 0, i32 0 %9 = load i16*, i16** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp7, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive11, i32 0, i32 0 %10 = load i16*, i16** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp8, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive14, i32 0, i32 0 %11 = load i16*, i16** %coerce.dive15, align 8 %call = call i16* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_RKNS_16execution_policyIT_EERKNSG_IT0_EET1_SP_SF_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i16* %9, i16* %10, i16* %11) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive17, i32 0, i32 0 store i16* %call, i16** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive20, i32 0, i32 0 %12 = load i16*, i16** %coerce.dive21, align 8 ret i16* %12 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_RKNS_16execution_policyIT_EERKNSG_IT0_EET1_SP_SF_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system2, i16* %first.coerce, i16* %last.coerce, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::device_ptr.496", align 8 %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp12 = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %system2, %"struct.thrust::execution_policy.120"** %system2.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call7 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call7 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %3 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2.addr, align 8 %4 = bitcast %"struct.thrust::execution_policy.120"* %3 to %"struct.thrust::detail::execution_policy_base.121"* %call8 = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %4) %call9 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call8) %5 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call9 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call10 = call { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } @_ZN6thrust6system4cuda6detail13select_systemINS0_3cpp6detail3tagENS2_3tagEEENS2_12cross_systemIT_T0_EERKNS5_16execution_policyIS9_EERNS2_16execution_policyISA_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %2, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %5) %6 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %ref.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %7 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %6, i32 0, i32 0 %8 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call10, 0 store %"struct.thrust::execution_policy.88"* %8, %"struct.thrust::execution_policy.88"** %7, align 8 %9 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %6, i32 0, i32 1 %10 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call10, 1 store %"struct.thrust::execution_policy.120"* %10, %"struct.thrust::execution_policy.120"** %9, align 8 %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.132"* %12 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp11 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp12 to i8* %17 = bitcast %"class.thrust::device_ptr.496"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive13, i32 0, i32 0 %18 = load i16*, i16** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp11, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive15, i32 0, i32 0 %19 = load i16*, i16** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp12, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive18, i32 0, i32 0 %20 = load i16*, i16** %coerce.dive19, align 8 %call20 = call i16* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET1_RKNSA_21execution_policy_baseIT_EET0_SN_SH_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %11, i16* %18, i16* %19, i16* %20) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive22, i32 0, i32 0 store i16* %call20, i16** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive25, i32 0, i32 0 %21 = load i16*, i16** %coerce.dive26, align 8 ret i16* %21 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorIsEEE3getERS3_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorIsEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS6_E4typeEE4typeERS6_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET1_RKNSA_21execution_policy_baseIT_EET0_SN_SH_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %exec, i16* %first.coerce, i16* %last.coerce, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::device_ptr.496", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.132"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp10 = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive6, align 8 store %"struct.thrust::detail::execution_policy_base.132"* %exec, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.132"*, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.132"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %0) %call7 = call dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %call7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp8 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp9 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp10 to i8* %8 = bitcast %"class.thrust::device_ptr.496"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp8, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive11, i32 0, i32 0 %14 = load i16*, i16** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp9, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive13, i32 0, i32 0 %15 = load i16*, i16** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp10, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive16, i32 0, i32 0 %16 = load i16*, i16** %coerce.dive17, align 8 %call18 = call i16* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, i16* %14, i16* %15, i16* %16) %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive20, i32 0, i32 0 store i16* %call18, i16** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive23, i32 0, i32 0 %17 = load i16*, i16** %coerce.dive24, align 8 ret i16* %17 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i16* %first.coerce, i16* %last.coerce, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %last = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::device_ptr.496", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.496", align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.543"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp9 to i8* %10 = bitcast %"class.thrust::device_ptr.496"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp7, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive10, i32 0, i32 0 %16 = load i16*, i16** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp8, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive12, i32 0, i32 0 %17 = load i16*, i16** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp9, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive15, i32 0, i32 0 %18 = load i16*, i16** %coerce.dive16, align 8 %call = call i16* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, i16* %16, i16* %17, i16* %18) %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive18, i32 0, i32 0 store i16* %call, i16** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive21, i32 0, i32 0 %19 = load i16*, i16** %coerce.dive22, align 8 ret i16* %19 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i16* %begin.coerce, i16* %end.coerce, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.543", align 8 %end = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::device_ptr.496", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.496", align 8 %agg.tmp10 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp11 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %begin.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %end.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.543"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.543"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp9 to i8* %10 = bitcast %"class.thrust::device_ptr.496"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp7, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive12, i32 0, i32 0 %16 = load i16*, i16** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive14, i32 0, i32 0 %17 = load i16*, i16** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive17, i32 0, i32 0 %18 = load i16*, i16** %coerce.dive18, align 8 %call = call i16* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, i16* %16, i16* %17, i16* %18) %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive20, i32 0, i32 0 store i16* %call, i16** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive23, i32 0, i32 0 %19 = load i16*, i16** %coerce.dive24, align 8 ret i16* %19 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i16* %begin.coerce, i16* %end.coerce, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.543", align 8 %end = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::device_ptr.496", align 8 %input_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %output_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp10 = alloca %"class.thrust::device_ptr.496", align 8 %agg.tmp11 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp12 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp13 = alloca %"struct.thrust::detail::integral_constant", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %begin.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %end.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp8 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.543"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp9 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.543"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::device_ptr.496"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive14, i32 0, i32 0 %16 = load i16*, i16** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive16, i32 0, i32 0 %17 = load i16*, i16** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp10, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive19, i32 0, i32 0 %18 = load i16*, i16** %coerce.dive20, align 8 %call = call i16* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, i16* %16, i16* %17, i16* %18) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive22, i32 0, i32 0 store i16* %call, i16** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive25, i32 0, i32 0 %19 = load i16*, i16** %coerce.dive26, align 8 ret i16* %19 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEENS_10device_ptrIsEEEET2_NS2_12cross_systemIT_T0_EET1_SK_SF_NS_27random_access_traversal_tagESL_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, i16* %begin.coerce, i16* %end.coerce, i16* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.543", align 8 %end = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::device_ptr.496", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %2 = alloca %"struct.thrust::detail::integral_constant", align 1 %n = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.543", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.496", align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %4 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %5, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %begin.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive2, i32 0, i32 0 store i16* %end.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive6, align 8 %6 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %6) #5 %7 = bitcast %"class.thrust::detail::normal_iterator.543"* %end to %"class.thrust::iterator_facade.545"* %8 = bitcast %"class.thrust::detail::normal_iterator.543"* %begin to %"class.thrust::iterator_facade.545"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_sS9_SA_SB_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSD_IT5_T6_T7_T8_T9_T10_EEE4typeERKSK_RKSR_(%"class.thrust::iterator_facade.545"* dereferenceable(1) %7, %"class.thrust::iterator_facade.545"* dereferenceable(1) %8) store i64 %call, i64* %n, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.543"* %agg.tmp to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.543"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = load i64, i64* %n, align 8, !tbaa !13 %12 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp9 to i8* %13 = bitcast %"class.thrust::device_ptr.496"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive10, i32 0, i32 0 %14 = load i16*, i16** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp9, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive13, i32 0, i32 0 %15 = load i16*, i16** %coerce.dive14, align 8 call void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEElNS_10device_ptrIsEEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, i16* %14, i64 %11, i16* %15) %16 = bitcast %"class.thrust::device_ptr.496"* %result to %"class.thrust::iterator_facade.499"* %17 = load i64, i64* %n, align 8, !tbaa !13 %call15 = call i16* @_ZN6thrustplINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEET_RKNS_15iterator_facadeISA_T0_T1_T2_T3_T4_EENSA_15difference_typeE(%"class.thrust::iterator_facade.499"* dereferenceable(1) %16, i64 %17) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive17, i32 0, i32 0 store i16* %call15, i16** %coerce.dive18, align 8 %18 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %18) #5 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive20, i32 0, i32 0 %19 = load i16*, i16** %coerce.dive21, align 8 ret i16* %19 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKsEElNS_10device_ptrIsEEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, i16* %first.coerce, i64 %n, i16* %result.coerce) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.543", align 8 %result = alloca %"class.thrust::device_ptr.496", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system"*, align 8 %n.addr = alloca i64, align 8 %dst = alloca i8*, align 8 %ref.tmp = alloca %"class.thrust::device_ptr.496", align 8 %coerce = alloca %"class.thrust::device_reference.553", align 8 %src = alloca i8*, align 8 %ref.tmp15 = alloca i16*, align 8 %kind = alloca i32, align 4 %s = alloca %struct.CUstream_st*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %result, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive3, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive4, align 8 store %"struct.thrust::system::cuda::detail::cross_system"* %systems, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %dst to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = bitcast %"class.thrust::device_ptr.496"* %result to %"class.thrust::iterator_facade.499"* %call = call i16* @_ZNK6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEdeEv(%"class.thrust::iterator_facade.499"* %1) %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference.553", %"class.thrust::device_reference.553"* %coerce, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference.554", %"class.thrust::reference.554"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive8, i32 0, i32 0 store i16* %call, i16** %coerce.dive9, align 8 %2 = bitcast %"class.thrust::device_reference.553"* %coerce to %"class.thrust::reference.554"* %call10 = call i16* @_ZNK6thrust9referenceIsNS_10device_ptrIsEENS_16device_referenceIsEEEadEv(%"class.thrust::reference.554"* %2) %coerce.dive11 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %ref.tmp, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive12, i32 0, i32 0 store i16* %call10, i16** %coerce.dive13, align 8 %call14 = call i16* @_ZN6thrust16raw_pointer_castINS_10device_ptrIsEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(%"class.thrust::device_ptr.496"* dereferenceable(8) %ref.tmp) %3 = bitcast i16* %call14 to i8* store i8* %3, i8** %dst, align 8, !tbaa !1 %4 = bitcast i8** %src to i8* call void @llvm.lifetime.start(i64 8, i8* %4) #5 %5 = bitcast %"class.thrust::detail::normal_iterator.543"* %first to %"class.thrust::iterator_facade.545"* %call16 = call dereferenceable(2) i16* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv(%"class.thrust::iterator_facade.545"* %5) store i16* %call16, i16** %ref.tmp15, align 8, !tbaa !1 %call17 = call i16* @_ZN6thrust16raw_pointer_castIPKsEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(i16** dereferenceable(8) %ref.tmp15) %6 = bitcast i16* %call17 to i8* store i8* %6, i8** %src, align 8, !tbaa !1 %7 = bitcast i32* %kind to i8* call void @llvm.lifetime.start(i64 4, i8* %7) #5 %8 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system1 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %8, i32 0, i32 0 %ref = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1, align 8, !tbaa !7 %9 = bitcast %"struct.thrust::execution_policy.88"* %ref to %"struct.thrust::detail::execution_policy_base.85"* %call18 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %9) %10 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call18 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %11 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system2 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %11, i32 0, i32 1 %ref19 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2, align 8, !tbaa !7 %12 = bitcast %"struct.thrust::execution_policy.120"* %ref19 to %"struct.thrust::detail::execution_policy_base.121"* %call20 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %12) %13 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call20 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call21 = call i32 @_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS0_3cpp6detail3tagENS2_3tagEEE14cudaMemcpyKindRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %10, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %13) store i32 %call21, i32* %kind, align 4, !tbaa !97 %14 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %14) #5 %15 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system122 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %15, i32 0, i32 0 %ref23 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system122, align 8, !tbaa !7 %16 = bitcast %"struct.thrust::execution_policy.88"* %ref23 to %"struct.thrust::detail::execution_policy_base.85"* %call24 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %16) %17 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call24 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %18 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system225 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %18, i32 0, i32 1 %ref26 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system225, align 8, !tbaa !7 %19 = bitcast %"struct.thrust::execution_policy.120"* %ref26 to %"struct.thrust::detail::execution_policy_base.121"* %call27 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %19) %20 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call27 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call28 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS0_3cpp6detail3tagENS2_3tagEEEP11CUstream_stRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %17, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %20) store %struct.CUstream_st* %call28, %struct.CUstream_st** %s, align 8, !tbaa !1 %21 = load i8*, i8** %dst, align 8, !tbaa !1 %22 = load i8*, i8** %src, align 8, !tbaa !1 %23 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 %23, 2 %24 = load i32, i32* %kind, align 4, !tbaa !97 %25 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail19trivial_copy_detail23checked_cudaMemcpyAsyncEPvPKvm14cudaMemcpyKindP11CUstream_st(i8* %21, i8* %22, i64 %mul, i32 %24, %struct.CUstream_st* %25) %26 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail11synchronizeEP11CUstream_stPKc(%struct.CUstream_st* %26, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.30, i32 0, i32 0)) %27 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %27) #5 %28 = bitcast i32* %kind to i8* call void @llvm.lifetime.end(i64 4, i8* %28) #5 %29 = bitcast i8** %src to i8* call void @llvm.lifetime.end(i64 8, i8* %29) #5 %30 = bitcast i8** %dst to i8* call void @llvm.lifetime.end(i64 8, i8* %30) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrustplINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEET_RKNS_15iterator_facadeISA_T0_T1_T2_T3_T4_EENSA_15difference_typeE(%"class.thrust::iterator_facade.499"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %i.addr = alloca %"class.thrust::iterator_facade.499"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::device_ptr.496", align 8 store %"class.thrust::iterator_facade.499"* %i, %"class.thrust::iterator_facade.499"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::device_ptr.496"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.499"*, %"class.thrust::iterator_facade.499"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.499"* %1 to %"class.thrust::device_ptr.496"* %3 = bitcast %"class.thrust::device_ptr.496"* %tmp to i8* %4 = bitcast %"class.thrust::device_ptr.496"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::device_ptr.496"* %tmp to %"class.thrust::iterator_facade.499"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZN6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEpLEl(%"class.thrust::iterator_facade.499"* %5, i64 %6) %7 = bitcast %"class.thrust::device_ptr.496"* %retval to i8* %8 = bitcast %"class.thrust::device_ptr.496"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.496"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 %10 = load i16*, i16** %coerce.dive2, align 8 ret i16* %10 } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrust16raw_pointer_castINS_10device_ptrIsEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(%"class.thrust::device_ptr.496"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::device_ptr.496"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 store %"class.thrust::device_ptr.496"* %ptr, %"class.thrust::device_ptr.496"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.496"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 %3 = load i16*, i16** %coerce.dive2, align 8 %call = call i16* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrIsEEE3getES3_(i16* %3) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZNK6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEdeEv(%"class.thrust::iterator_facade.499"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.553", align 8 %this.addr = alloca %"class.thrust::iterator_facade.499"*, align 8 store %"class.thrust::iterator_facade.499"* %this, %"class.thrust::iterator_facade.499"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.499"*, %"class.thrust::iterator_facade.499"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZNK6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.499"* %this1) %call2 = call i16* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIsEEEENT_9referenceERKS4_(%"class.thrust::device_ptr.496"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.553", %"class.thrust::device_reference.553"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.554", %"class.thrust::reference.554"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 store i16* %call2, i16** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_reference.553", %"class.thrust::device_reference.553"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::reference.554", %"class.thrust::reference.554"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive10, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive11, align 8 ret i16* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr i16* @_ZNK6thrust9referenceIsNS_10device_ptrIsEENS_16device_referenceIsEEEadEv(%"class.thrust::reference.554"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.496", align 8 %this.addr = alloca %"class.thrust::reference.554"*, align 8 store %"class.thrust::reference.554"* %this, %"class.thrust::reference.554"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.554"*, %"class.thrust::reference.554"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.554", %"class.thrust::reference.554"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr.496"* %retval to i8* %1 = bitcast %"class.thrust::device_ptr.496"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive2, i32 0, i32 0 %2 = load i16*, i16** %coerce.dive3, align 8 ret i16* %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrust16raw_pointer_castIPKsEENS_6detail14pointer_traitsIT_E11raw_pointerERKS5_(i16** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca i16**, align 8 store i16** %ptr, i16*** %ptr.addr, align 8, !tbaa !7 %0 = load i16**, i16*** %ptr.addr, align 8 %1 = load i16*, i16** %0, align 8, !tbaa !1 %call = call i16* @_ZN6thrust6detail14pointer_traitsIPKsE3getES3_(i16* %1) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) i16* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv(%"class.thrust::iterator_facade.545"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.545"*, align 8 store %"class.thrust::iterator_facade.545"* %this, %"class.thrust::iterator_facade.545"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.545"*, %"class.thrust::iterator_facade.545"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.543"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.545"* %this1) %call2 = call dereferenceable(2) i16* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKsEEEENT_9referenceERKS7_(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %call) ret i16* %call2 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrIsEEEENT_9referenceERKS4_(%"class.thrust::device_ptr.496"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.553", align 8 %f.addr = alloca %"class.thrust::device_ptr.496"*, align 8 store %"class.thrust::device_ptr.496"* %f, %"class.thrust::device_ptr.496"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.496"* %0 to %"class.thrust::pointer.497"* %call = call i16* @_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_16device_referenceIsEENS_10device_ptrIsEEE11dereferenceEv(%"class.thrust::pointer.497"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.553", %"class.thrust::device_reference.553"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::reference.554", %"class.thrust::reference.554"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive3, i32 0, i32 0 store i16* %call, i16** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference.553", %"class.thrust::device_reference.553"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference.554", %"class.thrust::reference.554"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive8, i32 0, i32 0 %2 = load i16*, i16** %coerce.dive9, align 8 ret i16* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZNK6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.499"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.499"*, align 8 store %"class.thrust::iterator_facade.499"* %this, %"class.thrust::iterator_facade.499"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.499"*, %"class.thrust::iterator_facade.499"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.499"* %this1 to %"class.thrust::device_ptr.496"* ret %"class.thrust::device_ptr.496"* %0 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZNK6thrust7pointerIsNS_6system4cuda6detail3tagENS_16device_referenceIsEENS_10device_ptrIsEEE11dereferenceEv(%"class.thrust::pointer.497"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.553", align 8 %this.addr = alloca %"class.thrust::pointer.497"*, align 8 store %"class.thrust::pointer.497"* %this, %"class.thrust::pointer.497"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.497"*, %"class.thrust::pointer.497"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.497"* %this1 to %"class.thrust::device_ptr.496"* call void @_ZN6thrust16device_referenceIsEC2ERKNS_10device_ptrIsEE(%"class.thrust::device_reference.553"* %retval, %"class.thrust::device_ptr.496"* dereferenceable(8) %0) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.553", %"class.thrust::device_reference.553"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::reference.554", %"class.thrust::reference.554"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 %1 = load i16*, i16** %coerce.dive5, align 8 ret i16* %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16device_referenceIsEC2ERKNS_10device_ptrIsEE(%"class.thrust::device_reference.553"* %this, %"class.thrust::device_ptr.496"* dereferenceable(8) %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_reference.553"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr.496"*, align 8 store %"class.thrust::device_reference.553"* %this, %"class.thrust::device_reference.553"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.496"* %ptr, %"class.thrust::device_ptr.496"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_reference.553"*, %"class.thrust::device_reference.553"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_reference.553"* %this1 to %"class.thrust::reference.554"* %1 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %ptr.addr, align 8 call void @_ZN6thrust9referenceIsNS_10device_ptrIsEENS_16device_referenceIsEEEC2ERKS2_(%"class.thrust::reference.554"* %0, %"class.thrust::device_ptr.496"* dereferenceable(8) %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust9referenceIsNS_10device_ptrIsEENS_16device_referenceIsEEEC2ERKS2_(%"class.thrust::reference.554"* %this, %"class.thrust::device_ptr.496"* dereferenceable(8) %ptr) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.554"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr.496"*, align 8 store %"class.thrust::reference.554"* %this, %"class.thrust::reference.554"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.496"* %ptr, %"class.thrust::device_ptr.496"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.554"*, %"class.thrust::reference.554"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.554", %"class.thrust::reference.554"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.496"* %m_ptr to i8* %2 = bitcast %"class.thrust::device_ptr.496"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i16* @_ZN6thrust6detail14pointer_traitsIPKsE3getES3_(i16* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca i16*, align 8 store i16* %ptr, i16** %ptr.addr, align 8, !tbaa !1 %0 = load i16*, i16** %ptr.addr, align 8, !tbaa !1 ret i16* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(2) i16* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKsEEEENT_9referenceERKS7_(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 store %"class.thrust::detail::normal_iterator.543"* %f, %"class.thrust::detail::normal_iterator.543"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.543"* %0 to %"class.thrust::iterator_adaptor.544"* %call = call dereferenceable(2) i16* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv(%"class.thrust::iterator_adaptor.544"* %1) ret i16* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.543"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.545"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.545"*, align 8 store %"class.thrust::iterator_facade.545"* %this, %"class.thrust::iterator_facade.545"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.545"*, %"class.thrust::iterator_facade.545"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.545"* %this1 to %"class.thrust::detail::normal_iterator.543"* ret %"class.thrust::detail::normal_iterator.543"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(2) i16* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E11dereferenceEv(%"class.thrust::iterator_adaptor.544"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.544"*, align 8 store %"class.thrust::iterator_adaptor.544"* %this, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.544"*, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %this1, i32 0, i32 0 %0 = load i16*, i16** %m_iterator, align 8, !tbaa !381 ret i16* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZN6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEpLEl(%"class.thrust::iterator_facade.499"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.499"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.499"* %this, %"class.thrust::iterator_facade.499"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.499"*, %"class.thrust::iterator_facade.499"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZN6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.499"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIsEEEEvRT_NS4_15difference_typeE(%"class.thrust::device_ptr.496"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZN6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.499"* %this1) ret %"class.thrust::device_ptr.496"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrIsEEEEvRT_NS4_15difference_typeE(%"class.thrust::device_ptr.496"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::device_ptr.496"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::device_ptr.496"* %f, %"class.thrust::device_ptr.496"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.496"* %0 to %"class.thrust::iterator_adaptor.498"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7advanceEl(%"class.thrust::iterator_adaptor.498"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZN6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.499"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.499"*, align 8 store %"class.thrust::iterator_facade.499"* %this, %"class.thrust::iterator_facade.499"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.499"*, %"class.thrust::iterator_facade.499"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.499"* %this1 to %"class.thrust::device_ptr.496"* ret %"class.thrust::device_ptr.496"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7advanceEl(%"class.thrust::iterator_adaptor.498"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.498"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.498"* %this, %"class.thrust::iterator_adaptor.498"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.498"*, %"class.thrust::iterator_adaptor.498"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %this1, i32 0, i32 0 %1 = load i16*, i16** %m_iterator, align 8, !tbaa !379 %add.ptr = getelementptr inbounds i16, i16* %1, i64 %0 store i16* %add.ptr, i16** %m_iterator, align 8, !tbaa !379 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorIsEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS6_E4typeEE4typeERS6_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a) #1 comdat { entry: %retval = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.493"* %i, %"class.thrust::detail::normal_iterator.493"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.493"* %i, %"class.thrust::detail::normal_iterator.493"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.493"* %1 to %"class.thrust::iterator_facade.495"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEpLEl(%"class.thrust::iterator_facade.495"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEpLEl(%"class.thrust::iterator_facade.495"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.495"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.495"* %this, %"class.thrust::iterator_facade.495"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.495"*, %"class.thrust::iterator_facade.495"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.495"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.495"* %this1) ret %"class.thrust::detail::normal_iterator.493"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.493"* %f, %"class.thrust::detail::normal_iterator.493"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.493"* %0 to %"class.thrust::iterator_adaptor.494"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.494"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.495"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.495"*, align 8 store %"class.thrust::iterator_facade.495"* %this, %"class.thrust::iterator_facade.495"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.495"*, %"class.thrust::iterator_facade.495"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.495"* %this1 to %"class.thrust::detail::normal_iterator.493"* ret %"class.thrust::detail::normal_iterator.493"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.494"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.494"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.494"* %this, %"class.thrust::iterator_adaptor.494"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.494"*, %"class.thrust::iterator_adaptor.494"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr.496"* %m_iterator to %"class.thrust::iterator_facade.499"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZN6thrust15iterator_facadeINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEpLEl(%"class.thrust::iterator_facade.499"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorIsEENS_10device_ptrIsEElEEvRT_T0_T1_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %a, i16* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::device_ptr.496", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.496", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 store i16* %p.coerce, i16** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.491"* %a, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.491"*, %"class.thrust::device_malloc_allocator.491"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.496"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.496"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive4, i32 0, i32 0 %4 = load i16*, i16** %coerce.dive5, align 8 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorIsEENS_10device_ptrIsEElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS8_S9_T1_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1) %0, i16* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElS5_sS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.495"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.495"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.495"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.495"*, align 8 store %"class.thrust::iterator_facade.495"* %lhs, %"class.thrust::iterator_facade.495"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.495"* %rhs, %"class.thrust::iterator_facade.495"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.495"*, %"class.thrust::iterator_facade.495"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.495"* %0 to %"class.thrust::detail::normal_iterator.493"* %2 = load %"class.thrust::iterator_facade.495"*, %"class.thrust::iterator_facade.495"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.495"* %2 to %"class.thrust::detail::normal_iterator.493"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorIsEENS_10device_ptrIsEElEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS8_S9_T1_(%"class.thrust::device_malloc_allocator.491"* dereferenceable(1), i16* %.coerce, i64) #1 comdat { entry: %2 = alloca %"class.thrust::device_ptr.496", align 8 %.addr = alloca %"class.thrust::device_malloc_allocator.491"*, align 8 %.addr3 = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %2, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive1, i32 0, i32 0 store i16* %.coerce, i16** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.491"* %0, %"class.thrust::device_malloc_allocator.491"** %.addr, align 8, !tbaa !7 store i64 %1, i64* %.addr3, align 8, !tbaa !13 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_EENS2_20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.493"* %f1, %"class.thrust::detail::normal_iterator.493"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.493"* %f2, %"class.thrust::detail::normal_iterator.493"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_EENT_15difference_typeERKS7_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 store %"class.thrust::detail::normal_iterator.493"* %f1, %"class.thrust::detail::normal_iterator.493"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.493"* %f2, %"class.thrust::detail::normal_iterator.493"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.493"* %1 to %"class.thrust::iterator_adaptor.494"* %3 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.493"* %3 to %"class.thrust::iterator_adaptor.494"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.494"* %2, %"class.thrust::iterator_adaptor.494"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E11distance_toIS5_S4_S6_S6_S6_S6_S6_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.494"* %this, %"class.thrust::iterator_adaptor.494"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.494"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.494"*, align 8 store %"class.thrust::iterator_adaptor.494"* %this, %"class.thrust::iterator_adaptor.494"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.494"* %y, %"class.thrust::iterator_adaptor.494"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.494"*, %"class.thrust::iterator_adaptor.494"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.494"*, %"class.thrust::iterator_adaptor.494"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.496"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrIsEEEES4_NS_11use_defaultES6_S6_S6_S6_E4baseEv(%"class.thrust::iterator_adaptor.494"* %0) %1 = bitcast %"class.thrust::device_ptr.496"* %call to %"class.thrust::iterator_facade.499"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %this1, i32 0, i32 0 %2 = bitcast %"class.thrust::device_ptr.496"* %m_iterator to %"class.thrust::iterator_facade.499"* %call2 = call i64 @_ZN6thrustmiINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElS2_sS6_S7_S9_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade.499"* dereferenceable(1) %1, %"class.thrust::iterator_facade.499"* dereferenceable(1) %2) ret i64 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_10device_ptrIsEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElS2_sS6_S7_S9_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade.499"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.499"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.499"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.499"*, align 8 store %"class.thrust::iterator_facade.499"* %lhs, %"class.thrust::iterator_facade.499"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.499"* %rhs, %"class.thrust::iterator_facade.499"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.499"*, %"class.thrust::iterator_facade.499"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.499"* %0 to %"class.thrust::device_ptr.496"* %2 = load %"class.thrust::iterator_facade.499"*, %"class.thrust::iterator_facade.499"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.499"* %2 to %"class.thrust::device_ptr.496"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIsEES3_EENS_6detail20distance_from_resultIT_T0_E4typeERKS6_RKS7_(%"class.thrust::device_ptr.496"* dereferenceable(8) %1, %"class.thrust::device_ptr.496"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIsEES3_EENS_6detail20distance_from_resultIT_T0_E4typeERKS6_RKS7_(%"class.thrust::device_ptr.496"* dereferenceable(8) %f1, %"class.thrust::device_ptr.496"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::device_ptr.496"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr.496"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::device_ptr.496"* %f1, %"class.thrust::device_ptr.496"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.496"* %f2, %"class.thrust::device_ptr.496"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %f1.addr, align 8 %1 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIsEES3_EENT_15difference_typeERKS4_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr.496"* dereferenceable(8) %0, %"class.thrust::device_ptr.496"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrIsEES3_EENT_15difference_typeERKS4_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr.496"* dereferenceable(8) %f1, %"class.thrust::device_ptr.496"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::device_ptr.496"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr.496"*, align 8 store %"class.thrust::device_ptr.496"* %f1, %"class.thrust::device_ptr.496"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.496"* %f2, %"class.thrust::device_ptr.496"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %f1.addr, align 8 %2 = bitcast %"class.thrust::device_ptr.496"* %1 to %"class.thrust::iterator_adaptor.498"* %3 = load %"class.thrust::device_ptr.496"*, %"class.thrust::device_ptr.496"** %f2.addr, align 8 %4 = bitcast %"class.thrust::device_ptr.496"* %3 to %"class.thrust::iterator_adaptor.498"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE11distance_toIS2_S3_sS7_S8_SA_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.498"* %2, %"class.thrust::iterator_adaptor.498"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE11distance_toIS2_S3_sS7_S8_SA_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.498"* %this, %"class.thrust::iterator_adaptor.498"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.498"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.498"*, align 8 store %"class.thrust::iterator_adaptor.498"* %this, %"class.thrust::iterator_adaptor.498"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.498"* %y, %"class.thrust::iterator_adaptor.498"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.498"*, %"class.thrust::iterator_adaptor.498"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.498"*, %"class.thrust::iterator_adaptor.498"** %y.addr, align 8 %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_10device_ptrIsEEPssNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE4baseEv(%"class.thrust::iterator_adaptor.498"* %0) %1 = load i16*, i16** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %this1, i32 0, i32 0 %2 = load i16*, i16** %m_iterator, align 8, !tbaa !379 %sub.ptr.lhs.cast = ptrtoint i16* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i16* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 ret i64 %sub.ptr.div } ; Function Attrs: uwtable define linkonce_odr i16* @_ZNK6thrust6detail18contiguous_storageIsSaIsEE5beginEv(%"class.thrust::detail::contiguous_storage.471"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.543", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPKsEC2IPsEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE(%"class.thrust::detail::normal_iterator.543"* %retval, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %m_begin, i8* null) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.543", %"class.thrust::detail::normal_iterator.543"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %coerce.dive, i32 0, i32 0 %0 = load i16*, i16** %coerce.dive2, align 8 ret i16* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPKsEC2IPsEERKNS1_IT_EEPNS0_21enable_if_convertibleIS7_S3_vE4typeE(%"class.thrust::detail::normal_iterator.543"* %this, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 %other.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca i16*, align 8 store %"class.thrust::detail::normal_iterator.543"* %this, %"class.thrust::detail::normal_iterator.543"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.475"* %other, %"class.thrust::detail::normal_iterator.475"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %this.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.543"* %this1 to %"class.thrust::iterator_adaptor.544"* %2 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %other.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.475"* %2 to %"class.thrust::iterator_adaptor.476"* %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.476"* %3) %4 = load i16*, i16** %call, align 8, !tbaa !1 store i16* %4, i16** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.544"* %1, i16** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_EC2ERKS4_(%"class.thrust::iterator_adaptor.544"* %this, i16** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.544"*, align 8 %iter.addr = alloca i16**, align 8 store %"class.thrust::iterator_adaptor.544"* %this, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8, !tbaa !1 store i16** %iter, i16*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.544"*, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.544"* %this1 to %"class.thrust::iterator_facade.545"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %this1, i32 0, i32 0 %1 = load i16**, i16*** %iter.addr, align 8 %2 = load i16*, i16** %1, align 8, !tbaa !1 store i16* %2, i16** %m_iterator, align 8, !tbaa !381 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKsEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.543"* %i, %"class.thrust::detail::normal_iterator.543"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKsEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKsEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.543"* %i, %"class.thrust::detail::normal_iterator.543"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKsEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKsEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.543"* %i, %"class.thrust::detail::normal_iterator.543"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.543"* %1 to %"class.thrust::iterator_facade.545"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.543"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl(%"class.thrust::iterator_facade.545"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.543"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEpLEl(%"class.thrust::iterator_facade.545"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.545"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.545"* %this, %"class.thrust::iterator_facade.545"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.545"*, %"class.thrust::iterator_facade.545"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.543"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.545"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKsEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.543"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.545"* %this1) ret %"class.thrust::detail::normal_iterator.543"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKsEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.543"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.543"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.543"* %f, %"class.thrust::detail::normal_iterator.543"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.543"*, %"class.thrust::detail::normal_iterator.543"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.543"* %0 to %"class.thrust::iterator_adaptor.544"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.544"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.543"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lE7derivedEv(%"class.thrust::iterator_facade.545"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.545"*, align 8 store %"class.thrust::iterator_facade.545"* %this, %"class.thrust::iterator_facade.545"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.545"*, %"class.thrust::iterator_facade.545"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.545"* %this1 to %"class.thrust::detail::normal_iterator.543"* ret %"class.thrust::detail::normal_iterator.543"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKsEES4_NS_11use_defaultES6_S6_S6_S6_E7advanceEl(%"class.thrust::iterator_adaptor.544"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.544"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.544"* %this, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.544"*, %"class.thrust::iterator_adaptor.544"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.544", %"class.thrust::iterator_adaptor.544"* %this1, i32 0, i32 0 %1 = load i16*, i16** %m_iterator, align 8, !tbaa !381 %add.ptr = getelementptr inbounds i16, i16* %1, i64 %0 store i16* %add.ptr, i16** %m_iterator, align 8, !tbaa !381 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEEC2IS3_SaIS3_EEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.501"* %this, %"class.thrust::detail::vector_base.479"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.501"*, align 8 %v.addr = alloca %"class.thrust::detail::vector_base.479"*, align 8 %ref.tmp = alloca %"class.thrust::device_malloc_allocator.503", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.555", align 8 store %"class.thrust::detail::vector_base.501"* %this, %"class.thrust::detail::vector_base.501"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::vector_base.479"* %v, %"class.thrust::detail::vector_base.479"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::vector_base.501"*, %"class.thrust::detail::vector_base.501"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEEC2Ev(%"class.thrust::device_malloc_allocator.503"* %ref.tmp) invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEEC2ERKS5_(%"class.thrust::detail::contiguous_storage.502"* %m_storage, %"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEED2Ev(%"class.thrust::device_malloc_allocator.503"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !387 %0 = load %"class.thrust::detail::vector_base.479"*, %"class.thrust::detail::vector_base.479"** %v.addr, align 8 %call = invoke %"struct.thrust::pair.487"* @_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.479"* %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive4, align 8 %1 = load %"class.thrust::detail::vector_base.479"*, %"class.thrust::detail::vector_base.479"** %v.addr, align 8 %call7 = invoke %"struct.thrust::pair.487"* @_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE3endEv(%"class.thrust::detail::vector_base.479"* %1) to label %invoke.cont6 unwind label %lpad2 invoke.cont6: ; preds = %invoke.cont3 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair.487"* %call7, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive10, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp5, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive12, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive13, align 8 invoke void @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_(%"class.thrust::detail::vector_base.501"* %this1, %"struct.thrust::pair.487"* %2, %"struct.thrust::pair.487"* %3) to label %invoke.cont14 unwind label %lpad2 invoke.cont14: ; preds = %invoke.cont6 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEED2Ev(%"class.thrust::device_malloc_allocator.503"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont6, %invoke.cont3, %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::contiguous_storage.502"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val15 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val15 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEEC2Ev(%"class.thrust::device_malloc_allocator.503"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 store %"class.thrust::device_malloc_allocator.503"* %this, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEEC2ERKS5_(%"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 %alloc.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_malloc_allocator.503"* %alloc, %"class.thrust::device_malloc_allocator.503"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %alloc.addr, align 8 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEEC2ERKS3_(%"class.thrust::device_malloc_allocator.503"* %m_allocator, %"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %0) %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 1 invoke void @_ZN6thrust10device_ptrINS_4pairIssEEEC2IS2_EEPT_(%"class.thrust::device_ptr.508"* %agg.tmp, %"struct.thrust::pair.487"* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive2, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 invoke void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.505"* %m_begin, %"struct.thrust::pair.487"* %1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !392 ret void lpad: ; preds = %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEED2Ev(%"class.thrust::device_malloc_allocator.503"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEED2Ev(%"class.thrust::device_malloc_allocator.503"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 store %"class.thrust::device_malloc_allocator.503"* %this, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_(%"class.thrust::detail::vector_base.501"* %this, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.501"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp6 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.501"* %this, %"class.thrust::detail::vector_base.501"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.501"*, %"class.thrust::detail::vector_base.501"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive7, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp5, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive9, i32 0, i32 0 %5 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive10, align 8 call void @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.501"* %this4, %"struct.thrust::pair.487"* %4, %"struct.thrust::pair.487"* %5) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.479"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.555", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.479"*, align 8 store %"class.thrust::detail::vector_base.479"* %this, %"class.thrust::detail::vector_base.479"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.479"*, %"class.thrust::detail::vector_base.479"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.479", %"class.thrust::detail::vector_base.479"* %this1, i32 0, i32 0 %call = call %"struct.thrust::pair.487"* @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::contiguous_storage.480"* %m_storage) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive3, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE3endEv(%"class.thrust::detail::vector_base.479"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.555", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.479"*, align 8 store %"class.thrust::detail::vector_base.479"* %this, %"class.thrust::detail::vector_base.479"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.479"*, %"class.thrust::detail::vector_base.479"** %this.addr, align 8 %call = call %"struct.thrust::pair.487"* @_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::vector_base.479"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive2, align 8 %call3 = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIssEESaIS3_EE4sizeEv(%"class.thrust::detail::vector_base.479"* %this1) call void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %retval, i64 %call3) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive4, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive5, align 8 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEED2Ev(%"class.thrust::detail::contiguous_storage.502"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10deallocateEv(%"class.thrust::detail::contiguous_storage.502"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEED2Ev(%"class.thrust::device_malloc_allocator.503"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 0 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEED2Ev(%"class.thrust::device_malloc_allocator.503"* %m_allocator2) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEEC2ERKS3_(%"class.thrust::device_malloc_allocator.503"* %this, %"class.thrust::device_malloc_allocator.503"* dereferenceable(1)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 store %"class.thrust::device_malloc_allocator.503"* %this, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_malloc_allocator.503"* %0, %"class.thrust::device_malloc_allocator.503"** %.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrINS_4pairIssEEEC2IS2_EEPT_(%"class.thrust::device_ptr.508"* %this, %"struct.thrust::pair.487"* %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %ptr.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"class.thrust::device_ptr.508"* %this, %"class.thrust::device_ptr.508"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %ptr, %"struct.thrust::pair.487"** %ptr.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.508"* %this1 to %"class.thrust::pointer.509"* %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %ptr.addr, align 8, !tbaa !1 call void @_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEEC2IS2_EEPT_(%"class.thrust::pointer.509"* %0, %"struct.thrust::pair.487"* %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.505"* %this, %"struct.thrust::pair.487"* %p.coerce) unnamed_addr #0 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.508", align 8 %this.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"class.thrust::detail::normal_iterator.505"* %this, %"class.thrust::detail::normal_iterator.505"** %this.addr, align 8, !tbaa !1 %this3 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.505"* %this3 to %"class.thrust::iterator_adaptor.506"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_(%"class.thrust::iterator_adaptor.506"* %0, %"class.thrust::device_ptr.508"* dereferenceable(8) %p) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEEC2IS2_EEPT_(%"class.thrust::pointer.509"* %this, %"struct.thrust::pair.487"* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.509"*, align 8 %other.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"class.thrust::pointer.509"* %this, %"class.thrust::pointer.509"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %other, %"struct.thrust::pair.487"** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.509"*, %"class.thrust::pointer.509"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.509"* %this1 to %"class.thrust::iterator_adaptor.510"* call void @_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEC2ERKS5_(%"class.thrust::iterator_adaptor.510"* %0, %"struct.thrust::pair.487"** dereferenceable(8) %other.addr) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEC2ERKS5_(%"class.thrust::iterator_adaptor.510"* %this, %"struct.thrust::pair.487"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.510"*, align 8 %iter.addr = alloca %"struct.thrust::pair.487"**, align 8 store %"class.thrust::iterator_adaptor.510"* %this, %"class.thrust::iterator_adaptor.510"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"** %iter, %"struct.thrust::pair.487"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.510"*, %"class.thrust::iterator_adaptor.510"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.510"* %this1 to %"class.thrust::iterator_facade.511"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"**, %"struct.thrust::pair.487"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %1, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %2, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !393 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_(%"class.thrust::iterator_adaptor.506"* %this, %"class.thrust::device_ptr.508"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.506"*, align 8 %iter.addr = alloca %"class.thrust::device_ptr.508"*, align 8 store %"class.thrust::iterator_adaptor.506"* %this, %"class.thrust::iterator_adaptor.506"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.508"* %iter, %"class.thrust::device_ptr.508"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.506"*, %"class.thrust::iterator_adaptor.506"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.506"* %this1 to %"class.thrust::iterator_facade.507"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %this1, i32 0, i32 0 %1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %iter.addr, align 8 %2 = bitcast %"class.thrust::device_ptr.508"* %m_iterator to i8* %3 = bitcast %"class.thrust::device_ptr.508"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10range_initINS0_15normal_iteratorIPKS3_EEEEvT_SC_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.501"* %this, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %this.addr = alloca %"class.thrust::detail::vector_base.501"*, align 8 %new_size = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.501"* %this, %"class.thrust::detail::vector_base.501"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.501"*, %"class.thrust::detail::vector_base.501"** %this.addr, align 8 %1 = bitcast i64* %new_size to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp5 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive6, i32 0, i32 0 %6 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive8, i32 0, i32 0 %7 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENS_15iterator_traitsIT_E15difference_typeES9_S9_(%"struct.thrust::pair.487"* %6, %"struct.thrust::pair.487"* %7) store i64 %call, i64* %new_size, align 8, !tbaa !13 %8 = load i64, i64* %new_size, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp11 to i8* %12 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this4, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp10, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive12, i32 0, i32 0 %13 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp11, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive14, i32 0, i32 0 %14 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive15, align 8 call void @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE17allocate_and_copyINS0_15normal_iteratorIPKS3_EEEEvmT_SC_RNS0_18contiguous_storageIS3_S5_EE(%"class.thrust::detail::vector_base.501"* %this4, i64 %8, %"struct.thrust::pair.487"* %13, %"struct.thrust::pair.487"* %14, %"class.thrust::detail::contiguous_storage.502"* dereferenceable(24) %m_storage) %15 = load i64, i64* %new_size, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this4, i32 0, i32 1 store i64 %15, i64* %m_size, align 8, !tbaa !387 %16 = bitcast i64* %new_size to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENS_15iterator_traitsIT_E15difference_typeES9_S9_(%"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive5, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive7, i32 0, i32 0 %5 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive8, align 8 %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENS_15iterator_traitsIT_E15difference_typeESC_SC_(%"struct.thrust::pair.487"* %4, %"struct.thrust::pair.487"* %5) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE17allocate_and_copyINS0_15normal_iteratorIPKS3_EEEEvmT_SC_RNS0_18contiguous_storageIS3_S5_EE(%"class.thrust::detail::vector_base.501"* %this, i64 %requested_size, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce, %"class.thrust::detail::contiguous_storage.502"* dereferenceable(24) %new_storage) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.501"*, align 8 %requested_size.addr = alloca i64, align 8 %new_storage.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 %allocated_size = alloca i64, align 8 %ref.tmp = alloca i64, align 8 %ref.tmp6 = alloca i64, align 8 %ref.tmp11 = alloca %"class.std::basic_string", align 8 %ref.tmp12 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp17 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp18 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %coerce = alloca %"class.thrust::detail::normal_iterator.505", align 8 %new_storage_end = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp54 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp62 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.501"* %this, %"class.thrust::detail::vector_base.501"** %this.addr, align 8, !tbaa !1 store i64 %requested_size, i64* %requested_size.addr, align 8, !tbaa !13 store %"class.thrust::detail::contiguous_storage.502"* %new_storage, %"class.thrust::detail::contiguous_storage.502"** %new_storage.addr, align 8, !tbaa !7 %this4 = load %"class.thrust::detail::vector_base.501"*, %"class.thrust::detail::vector_base.501"** %this.addr, align 8 %0 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %cmp = icmp eq i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %new_storage.addr, align 8 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10deallocateEv(%"class.thrust::detail::contiguous_storage.502"* %1) br label %return if.end: ; preds = %entry %2 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 %call = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8capacityEv(%"class.thrust::detail::vector_base.501"* %this4) %mul = mul i64 2, %call store i64 %mul, i64* %ref.tmp, align 8, !tbaa !13 %call5 = call i64 @_ZN6thrust3maxImEET_RKS1_S3_(i64* dereferenceable(8) %requested_size.addr, i64* dereferenceable(8) %ref.tmp) store i64 %call5, i64* %allocated_size, align 8, !tbaa !13 %call7 = call i64 @_ZNK6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv(%"class.thrust::detail::vector_base.501"* %this4) store i64 %call7, i64* %ref.tmp6, align 8, !tbaa !13 %call8 = call i64 @_ZN6thrust3minImEET_RKS1_S3_(i64* dereferenceable(8) %allocated_size, i64* dereferenceable(8) %ref.tmp6) store i64 %call8, i64* %allocated_size, align 8, !tbaa !13 %3 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %4 = load i64, i64* %allocated_size, align 8, !tbaa !13 %cmp9 = icmp ugt i64 %3, %4 br i1 %cmp9, label %if.then10, label %if.end16 if.then10: ; preds = %if.end %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %5 = bitcast i8* %exception to %"class.std::length_error"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp12) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp11, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.23, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp12) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then10 invoke void @_ZNSt12length_errorC1ERKSs(%"class.std::length_error"* %5, %"class.std::basic_string"* dereferenceable(8) %ref.tmp11) to label %invoke.cont14 unwind label %lpad13 invoke.cont14: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt12length_error to i8*), i8* bitcast (void (%"class.std::length_error"*)* @_ZNSt12length_errorD1Ev to i8*)) #15 to label %unreachable unwind label %lpad13 lpad: ; preds = %if.then10 %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 br label %ehcleanup lpad13: ; preds = %invoke.cont14, %invoke.cont %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp11) #5 br label %ehcleanup ehcleanup: ; preds = %lpad13, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp12) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup br label %ehcleanup78 if.end16: ; preds = %if.end %12 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %new_storage.addr, align 8 %13 = load i64, i64* %allocated_size, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8allocateEm(%"class.thrust::detail::contiguous_storage.502"* %12, i64 %13) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this4, i32 0, i32 0 %14 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp17 to i8* %17 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %18 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %new_storage.addr, align 8 %call21 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.502"* %18) to label %invoke.cont20 unwind label %lpad19 invoke.cont20: ; preds = %if.end16 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp18, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive25, i32 0, i32 0 store %"struct.thrust::pair.487"* %call21, %"struct.thrust::pair.487"** %coerce.dive26, align 8 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive27, i32 0, i32 0 %19 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp17, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive29, i32 0, i32 0 %20 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive30, align 8 %coerce.dive31 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp18, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive31, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive32, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive34, i32 0, i32 0 %21 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive35, align 8 %call37 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE18uninitialized_copyINS0_15normal_iteratorIPKS3_EEEENS8_INS_10device_ptrIS3_EEEET_SF_SE_(%"class.thrust::detail::contiguous_storage.502"* %m_storage, %"struct.thrust::pair.487"* %19, %"struct.thrust::pair.487"* %20, %"struct.thrust::pair.487"* %21) to label %invoke.cont36 unwind label %lpad19 invoke.cont36: ; preds = %invoke.cont20 %coerce.dive38 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %coerce, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive41, i32 0, i32 0 store %"struct.thrust::pair.487"* %call37, %"struct.thrust::pair.487"** %coerce.dive42, align 8 br label %try.cont lpad19: ; preds = %invoke.cont20, %if.end16 %22 = landingpad { i8*, i32 } catch i8* null %23 = extractvalue { i8*, i32 } %22, 0 store i8* %23, i8** %exn.slot, align 8 %24 = extractvalue { i8*, i32 } %22, 1 store i32 %24, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad19 %exn = load i8*, i8** %exn.slot, align 8 %25 = call i8* @__cxa_begin_catch(i8* %exn) #5 %26 = bitcast %"class.thrust::detail::normal_iterator.505"* %new_storage_end to i8* call void @llvm.lifetime.start(i64 8, i8* %26) #5 %27 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %new_storage.addr, align 8 %call45 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.502"* %27) to label %invoke.cont44 unwind label %lpad43 invoke.cont44: ; preds = %catch %coerce.dive46 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %new_storage_end, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive49, i32 0, i32 0 store %"struct.thrust::pair.487"* %call45, %"struct.thrust::pair.487"** %coerce.dive50, align 8 %28 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 invoke void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %new_storage_end, i64 %28) to label %invoke.cont52 unwind label %lpad51 invoke.cont52: ; preds = %invoke.cont44 %m_storage53 = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this4, i32 0, i32 0 %29 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %new_storage.addr, align 8 %call56 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.502"* %29) to label %invoke.cont55 unwind label %lpad51 invoke.cont55: ; preds = %invoke.cont52 %coerce.dive57 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp54, i32 0, i32 0 %coerce.dive58 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive57, i32 0, i32 0 %coerce.dive59 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive58, i32 0, i32 0 %coerce.dive60 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive59, i32 0, i32 0 %coerce.dive61 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive60, i32 0, i32 0 store %"struct.thrust::pair.487"* %call56, %"struct.thrust::pair.487"** %coerce.dive61, align 8 %30 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp62 to i8* %31 = bitcast %"class.thrust::detail::normal_iterator.505"* %new_storage_end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %31, i64 8, i32 8, i1 false) %coerce.dive63 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp54, i32 0, i32 0 %coerce.dive64 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive63, i32 0, i32 0 %coerce.dive65 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive64, i32 0, i32 0 %coerce.dive66 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive65, i32 0, i32 0 %coerce.dive67 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive66, i32 0, i32 0 %32 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive67, align 8 %coerce.dive68 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp62, i32 0, i32 0 %coerce.dive69 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive68, i32 0, i32 0 %coerce.dive70 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive69, i32 0, i32 0 %coerce.dive71 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive70, i32 0, i32 0 %coerce.dive72 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive71, i32 0, i32 0 %33 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive72, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE7destroyENS0_15normal_iteratorINS_10device_ptrIS3_EEEESA_(%"class.thrust::detail::contiguous_storage.502"* %m_storage53, %"struct.thrust::pair.487"* %32, %"struct.thrust::pair.487"* %33) to label %invoke.cont73 unwind label %lpad51 invoke.cont73: ; preds = %invoke.cont55 %34 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %new_storage.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10deallocateEv(%"class.thrust::detail::contiguous_storage.502"* %34) to label %invoke.cont74 unwind label %lpad51 invoke.cont74: ; preds = %invoke.cont73 invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad51 lpad43: ; preds = %catch %35 = landingpad { i8*, i32 } cleanup %36 = extractvalue { i8*, i32 } %35, 0 store i8* %36, i8** %exn.slot, align 8 %37 = extractvalue { i8*, i32 } %35, 1 store i32 %37, i32* %ehselector.slot, align 4 br label %ehcleanup76 lpad51: ; preds = %invoke.cont74, %invoke.cont73, %invoke.cont55, %invoke.cont52, %invoke.cont44 %38 = landingpad { i8*, i32 } cleanup %39 = extractvalue { i8*, i32 } %38, 0 store i8* %39, i8** %exn.slot, align 8 %40 = extractvalue { i8*, i32 } %38, 1 store i32 %40, i32* %ehselector.slot, align 4 %41 = bitcast %"class.thrust::detail::normal_iterator.505"* %new_storage_end to i8* call void @llvm.lifetime.end(i64 8, i8* %41) #5 br label %ehcleanup76 ehcleanup76: ; preds = %lpad51, %lpad43 invoke void @__cxa_end_catch() to label %invoke.cont77 unwind label %terminate.lpad invoke.cont77: ; preds = %ehcleanup76 br label %ehcleanup78 try.cont: ; preds = %invoke.cont36 %42 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %42) #5 br label %return return: ; preds = %try.cont, %if.then ret void ehcleanup78: ; preds = %invoke.cont77, %cleanup.done %43 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %43) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup78 %exn79 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn79, 0 %lpad.val80 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val80 terminate.lpad: ; preds = %ehcleanup76 %44 = landingpad { i8*, i32 } catch i8* null %45 = extractvalue { i8*, i32 } %44, 0 call void @__clang_call_terminate(i8* %45) #13 unreachable unreachable: ; preds = %invoke.cont74, %invoke.cont14 unreachable } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic8distanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENS_15iterator_traitsIT_E15difference_typeESC_SC_(%"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp5 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp4 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive6, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp4, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive8, i32 0, i32 0 %5 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_NS_27random_access_traversal_tagE(%"struct.thrust::pair.487"* %4, %"struct.thrust::pair.487"* %5) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENS_15iterator_traitsIT_E15difference_typeESD_SD_NS_27random_access_traversal_tagE(%"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce) #8 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to %"class.thrust::iterator_facade.557"* %2 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to %"class.thrust::iterator_facade.557"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.557"* dereferenceable(1) %1, %"class.thrust::iterator_facade.557"* dereferenceable(1) %2) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.557"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.557"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.557"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.557"*, align 8 store %"class.thrust::iterator_facade.557"* %lhs, %"class.thrust::iterator_facade.557"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.557"* %rhs, %"class.thrust::iterator_facade.557"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.557"*, %"class.thrust::iterator_facade.557"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.557"* %0 to %"class.thrust::detail::normal_iterator.555"* %2 = load %"class.thrust::iterator_facade.557"*, %"class.thrust::iterator_facade.557"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.557"* %2 to %"class.thrust::detail::normal_iterator.555"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIssEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIssEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.555"* %f1, %"class.thrust::detail::normal_iterator.555"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.555"* %f2, %"class.thrust::detail::normal_iterator.555"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIssEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPKNS_4pairIssEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 store %"class.thrust::detail::normal_iterator.555"* %f1, %"class.thrust::detail::normal_iterator.555"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.555"* %f2, %"class.thrust::detail::normal_iterator.555"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.555"* %1 to %"class.thrust::iterator_adaptor.556"* %3 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.555"* %3 to %"class.thrust::iterator_adaptor.556"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.556"* %2, %"class.thrust::iterator_adaptor.556"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.556"* %this, %"class.thrust::iterator_adaptor.556"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.556"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.556"*, align 8 store %"class.thrust::iterator_adaptor.556"* %this, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.556"* %y, %"class.thrust::iterator_adaptor.556"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.556"*, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.556"*, %"class.thrust::iterator_adaptor.556"** %y.addr, align 8 %call = call dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.556"* %0) %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %this1, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !395 %sub.ptr.lhs.cast = ptrtoint %"struct.thrust::pair.487"* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %"struct.thrust::pair.487"* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 4 ret i64 %sub.ptr.div } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.556"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.556"*, align 8 store %"class.thrust::iterator_adaptor.556"* %this, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.556"*, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %this1, i32 0, i32 0 ret %"struct.thrust::pair.487"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE10deallocateEv(%"class.thrust::detail::contiguous_storage.502"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp7 = alloca %"class.thrust::device_ptr.508", align 8 store %"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::contiguous_storage.502"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.505"* %m_begin to %"class.thrust::iterator_adaptor.506"* %call2 = call dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.506"* %0) %1 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::contiguous_storage.502"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive5, align 8 call void @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE10deallocateERS5_NS_10device_ptrIS4_EEm(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %m_allocator, %"struct.thrust::pair.487"* %3, i64 %call3) %m_begin6 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 1 call void @_ZN6thrust10device_ptrINS_4pairIssEEEC2IS2_EEPT_(%"class.thrust::device_ptr.508"* %agg.tmp7, %"struct.thrust::pair.487"* null) %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive9, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive10, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.505"* %ref.tmp, %"struct.thrust::pair.487"* %4) %5 = bitcast %"class.thrust::detail::normal_iterator.505"* %m_begin6 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.505"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !392 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8capacityEv(%"class.thrust::detail::vector_base.501"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.501"*, align 8 store %"class.thrust::detail::vector_base.501"* %this, %"class.thrust::detail::vector_base.501"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.501"*, %"class.thrust::detail::vector_base.501"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::contiguous_storage.502"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv(%"class.thrust::detail::vector_base.501"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.501"*, align 8 store %"class.thrust::detail::vector_base.501"* %this, %"class.thrust::detail::vector_base.501"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.501"*, %"class.thrust::detail::vector_base.501"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.501", %"class.thrust::detail::vector_base.501"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.502"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8allocateEm(%"class.thrust::detail::contiguous_storage.502"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %ref.tmp8 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.508", align 8 store %"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE8allocateERS5_m(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %m_allocator, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive6, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.505"* %ref.tmp, %"struct.thrust::pair.487"* %2) %3 = bitcast %"class.thrust::detail::normal_iterator.505"* %m_begin to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.505"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 2 store i64 %5, i64* %m_size, align 8, !tbaa !392 br label %if.end if.else: ; preds = %entry %m_begin7 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 1 call void @_ZN6thrust10device_ptrINS_4pairIssEEEC2IS2_EEPT_(%"class.thrust::device_ptr.508"* %agg.tmp9, %"struct.thrust::pair.487"* null) %coerce.dive10 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive11, i32 0, i32 0 %6 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive12, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.505"* %ref.tmp8, %"struct.thrust::pair.487"* %6) %7 = bitcast %"class.thrust::detail::normal_iterator.505"* %m_begin7 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.505"* %ref.tmp8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %m_size13 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 2 store i64 0, i64* %m_size13, align 8, !tbaa !392 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE18uninitialized_copyINS0_15normal_iteratorIPKS3_EEEENS8_INS_10device_ptrIS3_EEEET_SF_SE_(%"class.thrust::detail::contiguous_storage.502"* %this, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.505", align 8 %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::detail::normal_iterator.505", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 %from_system = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp12 = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive7, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive8, align 8 store %"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8, !tbaa !1 %this9 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to %"struct.thrust::execution_policy.88"* %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this9, i32 0, i32 0 %2 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp10 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp11 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.505"* %result to %"class.thrust::iterator_adaptor.506"* %call = call dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.506"* %6) %7 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp12 to i8* %8 = bitcast %"class.thrust::device_ptr.508"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp10, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive13, i32 0, i32 0 %9 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp11, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive15, i32 0, i32 0 %10 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp12, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive18, i32 0, i32 0 %11 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive19, align 8 %call20 = call %"struct.thrust::pair.487"* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIssEEEENS0_15normal_iteratorIPKS8_EENS_10device_ptrIS8_EEEET2_RNS_16execution_policyIT_EERT0_T1_SN_SG_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %m_allocator, %"struct.thrust::pair.487"* %9, %"struct.thrust::pair.487"* %10, %"struct.thrust::pair.487"* %11) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive22, i32 0, i32 0 store %"struct.thrust::pair.487"* %call20, %"struct.thrust::pair.487"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive25, i32 0, i32 0 %12 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive26, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEC2ES5_(%"class.thrust::detail::normal_iterator.505"* %retval, %"struct.thrust::pair.487"* %12) %13 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.end(i64 1, i8* %13) #5 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive27, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive30, i32 0, i32 0 %14 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive31, align 8 ret %"struct.thrust::pair.487"* %14 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE5beginEv(%"class.thrust::detail::contiguous_storage.502"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.505", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 store %"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.505"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.505"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive5, align 8 ret %"struct.thrust::pair.487"* %2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.505"* %i, %"class.thrust::detail::normal_iterator.505"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE7destroyENS0_15normal_iteratorINS_10device_ptrIS3_EEEESA_(%"class.thrust::detail::contiguous_storage.502"* %this, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.505", align 8 %last = alloca %"class.thrust::detail::normal_iterator.505", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive9, align 8 store %"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8, !tbaa !1 %this10 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this10, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.505"* %first to %"class.thrust::iterator_adaptor.506"* %call = call dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.506"* %0) %1 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.505"* %last to %"class.thrust::iterator_facade.507"* %4 = bitcast %"class.thrust::detail::normal_iterator.505"* %first to %"class.thrust::iterator_facade.507"* %call11 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElS7_S5_SB_SC_SE_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSG_IT5_T6_T7_T8_T9_T10_EEE4typeERKSN_RKSU_(%"class.thrust::iterator_facade.507"* dereferenceable(1) %3, %"class.thrust::iterator_facade.507"* dereferenceable(1) %4) %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive13, i32 0, i32 0 %5 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive14, align 8 call void @_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIssEEEENS_10device_ptrIS4_EElEEvRT_T0_T1_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %m_allocator, %"struct.thrust::pair.487"* %5, i64 %call11) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE4sizeEv(%"class.thrust::detail::contiguous_storage.502"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 store %"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !392 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE10deallocateERS5_NS_10device_ptrIS4_EEm(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p.coerce, i64 %n) #8 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.508", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive5, align 8 call void @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE10deallocateERS5_NS_10device_ptrIS4_EEmEN19workaround_warnings10deallocateES7_S9_m(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %0, %"struct.thrust::pair.487"* %4, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.506"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.506"*, align 8 store %"class.thrust::iterator_adaptor.506"* %this, %"class.thrust::iterator_adaptor.506"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.506"*, %"class.thrust::iterator_adaptor.506"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %this1, i32 0, i32 0 ret %"class.thrust::device_ptr.508"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE10deallocateERS5_NS_10device_ptrIS4_EEmEN19workaround_warnings10deallocateES7_S9_m(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.508", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive5, align 8 call void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEE10deallocateENS_10device_ptrIS2_EEm(%"class.thrust::device_malloc_allocator.503"* %0, %"struct.thrust::pair.487"* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEE10deallocateENS_10device_ptrIS2_EEm(%"class.thrust::device_malloc_allocator.503"* %this, %"struct.thrust::pair.487"* %p.coerce, i64 %cnt) #8 comdat align 2 { entry: %p = alloca %"class.thrust::device_ptr.508", align 8 %this.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %cnt.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.115", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.503"* %this, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this3 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8 call void @_ZN6thrust10device_ptrIvEC2INS_4pairIssEEEERKNS0_IT_EE(%"class.thrust::device_ptr.115"* %agg.tmp, %"class.thrust::device_ptr.508"* dereferenceable(8) %p) %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.115", %"class.thrust::device_ptr.115"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.116", %"class.thrust::pointer.116"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.117", %"class.thrust::iterator_adaptor.117"* %coerce.dive5, i32 0, i32 0 %0 = load i8*, i8** %coerce.dive6, align 8 call void @_ZN6thrust11device_freeENS_10device_ptrIvEE(i8* %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIvEC2INS_4pairIssEEEERKNS0_IT_EE(%"class.thrust::device_ptr.115"* %this, %"class.thrust::device_ptr.508"* dereferenceable(8) %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.115"*, align 8 %other.addr = alloca %"class.thrust::device_ptr.508"*, align 8 store %"class.thrust::device_ptr.115"* %this, %"class.thrust::device_ptr.115"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.508"* %other, %"class.thrust::device_ptr.508"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_ptr.115"*, %"class.thrust::device_ptr.115"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.115"* %this1 to %"class.thrust::pointer.116"* %1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %other.addr, align 8 call void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_INS_4pairIssEEEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISE_S9_vE4typeE(%"class.thrust::pointer.116"* %0, %"class.thrust::device_ptr.508"* dereferenceable(8) %1, i8* null) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIvNS_6system4cuda6detail3tagENS_16device_referenceIvEENS_10device_ptrIvEEEC2INS7_INS_4pairIssEEEEEERKT_PNS_6detail32enable_if_pointer_is_convertibleISE_S9_vE4typeE(%"class.thrust::pointer.116"* %this, %"class.thrust::device_ptr.508"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.116"*, align 8 %other.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca i8*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 store %"class.thrust::pointer.116"* %this, %"class.thrust::pointer.116"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.508"* %other, %"class.thrust::device_ptr.508"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.116"*, %"class.thrust::pointer.116"** %this.addr, align 8 %1 = bitcast %"class.thrust::pointer.116"* %this1 to %"class.thrust::iterator_adaptor.117"* %2 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %other.addr, align 8 %3 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %4 = bitcast %"class.thrust::device_ptr.508"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive2, i32 0, i32 0 %5 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIssEEEEE3getES5_(%"struct.thrust::pair.487"* %5) %6 = bitcast %"struct.thrust::pair.487"* %call to i8* store i8* %6, i8** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIvEEPvvNS_6system4cuda6detail3tagENS_27random_access_traversal_tagEvlEC2ERKS3_(%"class.thrust::iterator_adaptor.117"* %1, i8** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIssEEEEE3getES5_(%"struct.thrust::pair.487"* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %ptr.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 %0 = bitcast %"class.thrust::device_ptr.508"* %ptr to %"class.thrust::pointer.509"* %call = call %"struct.thrust::pair.487"* @_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE3getEv(%"class.thrust::pointer.509"* %0) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE3getEv(%"class.thrust::pointer.509"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.509"*, align 8 store %"class.thrust::pointer.509"* %this, %"class.thrust::pointer.509"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.509"*, %"class.thrust::pointer.509"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.509"* %this1 to %"class.thrust::iterator_adaptor.510"* %call = call dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE4baseEv(%"class.thrust::iterator_adaptor.510"* %0) %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %call, align 8, !tbaa !1 ret %"struct.thrust::pair.487"* %1 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE4baseEv(%"class.thrust::iterator_adaptor.510"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.510"*, align 8 store %"class.thrust::iterator_adaptor.510"* %this, %"class.thrust::iterator_adaptor.510"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.510"*, %"class.thrust::iterator_adaptor.510"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %this1, i32 0, i32 0 ret %"struct.thrust::pair.487"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS_23device_malloc_allocatorIS3_EEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.502"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.502"*, align 8 store %"class.thrust::detail::contiguous_storage.502"* %this, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.502"*, %"class.thrust::detail::contiguous_storage.502"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.502", %"class.thrust::detail::contiguous_storage.502"* %this1, i32 0, i32 0 %call = call i64 @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE8max_sizeERKS5_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %m_allocator) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE8max_sizeERKS5_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a) #8 comdat align 2 { entry: %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 %call = call i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorINS_4pairIssEEEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS8_E9size_typeEE4typeERKS8_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %0) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeINS_23device_malloc_allocatorINS_4pairIssEEEEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS8_E9size_typeEE4typeERKS8_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a) #1 comdat { entry: %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 ret i64 -1 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE8allocateERS5_m(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a, i64 %n) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE8allocateERS5_mEN19workaround_warnings8allocateES7_m(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive5, align 8 ret %"struct.thrust::pair.487"* %2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZZN6thrust6detail16allocator_traitsINS_23device_malloc_allocatorINS_4pairIssEEEEE8allocateERS5_mEN19workaround_warnings8allocateES7_m(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.558", align 8 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust10device_ptrIKNS_4pairIssEEEC2IS2_EEPT_(%"class.thrust::device_ptr.558"* %agg.tmp, %"struct.thrust::pair.487"* null) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.558", %"class.thrust::device_ptr.558"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.559", %"class.thrust::pointer.559"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.560", %"class.thrust::iterator_adaptor.560"* %coerce.dive1, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive2, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEE8allocateEmNS_10device_ptrIKS2_EE(%"class.thrust::device_malloc_allocator.503"* %0, i64 %1, %"struct.thrust::pair.487"* %2) %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive7, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive8, align 8 ret %"struct.thrust::pair.487"* %3 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust23device_malloc_allocatorINS_4pairIssEEE8allocateEmNS_10device_ptrIKS2_EE(%"class.thrust::device_malloc_allocator.503"* %this, i64 %cnt, %"struct.thrust::pair.487"* %.coerce) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %0 = alloca %"class.thrust::device_ptr.558", align 8 %this.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %cnt.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.558", %"class.thrust::device_ptr.558"* %0, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.559", %"class.thrust::pointer.559"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.560", %"class.thrust::iterator_adaptor.560"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.503"* %this, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this3 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8 %1 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call = call i64 @_ZNK6thrust23device_malloc_allocatorINS_4pairIssEEE8max_sizeEv(%"class.thrust::device_malloc_allocator.503"* %this3) %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %exception = call i8* @__cxa_allocate_exception(i64 8) #5 %2 = bitcast i8* %exception to %"class.std::bad_alloc"* call void @_ZNSt9bad_allocC2Ev(%"class.std::bad_alloc"* %2) #5 call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt9bad_alloc to i8*), i8* bitcast (void (%"class.std::bad_alloc"*)* @_ZNSt9bad_allocD1Ev to i8*)) #15 unreachable if.end: ; preds = %entry %3 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call4 = call %"struct.thrust::pair.487"* @_ZN6thrust13device_mallocINS_4pairIssEEEENS_10device_ptrIT_EEm(i64 %3) %coerce.dive5 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair.487"* %call4, %"struct.thrust::pair.487"** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive9, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive10, align 8 ret %"struct.thrust::pair.487"* %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust10device_ptrIKNS_4pairIssEEEC2IS2_EEPT_(%"class.thrust::device_ptr.558"* %this, %"struct.thrust::pair.487"* %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_ptr.558"*, align 8 %ptr.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"class.thrust::device_ptr.558"* %this, %"class.thrust::device_ptr.558"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %ptr, %"struct.thrust::pair.487"** %ptr.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_ptr.558"*, %"class.thrust::device_ptr.558"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_ptr.558"* %this1 to %"class.thrust::pointer.559"* %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %ptr.addr, align 8, !tbaa !1 call void @_ZN6thrust7pointerIKNS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2IS2_EEPT_(%"class.thrust::pointer.559"* %0, %"struct.thrust::pair.487"* %1) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i64 @_ZNK6thrust23device_malloc_allocatorINS_4pairIssEEE8max_sizeEv(%"class.thrust::device_malloc_allocator.503"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 store %"class.thrust::device_malloc_allocator.503"* %this, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %this.addr, align 8 %call = call i64 @_ZNSt14numeric_limitsImE3maxEv() #5 %div = udiv i64 %call, 4 ret i64 %div } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust13device_mallocINS_4pairIssEEEENS_10device_ptrIT_EEm(i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %n.addr = alloca i64, align 8 %s = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %coerce = alloca %"class.thrust::pointer.562", align 8 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to %"struct.thrust::detail::execution_policy_base.121"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6mallocINS_4pairIssEENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i64 %2) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %call2 = call %"struct.thrust::pair.487"* @_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.562"* %coerce) call void @_ZN6thrust10device_ptrINS_4pairIssEEEC2IS2_EEPT_(%"class.thrust::device_ptr.508"* %retval, %"struct.thrust::pair.487"* %call2) %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %s to i8* call void @llvm.lifetime.end(i64 1, i8* %3) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive5, align 8 ret %"struct.thrust::pair.487"* %4 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6mallocINS_4pairIssEENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.562", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %raw_ptr = alloca %"struct.thrust::pair.487"*, align 8 %ref.tmp = alloca %"class.thrust::pointer.562", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::pair.487"** %raw_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic6mallocINS_4pairIssEENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %ref.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call2, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %call4 = call %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.562"* dereferenceable(8) %ref.tmp) store %"struct.thrust::pair.487"* %call4, %"struct.thrust::pair.487"** %raw_ptr, align 8, !tbaa !1 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %raw_ptr, align 8, !tbaa !1 call void @_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.562"* %retval, %"struct.thrust::pair.487"* %4) %5 = bitcast %"struct.thrust::pair.487"** %raw_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive5, i32 0, i32 0 %6 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive6, align 8 ret %"struct.thrust::pair.487"* %6 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.562"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.562"*, align 8 store %"class.thrust::pointer.562"* %this, %"class.thrust::pointer.562"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.562"*, %"class.thrust::pointer.562"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.562"* %this1 to %"class.thrust::iterator_adaptor.563"* %call = call dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv(%"class.thrust::iterator_adaptor.563"* %0) %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %call, align 8, !tbaa !1 ret %"struct.thrust::pair.487"* %1 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.562"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::pointer.562"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 store %"class.thrust::pointer.562"* %ptr, %"class.thrust::pointer.562"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::pointer.562"*, %"class.thrust::pointer.562"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.562"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEE3getESA_(%"struct.thrust::pair.487"* %3) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic6mallocINS_4pairIssEENS0_4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESC_EERNS_16execution_policyISB_EEm(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::pointer.562", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %void_ptr = alloca %"class.thrust::pointer.129", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 4, %3 %call = call i8* @_ZN6thrust6mallocINS_6system4cuda6detail3tagEEENS_7pointerIvT_NS_11use_defaultES7_EERKNS_6detail21execution_policy_baseIS6_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %mul) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.129", %"class.thrust::pointer.129"* %void_ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.130", %"class.thrust::iterator_adaptor.130"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive1, align 8 %call2 = call i8* @_ZNK6thrust7pointerIvNS_6system4cuda6detail3tagENS_11use_defaultES5_E3getEv(%"class.thrust::pointer.129"* %void_ptr) %4 = bitcast i8* %call2 to %"struct.thrust::pair.487"* call void @_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.562"* %retval, %"struct.thrust::pair.487"* %4) %5 = bitcast %"class.thrust::pointer.129"* %void_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %5) #5 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %retval, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive3, i32 0, i32 0 %6 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 ret %"struct.thrust::pair.487"* %6 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.562"* %this, %"struct.thrust::pair.487"* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.562"*, align 8 %other.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"class.thrust::pointer.562"* %this, %"class.thrust::pointer.562"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %other, %"struct.thrust::pair.487"** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.562"*, %"class.thrust::pointer.562"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.562"* %this1 to %"class.thrust::iterator_adaptor.563"* call void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_(%"class.thrust::iterator_adaptor.563"* %0, %"struct.thrust::pair.487"** dereferenceable(8) %other.addr) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail14pointer_traitsINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEE3getESA_(%"struct.thrust::pair.487"* %ptr.coerce) #8 comdat align 2 { entry: %ptr = alloca %"class.thrust::pointer.562", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %ptr.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %call = call %"struct.thrust::pair.487"* @_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.562"* %ptr) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElEC2ERKSA_(%"class.thrust::iterator_adaptor.563"* %this, %"struct.thrust::pair.487"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.563"*, align 8 %iter.addr = alloca %"struct.thrust::pair.487"**, align 8 store %"class.thrust::iterator_adaptor.563"* %this, %"class.thrust::iterator_adaptor.563"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"** %iter, %"struct.thrust::pair.487"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.563"*, %"class.thrust::iterator_adaptor.563"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.563"* %this1 to %"class.thrust::iterator_facade.564"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"**, %"struct.thrust::pair.487"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %1, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %2, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !397 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEPS3_S3_S7_NS_27random_access_traversal_tagENS_9referenceIS3_S9_S8_EElE4baseEv(%"class.thrust::iterator_adaptor.563"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.563"*, align 8 store %"class.thrust::iterator_adaptor.563"* %this, %"class.thrust::iterator_adaptor.563"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.563"*, %"class.thrust::iterator_adaptor.563"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %this1, i32 0, i32 0 ret %"struct.thrust::pair.487"** %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7pointerIKNS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS3_EENS_10device_ptrIS3_EEEC2IS2_EEPT_(%"class.thrust::pointer.559"* %this, %"struct.thrust::pair.487"* %other) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::pointer.559"*, align 8 %other.addr = alloca %"struct.thrust::pair.487"*, align 8 %ref.tmp = alloca %"struct.thrust::pair.487"*, align 8 store %"class.thrust::pointer.559"* %this, %"class.thrust::pointer.559"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %other, %"struct.thrust::pair.487"** %other.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.559"*, %"class.thrust::pointer.559"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.559"* %this1 to %"class.thrust::iterator_adaptor.560"* %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %other.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %1, %"struct.thrust::pair.487"** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIssEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEC2ERKS6_(%"class.thrust::iterator_adaptor.560"* %0, %"struct.thrust::pair.487"** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrIKNS_4pairIssEEEEPS4_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS4_EElEC2ERKS6_(%"class.thrust::iterator_adaptor.560"* %this, %"struct.thrust::pair.487"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.560"*, align 8 %iter.addr = alloca %"struct.thrust::pair.487"**, align 8 store %"class.thrust::iterator_adaptor.560"* %this, %"class.thrust::iterator_adaptor.560"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"** %iter, %"struct.thrust::pair.487"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.560"*, %"class.thrust::iterator_adaptor.560"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.560"* %this1 to %"class.thrust::iterator_facade.561"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.560", %"class.thrust::iterator_adaptor.560"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"**, %"struct.thrust::pair.487"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %1, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %2, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !399 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIssEEEENS0_15normal_iteratorIPKS8_EENS_10device_ptrIS8_EEEET2_RNS_16execution_policyIT_EERT0_T1_SN_SG_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::device_ptr.508", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp8 = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp7 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp8 to i8* %7 = bitcast %"class.thrust::device_ptr.508"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive9, i32 0, i32 0 %8 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp7, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive11, i32 0, i32 0 %9 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp8, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive14, i32 0, i32 0 %10 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive15, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIssEEEENS0_15normal_iteratorIPKS9_EENS_10device_ptrIS9_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESK_E4typeERNS_16execution_policyIT_EERSI_T1_SU_SK_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %1, %"struct.thrust::pair.487"* %8, %"struct.thrust::pair.487"* %9, %"struct.thrust::pair.487"* %10) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive17, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive20, i32 0, i32 0 %11 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive21, align 8 ret %"struct.thrust::pair.487"* %11 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagENS_23device_malloc_allocatorINS_4pairIssEEEENS0_15normal_iteratorIPKS9_EENS_10device_ptrIS9_EEEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESK_E4typeERNS_16execution_policyIT_EERSI_T1_SU_SK_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::device_ptr.508", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp8 = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorINS_4pairIssEEEEE3getERS5_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %1) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %ref.tmp to %"struct.thrust::execution_policy.120"* %3 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::device_ptr.508"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive9, i32 0, i32 0 %9 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp7, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive11, i32 0, i32 0 %10 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp8, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive14, i32 0, i32 0 %11 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive15, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_RKNS_16execution_policyIT_EERKNSI_IT0_EET1_SR_SH_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"struct.thrust::execution_policy.120"* dereferenceable(1) %2, %"struct.thrust::pair.487"* %9, %"struct.thrust::pair.487"* %10, %"struct.thrust::pair.487"* %11) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive17, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive18, align 8 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive20, i32 0, i32 0 %12 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive21, align 8 ret %"struct.thrust::pair.487"* %12 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagENS2_4cuda6detail3tagENS0_15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_RKNS_16execution_policyIT_EERKNSI_IT0_EET1_SR_SH_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system2, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::device_ptr.508", align 8 %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp12 = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive6, align 8 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.120"* %system2, %"struct.thrust::execution_policy.120"** %system2.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call7 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call7 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %3 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2.addr, align 8 %4 = bitcast %"struct.thrust::execution_policy.120"* %3 to %"struct.thrust::detail::execution_policy_base.121"* %call8 = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %4) %call9 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call8) %5 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call9 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call10 = call { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } @_ZN6thrust6system4cuda6detail13select_systemINS0_3cpp6detail3tagENS2_3tagEEENS2_12cross_systemIT_T0_EERKNS5_16execution_policyIS9_EERNS2_16execution_policyISA_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %2, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %5) %6 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %ref.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %7 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %6, i32 0, i32 0 %8 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call10, 0 store %"struct.thrust::execution_policy.88"* %8, %"struct.thrust::execution_policy.88"** %7, align 8 %9 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %6, i32 0, i32 1 %10 = extractvalue { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* } %call10, 1 store %"struct.thrust::execution_policy.120"* %10, %"struct.thrust::execution_policy.120"** %9, align 8 %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.132"* %12 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp11 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp12 to i8* %17 = bitcast %"class.thrust::device_ptr.508"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive13, i32 0, i32 0 %18 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp11, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive15, i32 0, i32 0 %19 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive16, align 8 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp12, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive18, i32 0, i32 0 %20 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive19, align 8 %call20 = call %"struct.thrust::pair.487"* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISD_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SP_SJ_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %11, %"struct.thrust::pair.487"* %18, %"struct.thrust::pair.487"* %19, %"struct.thrust::pair.487"* %20) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive22, i32 0, i32 0 store %"struct.thrust::pair.487"* %call20, %"struct.thrust::pair.487"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive25, i32 0, i32 0 %21 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive26, align 8 ret %"struct.thrust::pair.487"* %21 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorINS_4pairIssEEEEE3getERS5_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a) #8 comdat align 2 { entry: %retval = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 call void @_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorINS_4pairIssEEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS8_E4typeEE4typeERS8_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust4copyINS_6system4cuda6detail12cross_systemINS1_3cpp6detail3tagENS3_3tagEEENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISD_EEEET1_RKNSA_21execution_policy_baseIT_EET0_SP_SJ_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::device_ptr.508", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.132"*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp10 = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive6, align 8 store %"struct.thrust::detail::execution_policy_base.132"* %exec, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.132"*, %"struct.thrust::detail::execution_policy_base.132"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.132"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERNS0_21execution_policy_baseIT_EERKSD_(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %0) %call7 = call dereferenceable(16) %"struct.thrust::system::cuda::detail::cross_system"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail12cross_systemINS2_3cpp6detail3tagENS4_3tagEEEEERT_RNS0_21execution_policy_baseISB_EE(%"struct.thrust::detail::execution_policy_base.132"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %call7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 16, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp8 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp9 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp10 to i8* %8 = bitcast %"class.thrust::device_ptr.508"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %10 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 0 %11 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %10, align 8 %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %9, i32 0, i32 1 %13 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %12, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp8, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive11, i32 0, i32 0 %14 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive12, align 8 %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp9, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive13, i32 0, i32 0 %15 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp10, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive16, i32 0, i32 0 %16 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive17, align 8 %call18 = call %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_(%"struct.thrust::execution_policy.88"* %11, %"struct.thrust::execution_policy.120"* %13, %"struct.thrust::pair.487"* %14, %"struct.thrust::pair.487"* %15, %"struct.thrust::pair.487"* %16) %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive20, i32 0, i32 0 store %"struct.thrust::pair.487"* %call18, %"struct.thrust::pair.487"** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive23, i32 0, i32 0 %17 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive24, align 8 ret %"struct.thrust::pair.487"* %17 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail4copyINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %last = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.508", align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.555"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp9 to i8* %10 = bitcast %"class.thrust::device_ptr.508"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp7, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive10, i32 0, i32 0 %16 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp8, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive12, i32 0, i32 0 %17 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp9, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive15, i32 0, i32 0 %18 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive16, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, %"struct.thrust::pair.487"* %16, %"struct.thrust::pair.487"* %17, %"struct.thrust::pair.487"* %18) %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive18, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive20, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive21, i32 0, i32 0 %19 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive22, align 8 ret %"struct.thrust::pair.487"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair.487"* %begin.coerce, %"struct.thrust::pair.487"* %end.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.555", align 8 %end = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp10 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp11 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %begin.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %end.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp7 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.555"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp8 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.555"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp9 to i8* %10 = bitcast %"class.thrust::device_ptr.508"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp7, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive12, i32 0, i32 0 %16 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive14, i32 0, i32 0 %17 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive17, i32 0, i32 0 %18 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive18, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, %"struct.thrust::pair.487"* %16, %"struct.thrust::pair.487"* %17, %"struct.thrust::pair.487"* %18) %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive20, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive23, i32 0, i32 0 %19 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive24, align 8 ret %"struct.thrust::pair.487"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair.487"* %begin.coerce, %"struct.thrust::pair.487"* %end.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.555", align 8 %end = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::device_ptr.508", align 8 %input_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %output_traversal = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp9 = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp10 = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp11 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp12 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %agg.tmp13 = alloca %"struct.thrust::detail::integral_constant", align 1 %0 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %1 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %0, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %2, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %begin.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %end.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive6, align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to i8* %4 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp8 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.555"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp9 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.555"* %end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::device_ptr.508"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %agg.tmp to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %12 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 0 %13 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %12, align 8 %14 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %11, i32 0, i32 1 %15 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %14, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp8, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive14, i32 0, i32 0 %16 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp9, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive16, i32 0, i32 0 %17 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp10, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive18, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive19, i32 0, i32 0 %18 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive20, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %13, %"struct.thrust::execution_policy.120"* %15, %"struct.thrust::pair.487"* %16, %"struct.thrust::pair.487"* %17, %"struct.thrust::pair.487"* %18) %coerce.dive21 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive22 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive21, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive22, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive25, i32 0, i32 0 %19 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive26, align 8 ret %"struct.thrust::pair.487"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail17copy_cross_systemINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEENS_10device_ptrISB_EEEET2_NS2_12cross_systemIT_T0_EET1_SM_SH_NS_27random_access_traversal_tagESN_NS8_17integral_constantIbLb1EEE(%"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::pair.487"* %begin.coerce, %"struct.thrust::pair.487"* %end.coerce, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %systems = alloca %"struct.thrust::system::cuda::detail::cross_system", align 8 %begin = alloca %"class.thrust::detail::normal_iterator.555", align 8 %end = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::device_ptr.508", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %2 = alloca %"struct.thrust::detail::integral_constant", align 1 %n = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.555", align 8 %agg.tmp9 = alloca %"class.thrust::device_ptr.508", align 8 %3 = bitcast %"struct.thrust::system::cuda::detail::cross_system"* %systems to { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %4 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 0 store %"struct.thrust::execution_policy.88"* %systems.coerce0, %"struct.thrust::execution_policy.88"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }, { %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.120"* }* %3, i32 0, i32 1 store %"struct.thrust::execution_policy.120"* %systems.coerce1, %"struct.thrust::execution_policy.120"** %5, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %begin, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %begin.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %end, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %end.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive6, align 8 %6 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %6) #5 %7 = bitcast %"class.thrust::detail::normal_iterator.555"* %end to %"class.thrust::iterator_facade.557"* %8 = bitcast %"class.thrust::detail::normal_iterator.555"* %begin to %"class.thrust::iterator_facade.557"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lS7_S4_SB_SC_SD_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSF_IT5_T6_T7_T8_T9_T10_EEE4typeERKSM_RKST_(%"class.thrust::iterator_facade.557"* dereferenceable(1) %7, %"class.thrust::iterator_facade.557"* dereferenceable(1) %8) store i64 %call, i64* %n, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.555"* %agg.tmp to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.555"* %begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = load i64, i64* %n, align 8, !tbaa !13 %12 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp9 to i8* %13 = bitcast %"class.thrust::device_ptr.508"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive10, i32 0, i32 0 %14 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp9, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive13, i32 0, i32 0 %15 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive14, align 8 call void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEElNS_10device_ptrISB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, %"struct.thrust::pair.487"* %14, i64 %11, %"struct.thrust::pair.487"* %15) %16 = bitcast %"class.thrust::device_ptr.508"* %result to %"class.thrust::iterator_facade.511"* %17 = load i64, i64* %n, align 8, !tbaa !13 %call15 = call %"struct.thrust::pair.487"* @_ZN6thrustplINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEET_RKNS_15iterator_facadeISC_T0_T1_T2_T3_T4_EENSC_15difference_typeE(%"class.thrust::iterator_facade.511"* dereferenceable(1) %16, i64 %17) %coerce.dive16 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive17, i32 0, i32 0 store %"struct.thrust::pair.487"* %call15, %"struct.thrust::pair.487"** %coerce.dive18, align 8 %18 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %18) #5 %coerce.dive19 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive20 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive19, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive20, i32 0, i32 0 %19 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive21, align 8 ret %"struct.thrust::pair.487"* %19 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail14trivial_copy_nINS0_3cpp6detail3tagENS2_3tagENS_6detail15normal_iteratorIPKNS_4pairIssEEEElNS_10device_ptrISB_EEEEvRNS2_12cross_systemIT_T0_EET1_T2_T3_(%"struct.thrust::system::cuda::detail::cross_system"* dereferenceable(16) %systems, %"struct.thrust::pair.487"* %first.coerce, i64 %n, %"struct.thrust::pair.487"* %result.coerce) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.555", align 8 %result = alloca %"class.thrust::device_ptr.508", align 8 %systems.addr = alloca %"struct.thrust::system::cuda::detail::cross_system"*, align 8 %n.addr = alloca i64, align 8 %dst = alloca i8*, align 8 %ref.tmp = alloca %"class.thrust::device_ptr.508", align 8 %coerce = alloca %"class.thrust::device_reference.565", align 8 %src = alloca i8*, align 8 %ref.tmp15 = alloca %"struct.thrust::pair.487"*, align 8 %kind = alloca i32, align 4 %s = alloca %struct.CUstream_st*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %result, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive4, align 8 store %"struct.thrust::system::cuda::detail::cross_system"* %systems, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast i8** %dst to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = bitcast %"class.thrust::device_ptr.508"* %result to %"class.thrust::iterator_facade.511"* %call = call %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEdeEv(%"class.thrust::iterator_facade.511"* %1) %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference.565", %"class.thrust::device_reference.565"* %coerce, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference.566", %"class.thrust::reference.566"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %2 = bitcast %"class.thrust::device_reference.565"* %coerce to %"class.thrust::reference.566"* %call10 = call %"struct.thrust::pair.487"* @_ZNK6thrust9referenceINS_4pairIssEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEadEv(%"class.thrust::reference.566"* %2) %coerce.dive11 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %ref.tmp, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive12, i32 0, i32 0 store %"struct.thrust::pair.487"* %call10, %"struct.thrust::pair.487"** %coerce.dive13, align 8 %call14 = call %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castINS_10device_ptrINS_4pairIssEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"class.thrust::device_ptr.508"* dereferenceable(8) %ref.tmp) %3 = bitcast %"struct.thrust::pair.487"* %call14 to i8* store i8* %3, i8** %dst, align 8, !tbaa !1 %4 = bitcast i8** %src to i8* call void @llvm.lifetime.start(i64 8, i8* %4) #5 %5 = bitcast %"class.thrust::detail::normal_iterator.555"* %first to %"class.thrust::iterator_facade.557"* %call16 = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEdeEv(%"class.thrust::iterator_facade.557"* %5) store %"struct.thrust::pair.487"* %call16, %"struct.thrust::pair.487"** %ref.tmp15, align 8, !tbaa !1 %call17 = call %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castIPKNS_4pairIssEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"struct.thrust::pair.487"** dereferenceable(8) %ref.tmp15) %6 = bitcast %"struct.thrust::pair.487"* %call17 to i8* store i8* %6, i8** %src, align 8, !tbaa !1 %7 = bitcast i32* %kind to i8* call void @llvm.lifetime.start(i64 4, i8* %7) #5 %8 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system1 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %8, i32 0, i32 0 %ref = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1, align 8, !tbaa !7 %9 = bitcast %"struct.thrust::execution_policy.88"* %ref to %"struct.thrust::detail::execution_policy_base.85"* %call18 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %9) %10 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call18 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %11 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system2 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %11, i32 0, i32 1 %ref19 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system2, align 8, !tbaa !7 %12 = bitcast %"struct.thrust::execution_policy.120"* %ref19 to %"struct.thrust::detail::execution_policy_base.121"* %call20 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %12) %13 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call20 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call21 = call i32 @_ZN6thrust6system4cuda6detail19trivial_copy_detail16cuda_memcpy_kindINS0_3cpp6detail3tagENS2_3tagEEE14cudaMemcpyKindRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %10, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %13) store i32 %call21, i32* %kind, align 4, !tbaa !97 %14 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %14) #5 %15 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system122 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %15, i32 0, i32 0 %ref23 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system122, align 8, !tbaa !7 %16 = bitcast %"struct.thrust::execution_policy.88"* %ref23 to %"struct.thrust::detail::execution_policy_base.85"* %call24 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %16) %17 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call24 to %"struct.thrust::system::cpp::detail::execution_policy.86"* %18 = load %"struct.thrust::system::cuda::detail::cross_system"*, %"struct.thrust::system::cuda::detail::cross_system"** %systems.addr, align 8 %system225 = getelementptr inbounds %"struct.thrust::system::cuda::detail::cross_system", %"struct.thrust::system::cuda::detail::cross_system"* %18, i32 0, i32 1 %ref26 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system225, align 8, !tbaa !7 %19 = bitcast %"struct.thrust::execution_policy.120"* %ref26 to %"struct.thrust::detail::execution_policy_base.121"* %call27 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %19) %20 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call27 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call28 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail19trivial_copy_detail18cuda_memcpy_streamINS0_3cpp6detail3tagENS2_3tagEEEP11CUstream_stRKNS6_16execution_policyIT_EERKNS2_16execution_policyIT0_EE(%"struct.thrust::system::cpp::detail::execution_policy.86"* dereferenceable(1) %17, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %20) store %struct.CUstream_st* %call28, %struct.CUstream_st** %s, align 8, !tbaa !1 %21 = load i8*, i8** %dst, align 8, !tbaa !1 %22 = load i8*, i8** %src, align 8, !tbaa !1 %23 = load i64, i64* %n.addr, align 8, !tbaa !13 %mul = mul i64 %23, 4 %24 = load i32, i32* %kind, align 4, !tbaa !97 %25 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail19trivial_copy_detail23checked_cudaMemcpyAsyncEPvPKvm14cudaMemcpyKindP11CUstream_st(i8* %21, i8* %22, i64 %mul, i32 %24, %struct.CUstream_st* %25) %26 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail11synchronizeEP11CUstream_stPKc(%struct.CUstream_st* %26, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.30, i32 0, i32 0)) %27 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %27) #5 %28 = bitcast i32* %kind to i8* call void @llvm.lifetime.end(i64 4, i8* %28) #5 %29 = bitcast i8** %src to i8* call void @llvm.lifetime.end(i64 8, i8* %29) #5 %30 = bitcast i8** %dst to i8* call void @llvm.lifetime.end(i64 8, i8* %30) #5 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrustplINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEET_RKNS_15iterator_facadeISC_T0_T1_T2_T3_T4_EENSC_15difference_typeE(%"class.thrust::iterator_facade.511"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %i.addr = alloca %"class.thrust::iterator_facade.511"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::device_ptr.508", align 8 store %"class.thrust::iterator_facade.511"* %i, %"class.thrust::iterator_facade.511"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::device_ptr.508"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.511"*, %"class.thrust::iterator_facade.511"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.511"* %1 to %"class.thrust::device_ptr.508"* %3 = bitcast %"class.thrust::device_ptr.508"* %tmp to i8* %4 = bitcast %"class.thrust::device_ptr.508"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::device_ptr.508"* %tmp to %"class.thrust::iterator_facade.511"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEpLEl(%"class.thrust::iterator_facade.511"* %5, i64 %6) %7 = bitcast %"class.thrust::device_ptr.508"* %retval to i8* %8 = bitcast %"class.thrust::device_ptr.508"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::device_ptr.508"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 %10 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive2, align 8 ret %"struct.thrust::pair.487"* %10 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castINS_10device_ptrINS_4pairIssEEEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"class.thrust::device_ptr.508"* dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 store %"class.thrust::device_ptr.508"* %ptr, %"class.thrust::device_ptr.508"** %ptr.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive2, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail14pointer_traitsINS_10device_ptrINS_4pairIssEEEEE3getES5_(%"struct.thrust::pair.487"* %3) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEdeEv(%"class.thrust::iterator_facade.511"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.565", align 8 %this.addr = alloca %"class.thrust::iterator_facade.511"*, align 8 store %"class.thrust::iterator_facade.511"* %this, %"class.thrust::iterator_facade.511"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.511"*, %"class.thrust::iterator_facade.511"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.511"* %this1) %call2 = call %"struct.thrust::pair.487"* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrINS_4pairIssEEEEEENT_9referenceERKS6_(%"class.thrust::device_ptr.508"* dereferenceable(8) %call) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.565", %"class.thrust::device_reference.565"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::reference.566", %"class.thrust::reference.566"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 store %"struct.thrust::pair.487"* %call2, %"struct.thrust::pair.487"** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_reference.565", %"class.thrust::device_reference.565"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::reference.566", %"class.thrust::reference.566"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive10, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive11, align 8 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZNK6thrust9referenceINS_4pairIssEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEadEv(%"class.thrust::reference.566"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %this.addr = alloca %"class.thrust::reference.566"*, align 8 store %"class.thrust::reference.566"* %this, %"class.thrust::reference.566"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::reference.566"*, %"class.thrust::reference.566"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.566", %"class.thrust::reference.566"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr.508"* %retval to i8* %1 = bitcast %"class.thrust::device_ptr.508"* %m_ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive2, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 ret %"struct.thrust::pair.487"* %2 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castIPKNS_4pairIssEEEENS_6detail14pointer_traitsIT_E11raw_pointerERKS7_(%"struct.thrust::pair.487"** dereferenceable(8) %ptr) #8 comdat { entry: %ptr.addr = alloca %"struct.thrust::pair.487"**, align 8 store %"struct.thrust::pair.487"** %ptr, %"struct.thrust::pair.487"*** %ptr.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::pair.487"**, %"struct.thrust::pair.487"*** %ptr.addr, align 8 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %0, align 8, !tbaa !1 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail14pointer_traitsIPKNS_4pairIssEEE3getES5_(%"struct.thrust::pair.487"* %1) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEdeEv(%"class.thrust::iterator_facade.557"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.557"*, align 8 store %"class.thrust::iterator_facade.557"* %this, %"class.thrust::iterator_facade.557"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.557"*, %"class.thrust::iterator_facade.557"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.555"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.557"* %this1) %call2 = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENT_9referenceERKS9_(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %call) ret %"struct.thrust::pair.487"* %call2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust20iterator_core_access11dereferenceINS_10device_ptrINS_4pairIssEEEEEENT_9referenceERKS6_(%"class.thrust::device_ptr.508"* dereferenceable(8) %f) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.565", align 8 %f.addr = alloca %"class.thrust::device_ptr.508"*, align 8 store %"class.thrust::device_ptr.508"* %f, %"class.thrust::device_ptr.508"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %0 to %"class.thrust::pointer.509"* %call = call %"struct.thrust::pair.487"* @_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE11dereferenceEv(%"class.thrust::pointer.509"* %1) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.565", %"class.thrust::device_reference.565"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::reference.566", %"class.thrust::reference.566"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::device_reference.565", %"class.thrust::device_reference.565"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::reference.566", %"class.thrust::reference.566"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive8, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive9, align 8 ret %"struct.thrust::pair.487"* %2 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZNK6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.511"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.511"*, align 8 store %"class.thrust::iterator_facade.511"* %this, %"class.thrust::iterator_facade.511"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.511"*, %"class.thrust::iterator_facade.511"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.511"* %this1 to %"class.thrust::device_ptr.508"* ret %"class.thrust::device_ptr.508"* %0 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_16device_referenceIS2_EENS_10device_ptrIS2_EEE11dereferenceEv(%"class.thrust::pointer.509"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_reference.565", align 8 %this.addr = alloca %"class.thrust::pointer.509"*, align 8 store %"class.thrust::pointer.509"* %this, %"class.thrust::pointer.509"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::pointer.509"*, %"class.thrust::pointer.509"** %this.addr, align 8 %0 = bitcast %"class.thrust::pointer.509"* %this1 to %"class.thrust::device_ptr.508"* call void @_ZN6thrust16device_referenceINS_4pairIssEEEC2ERKNS_10device_ptrIS2_EE(%"class.thrust::device_reference.565"* %retval, %"class.thrust::device_ptr.508"* dereferenceable(8) %0) %coerce.dive = getelementptr inbounds %"class.thrust::device_reference.565", %"class.thrust::device_reference.565"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::reference.566", %"class.thrust::reference.566"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive5, align 8 ret %"struct.thrust::pair.487"* %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16device_referenceINS_4pairIssEEEC2ERKNS_10device_ptrIS2_EE(%"class.thrust::device_reference.565"* %this, %"class.thrust::device_ptr.508"* dereferenceable(8) %ptr) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::device_reference.565"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr.508"*, align 8 store %"class.thrust::device_reference.565"* %this, %"class.thrust::device_reference.565"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.508"* %ptr, %"class.thrust::device_ptr.508"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::device_reference.565"*, %"class.thrust::device_reference.565"** %this.addr, align 8 %0 = bitcast %"class.thrust::device_reference.565"* %this1 to %"class.thrust::reference.566"* %1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %ptr.addr, align 8 call void @_ZN6thrust9referenceINS_4pairIssEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEC2ERKS4_(%"class.thrust::reference.566"* %0, %"class.thrust::device_ptr.508"* dereferenceable(8) %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust9referenceINS_4pairIssEENS_10device_ptrIS2_EENS_16device_referenceIS2_EEEC2ERKS4_(%"class.thrust::reference.566"* %this, %"class.thrust::device_ptr.508"* dereferenceable(8) %ptr) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.566"*, align 8 %ptr.addr = alloca %"class.thrust::device_ptr.508"*, align 8 store %"class.thrust::reference.566"* %this, %"class.thrust::reference.566"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.508"* %ptr, %"class.thrust::device_ptr.508"** %ptr.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.566"*, %"class.thrust::reference.566"** %this.addr, align 8 %m_ptr = getelementptr inbounds %"class.thrust::reference.566", %"class.thrust::reference.566"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %ptr.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %m_ptr to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail14pointer_traitsIPKNS_4pairIssEEE3getES5_(%"struct.thrust::pair.487"* %ptr) #9 comdat align 2 { entry: %ptr.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"struct.thrust::pair.487"* %ptr, %"struct.thrust::pair.487"** %ptr.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %ptr.addr, align 8, !tbaa !1 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZN6thrust20iterator_core_access11dereferenceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEENT_9referenceERKS9_(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %f) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 store %"class.thrust::detail::normal_iterator.555"* %f, %"class.thrust::detail::normal_iterator.555"** %f.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.555"* %0 to %"class.thrust::iterator_adaptor.556"* %call = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E11dereferenceEv(%"class.thrust::iterator_adaptor.556"* %1) ret %"struct.thrust::pair.487"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.555"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.557"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.557"*, align 8 store %"class.thrust::iterator_facade.557"* %this, %"class.thrust::iterator_facade.557"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.557"*, %"class.thrust::iterator_facade.557"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.557"* %this1 to %"class.thrust::detail::normal_iterator.555"* ret %"class.thrust::detail::normal_iterator.555"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E11dereferenceEv(%"class.thrust::iterator_adaptor.556"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.556"*, align 8 store %"class.thrust::iterator_adaptor.556"* %this, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.556"*, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !395 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEpLEl(%"class.thrust::iterator_facade.511"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.511"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.511"* %this, %"class.thrust::iterator_facade.511"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.511"*, %"class.thrust::iterator_facade.511"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.511"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrINS_4pairIssEEEEEEvRT_NS6_15difference_typeE(%"class.thrust::device_ptr.508"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.511"* %this1) ret %"class.thrust::device_ptr.508"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_10device_ptrINS_4pairIssEEEEEEvRT_NS6_15difference_typeE(%"class.thrust::device_ptr.508"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::device_ptr.508"* %f, %"class.thrust::device_ptr.508"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %f.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %0 to %"class.thrust::iterator_adaptor.510"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7advanceEl(%"class.thrust::iterator_adaptor.510"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7derivedEv(%"class.thrust::iterator_facade.511"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.511"*, align 8 store %"class.thrust::iterator_facade.511"* %this, %"class.thrust::iterator_facade.511"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.511"*, %"class.thrust::iterator_facade.511"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.511"* %this1 to %"class.thrust::device_ptr.508"* ret %"class.thrust::device_ptr.508"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE7advanceEl(%"class.thrust::iterator_adaptor.510"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.510"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.510"* %this, %"class.thrust::iterator_adaptor.510"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.510"*, %"class.thrust::iterator_adaptor.510"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !393 %add.ptr = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %1, i64 %0 store %"struct.thrust::pair.487"* %add.ptr, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !393 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail6systemINS_23device_malloc_allocatorINS_4pairIssEEEEEENS0_10disable_ifIXsr17has_member_systemIT_EE5valueENS0_16allocator_systemIS8_E4typeEE4typeERS8_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a) #1 comdat { entry: %retval = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.505"* %i, %"class.thrust::detail::normal_iterator.505"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.505"* %i, %"class.thrust::detail::normal_iterator.505"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.505"* %1 to %"class.thrust::iterator_facade.507"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.505"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl(%"class.thrust::iterator_facade.507"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.505"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl(%"class.thrust::iterator_facade.507"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.507"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.507"* %this, %"class.thrust::iterator_facade.507"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.507"*, %"class.thrust::iterator_facade.507"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.505"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.507"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEEEvRT_NS9_15difference_typeE(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.505"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.507"* %this1) ret %"class.thrust::detail::normal_iterator.505"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEEEEvRT_NS9_15difference_typeE(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.505"* %f, %"class.thrust::detail::normal_iterator.505"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.505"* %0 to %"class.thrust::iterator_adaptor.506"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.506"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.505"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.507"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.507"*, align 8 store %"class.thrust::iterator_facade.507"* %this, %"class.thrust::iterator_facade.507"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.507"*, %"class.thrust::iterator_facade.507"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.507"* %this1 to %"class.thrust::detail::normal_iterator.505"* ret %"class.thrust::detail::normal_iterator.505"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.506"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.506"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.506"* %this, %"class.thrust::iterator_adaptor.506"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.506"*, %"class.thrust::iterator_adaptor.506"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::device_ptr.508"* %m_iterator to %"class.thrust::iterator_facade.511"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZN6thrust15iterator_facadeINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEpLEl(%"class.thrust::iterator_facade.511"* %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIssEEEENS_10device_ptrIS4_EElEEvRT_T0_T1_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::device_ptr.508", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive4, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive5, align 8 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIssEEEENS_10device_ptrIS5_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSA_SB_T1_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %0, %"struct.thrust::pair.487"* %4, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElS7_S5_SB_SC_SE_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSG_IT5_T6_T7_T8_T9_T10_EEE4typeERKSN_RKSU_(%"class.thrust::iterator_facade.507"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.507"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.507"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.507"*, align 8 store %"class.thrust::iterator_facade.507"* %lhs, %"class.thrust::iterator_facade.507"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.507"* %rhs, %"class.thrust::iterator_facade.507"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.507"*, %"class.thrust::iterator_facade.507"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.507"* %0 to %"class.thrust::detail::normal_iterator.505"* %2 = load %"class.thrust::iterator_facade.507"*, %"class.thrust::iterator_facade.507"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.507"* %2 to %"class.thrust::detail::normal_iterator.505"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeINS_23device_malloc_allocatorINS_4pairIssEEEENS_10device_ptrIS5_EElEENS1_29enable_if_destroy_range_case2IT_T0_E4typeERSA_SB_T1_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %a, %"struct.thrust::pair.487"* %p.coerce, i64 %n) #0 comdat { entry: %p = alloca %"class.thrust::device_ptr.508", align 8 %a.addr = alloca %"class.thrust::device_malloc_allocator.503"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cuda::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce = alloca %"class.thrust::device_ptr.508", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"class.thrust::device_malloc_allocator.503"* %a, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::device_malloc_allocator.503"*, %"class.thrust::device_malloc_allocator.503"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemINS_23device_malloc_allocatorINS_4pairIssEEEEE3getERS5_(%"class.thrust::device_malloc_allocator.503"* dereferenceable(1) %0) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %ref.tmp to %"struct.thrust::detail::execution_policy_base.121"* %2 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %3 = bitcast %"class.thrust::device_ptr.508"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 %5 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive6, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_10device_ptrINS_4pairIssEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS9_21execution_policy_baseIT_EESC_T1_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, %"struct.thrust::pair.487"* %5, i64 %4) %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive9, align 8 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust10for_each_nINS_6system4cuda6detail3tagENS_10device_ptrINS_4pairIssEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RKNS9_21execution_policy_baseIT_EESC_T1_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %first = alloca %"class.thrust::device_ptr.508", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp4 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call3 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call3 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %3 = bitcast %"class.thrust::device_ptr.508"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive5 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive6, i32 0, i32 0 %5 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive7, align 8 %call8 = call %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIssEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"struct.thrust::pair.487"* %5, i64 %4) %coerce.dive9 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair.487"* %call8, %"struct.thrust::pair.487"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive13, i32 0, i32 0 %6 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive14, align 8 ret %"struct.thrust::pair.487"* %6 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIssEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first.coerce, i64 %n) #0 comdat { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %first = alloca %"class.thrust::device_ptr.508", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive6, align 8 %call = call %"struct.thrust::pair.487"* @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIssEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_EN10workaround13parallel_pathERNSD_IS4_EES8_lSB_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %0, %"struct.thrust::pair.487"* %4, i64 %3) %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive11, i32 0, i32 0 %5 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive12, align 8 ret %"struct.thrust::pair.487"* %5 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_10device_ptrINS_4pairIssEEEElNS_6detail23allocator_traits_detail5gozerEEET0_RNS2_16execution_policyIT_EESC_T1_T2_EN10workaround13parallel_pathERNSD_IS4_EES8_lSB_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first.coerce, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::device_ptr.508", align 8 %first = alloca %"class.thrust::device_ptr.508", align 8 %f = alloca %"struct.thrust::detail::allocator_traits_detail::gozer", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %narrow_n = alloca i32, align 4 %narrow_num_groups = alloca i32, align 4 %narrow_group_size = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.147", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp6 = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp7 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %num_groups = alloca i64, align 8 %group_size = alloca i64, align 8 %coerce15 = alloca %"class.thrust::tuple.152", align 8 %ref.tmp17 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp18 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp19 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp20 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp21 = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp22 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %ref.tmp28 = alloca i64, align 8 %agg.tmp.ensured = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp31 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp34 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp35 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp36 = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp37 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %ref.tmp41 = alloca i32, align 4 %agg.tmp.ensured44 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp45 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp50 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp51 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp52 = alloca %"class.thrust::device_ptr.508", align 8 %agg.tmp53 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive1, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive2, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_23allocator_traits_detail5gozerEvEC2ERKS3_(%"struct.thrust::detail::wrapped_function.146"* %wrapped_f, %"struct.thrust::detail::allocator_traits_detail::gozer"* dereferenceable(1) %f) %1 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.start(i64 4, i8* %1) #5 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %conv = trunc i64 %2 to i32 store i32 %conv, i32* %narrow_n, align 4, !tbaa !11 %3 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %narrow_num_groups, align 4, !tbaa !11 %4 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %narrow_group_size, align 4, !tbaa !11 %call = call { i32*, i32* } @_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %narrow_group_size) %coerce.dive3 = getelementptr inbounds %"class.thrust::tuple.147", %"class.thrust::tuple.147"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.148"* %coerce.dive3 to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call, 1 store i32* %9, i32** %8, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, i64 2147483647, i64 2147483647, i64 2147483647) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp5 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %11 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp6 to i8* %12 = bitcast %"class.thrust::device_ptr.508"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %13 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp7 to i8* %14 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 1, i32 1, i1 false), !tbaa.struct !41 %15 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive8 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp6, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive9, i32 0, i32 0 %16 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive10, align 8 %call11 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"struct.thrust::pair.487"* %16, i32 %15) %17 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call11, i64* %17, align 4 %call12 = call dereferenceable(16) %"class.thrust::tuple.147"* @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.147"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %18 = load i64, i64* %n.addr, align 8, !tbaa !13 %19 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %20 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %mul = mul i32 %19, %20 %call13 = call zeroext i1 @_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j(i64 %18, i32 %mul) br i1 %call13, label %if.then, label %if.else if.then: ; preds = %entry %21 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.start(i64 8, i8* %21) #5 store i64 0, i64* %num_groups, align 8, !tbaa !13 %22 = bitcast i64* %group_size to i8* call void @llvm.lifetime.start(i64 8, i8* %22) #5 store i64 0, i64* %group_size, align 8, !tbaa !13 %call14 = call { i64*, i64* } @_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %group_size) %coerce.dive16 = getelementptr inbounds %"class.thrust::tuple.152", %"class.thrust::tuple.152"* %coerce15, i32 0, i32 0 %23 = bitcast %"struct.thrust::detail::cons.153"* %coerce.dive16 to { i64*, i64* }* %24 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %23, i32 0, i32 0 %25 = extractvalue { i64*, i64* } %call14, 0 store i64* %25, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %23, i32 0, i32 1 %27 = extractvalue { i64*, i64* } %call14, 1 store i64* %27, i64** %26, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp18, i64 2147483647, i64 2147483647, i64 2147483647) %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp20 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %28, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %29 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp21 to i8* %30 = bitcast %"class.thrust::device_ptr.508"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %29, i8* %30, i64 8, i32 8, i1 false) %31 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp22 to i8* %32 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %31, i8* %32, i64 1, i32 1, i1 false), !tbaa.struct !41 %33 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive23 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp21, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive24, i32 0, i32 0 %34 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive25, align 8 %call26 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp18, %"struct.thrust::pair.487"* %34, i64 %33) %35 = bitcast %"struct.thrust::pair.82"* %ref.tmp17 to i64* store i64 %call26, i64* %35, align 4 %call27 = call dereferenceable(16) %"class.thrust::tuple.152"* @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.152"* %coerce15, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp17) %36 = load i64, i64* %n.addr, align 8, !tbaa !13 %37 = load i64, i64* %group_size, align 8, !tbaa !13 %call29 = call i64 @_ZN6thrust6detail4util9divide_riIllEET_S3_T0_(i64 %36, i64 %37) store i64 %call29, i64* %ref.tmp28, align 8, !tbaa !13 %call30 = call i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %ref.tmp28) store i64 %call30, i64* %num_groups, align 8, !tbaa !13 %38 = load i64, i64* %num_groups, align 8, !tbaa !13 %39 = load i64, i64* %group_size, align 8, !tbaa !13 %40 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %41 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %40 to %"struct.thrust::detail::execution_policy_base.121"* %call32 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %41) %42 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call32 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call33 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %42) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp31, i64 %38, i64 %39, i64 0, %struct.CUstream_st* %call33) %43 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp35 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %43, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %44 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp36 to i8* %45 = bitcast %"class.thrust::device_ptr.508"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %44, i8* %45, i64 8, i32 8, i1 false) %46 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp37 to i8* %47 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %46, i8* %47, i64 1, i32 1, i1 false), !tbaa.struct !41 %48 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive38 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp36, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive39, i32 0, i32 0 %49 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive40, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp31, %"struct.thrust::pair.487"* %49, i64 %48) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured) #5 %50 = bitcast i64* %group_size to i8* call void @llvm.lifetime.end(i64 8, i8* %50) #5 %51 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %51) #5 br label %if.end if.else: ; preds = %entry %52 = load i32, i32* %narrow_n, align 4, !tbaa !11 %53 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %call42 = call i32 @_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_(i32 %52, i32 %53) store i32 %call42, i32* %ref.tmp41, align 4, !tbaa !11 %call43 = call i32 @_ZN6thrust3minIjEET_RKS1_S3_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %ref.tmp41) store i32 %call43, i32* %narrow_num_groups, align 4, !tbaa !11 %54 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %conv46 = zext i32 %54 to i64 %55 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %conv47 = zext i32 %55 to i64 %56 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %57 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %56 to %"struct.thrust::detail::execution_policy_base.121"* %call48 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %57) %58 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call48 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call49 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %58) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp45, i64 %conv46, i64 %conv47, i64 0, %struct.CUstream_st* %call49) %59 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp51 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %59, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %60 = bitcast %"class.thrust::device_ptr.508"* %agg.tmp52 to i8* %61 = bitcast %"class.thrust::device_ptr.508"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %60, i8* %61, i64 8, i32 8, i1 false) %62 = bitcast %"struct.thrust::detail::wrapped_function.146"* %agg.tmp53 to i8* %63 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %62, i8* %63, i64 1, i32 1, i1 false), !tbaa.struct !41 %64 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive54 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %agg.tmp52, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive55, i32 0, i32 0 %65 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive56, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured44, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp45, %"struct.thrust::pair.487"* %65, i32 %64) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured44) #5 br label %if.end if.end: ; preds = %if.else, %if.then %66 = bitcast %"class.thrust::device_ptr.508"* %first to %"class.thrust::iterator_facade.511"* %67 = load i64, i64* %n.addr, align 8, !tbaa !13 %call57 = call %"struct.thrust::pair.487"* @_ZN6thrustplINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElEET_RKNS_15iterator_facadeISC_T0_T1_T2_T3_T4_EENSC_15difference_typeE(%"class.thrust::iterator_facade.511"* dereferenceable(1) %66, i64 %67) %coerce.dive58 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive59 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive58, i32 0, i32 0 %coerce.dive60 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive59, i32 0, i32 0 store %"struct.thrust::pair.487"* %call57, %"struct.thrust::pair.487"** %coerce.dive60, align 8 %68 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %68) #5 %69 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %69) #5 %70 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.end(i64 4, i8* %70) #5 %71 = bitcast %"struct.thrust::detail::wrapped_function.146"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %71) #5 %coerce.dive61 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %retval, i32 0, i32 0 %coerce.dive62 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive61, i32 0, i32 0 %coerce.dive63 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive62, i32 0, i32 0 %72 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive63, align 8 ret %"struct.thrust::pair.487"* %72 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"struct.thrust::pair.487"* %arg2.coerce, i32 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::device_ptr.508", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %arg2.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* sret %agg.tmp5, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::device_ptr.508"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %agg.tmp5) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENSB_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"struct.thrust::pair.487"* %arg2.coerce, i64 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::device_ptr.508", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %arg2.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* sret %agg.tmp5, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::device_ptr.508"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %agg.tmp5) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"struct.thrust::pair.487"* %arg2.coerce, i64 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::device_ptr.508", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %arg2.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* sret %agg.tmp5, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::device_ptr.508"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %agg.tmp5) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"struct.thrust::pair.487"* %arg2.coerce, i32 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg2 = alloca %"class.thrust::device_ptr.508", align 8 %arg3 = alloca %"struct.thrust::detail::wrapped_function.146", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %arg2, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %arg2.coerce, %"struct.thrust::pair.487"** %coerce.dive3, align 8 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* sret %agg.tmp5, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::device_ptr.508"* dereferenceable(8) %arg2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %agg.tmp5) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEEjNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEEjEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::device_ptr.508"* dereferenceable(8) %a2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %a3, i32* dereferenceable(4) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %a4.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.568", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %a2, %"class.thrust::device_ptr.508"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %a3, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8, !tbaa !7 store i32* %a4, i32** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8 %3 = load i32*, i32** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_(%"class.thrust::tuple.568"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::device_ptr.508"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i32* dereferenceable(4) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEEjNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %agg.result, %"class.thrust::tuple.568"* dereferenceable(24) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_(%"class.thrust::tuple.568"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::device_ptr.508"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %t1, %"class.thrust::device_ptr.508"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %3 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKj(%"class.thrust::tuple.568"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::device_ptr.508"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i32* dereferenceable(4) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEEjNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %this, %"class.thrust::tuple.568"* dereferenceable(24) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"*, align 8 %args.addr = alloca %"class.thrust::tuple.568"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.568"* %args, %"class.thrust::tuple.568"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.568"*, %"class.thrust::tuple.568"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.568"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.568"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEEjNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKj(%"class.thrust::tuple.568"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::device_ptr.508"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.568"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.568"* %this, %"class.thrust::tuple.568"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %t1, %"class.thrust::device_ptr.508"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.568"*, %"class.thrust::tuple.568"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.568"* %this1 to %"struct.thrust::detail::cons.569"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KjKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.569"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::device_ptr.508"* dereferenceable(8) %2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KjKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.569"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::device_ptr.508"* dereferenceable(8) %t2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t3, i32* dereferenceable(4) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.569"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t4.addr = alloca i32*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.569"* %this, %"struct.thrust::detail::cons.569"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %t2, %"class.thrust::device_ptr.508"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t3, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8, !tbaa !7 store i32* %t4, i32** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.569"*, %"struct.thrust::detail::cons.569"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.569", %"struct.thrust::detail::cons.569"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.569", %"struct.thrust::detail::cons.569"* %this1, i32 0, i32 1 %3 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8 %5 = load i32*, i32** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKS5_KS9_KjKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.570"* %tail, %"class.thrust::device_ptr.508"* dereferenceable(8) %3, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %4, i32* dereferenceable(4) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEEEC2IKS5_KS9_KjKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.570"* %this, %"class.thrust::device_ptr.508"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.570"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i32*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.570"* %this, %"struct.thrust::detail::cons.570"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.508"* %t1, %"class.thrust::device_ptr.508"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.570"*, %"struct.thrust::detail::cons.570"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.570", %"struct.thrust::detail::cons.570"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %t1.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %head to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.570", %"struct.thrust::detail::cons.570"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IjNS_9null_typeEEEEC2IKS5_KjKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.158"* %tail, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSG_23allocator_traits_detail5gozerEvEElNS_9null_typeESL_SL_SL_SL_SL_EEEEEENSD_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSE_23allocator_traits_detail5gozerEvEElEENS4_7closureIT_NS_5tupleIT0_T1_T2_T3_NS_9null_typeESQ_SQ_SQ_SQ_SQ_EEEESK_RKSM_RKSN_RKSO_RKSP_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::device_ptr.508"* dereferenceable(8) %a2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %a3, i64* dereferenceable(8) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %a4.addr = alloca i64*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.579", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %a2, %"class.thrust::device_ptr.508"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %a3, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8, !tbaa !7 store i64* %a4, i64** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %a3.addr, align 8 %3 = load i64*, i64** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_(%"class.thrust::tuple.579"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::device_ptr.508"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i64* dereferenceable(8) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEElNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %agg.result, %"class.thrust::tuple.579"* dereferenceable(32) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElEENSC_17make_tuple_mapperIT_T0_T1_T2_NS_9null_typeESM_SM_SM_SM_SM_E4typeERKSI_RKSJ_RKSK_RKSL_(%"class.thrust::tuple.579"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::device_ptr.508"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %t1, %"class.thrust::device_ptr.508"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %3 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKl(%"class.thrust::tuple.579"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::device_ptr.508"* dereferenceable(8) %1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %2, i64* dereferenceable(8) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSF_23allocator_traits_detail5gozerEvEElNS_9null_typeESK_SK_SK_SK_SK_EEEC2ES7_RKSL_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %this, %"class.thrust::tuple.579"* dereferenceable(32) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"*, align 8 %args.addr = alloca %"class.thrust::tuple.579"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.579"* %args, %"class.thrust::tuple.579"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.579"*, %"class.thrust::tuple.579"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.579"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.579"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 32, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSC_23allocator_traits_detail5gozerEvEElNS_9null_typeESH_SH_SH_SH_SH_EC2ERKS7_RKSB_RKSG_RKl(%"class.thrust::tuple.579"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::device_ptr.508"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.579"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.579"* %this, %"class.thrust::tuple.579"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %t1, %"class.thrust::device_ptr.508"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.579"*, %"class.thrust::tuple.579"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.579"* %this1 to %"struct.thrust::detail::cons.580"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KlKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.580"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::device_ptr.508"* dereferenceable(8) %2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEEEC2IKS8_KSC_KSG_KlKSH_SR_SR_SR_SR_SR_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.580"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::device_ptr.508"* dereferenceable(8) %t2, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t3, i64* dereferenceable(8) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.580"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t4.addr = alloca i64*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.580"* %this, %"struct.thrust::detail::cons.580"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %t2, %"class.thrust::device_ptr.508"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t3, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8, !tbaa !7 store i64* %t4, i64** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.580"*, %"struct.thrust::detail::cons.580"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.580", %"struct.thrust::detail::cons.580"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.580", %"struct.thrust::detail::cons.580"* %this1, i32 0, i32 1 %3 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t3.addr, align 8 %5 = load i64*, i64** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKS5_KS9_KlKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.581"* %tail, %"class.thrust::device_ptr.508"* dereferenceable(8) %3, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %4, i64* dereferenceable(8) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_10device_ptrINS_4pairIssEEEENS1_INS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEEEC2IKS5_KS9_KlKSA_SI_SI_SI_SI_SI_SI_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.581"* %this, %"class.thrust::device_ptr.508"* dereferenceable(8) %t1, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.581"*, align 8 %t1.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.146"*, align 8 %t3.addr = alloca i64*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.581"* %this, %"struct.thrust::detail::cons.581"** %this.addr, align 8, !tbaa !1 store %"class.thrust::device_ptr.508"* %t1, %"class.thrust::device_ptr.508"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.146"* %t2, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.581"*, %"struct.thrust::detail::cons.581"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.581", %"struct.thrust::detail::cons.581"* %this1, i32 0, i32 0 %0 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %t1.addr, align 8 %1 = bitcast %"class.thrust::device_ptr.508"* %head to i8* %2 = bitcast %"class.thrust::device_ptr.508"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.581", %"struct.thrust::detail::cons.581"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.146"*, %"struct.thrust::detail::wrapped_function.146"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_23allocator_traits_detail5gozerEvEENS1_IlNS_9null_typeEEEEC2IKS5_KlKS6_SC_SC_SC_SC_SC_SC_SC_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.164"* %tail, %"struct.thrust::detail::wrapped_function.146"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 40, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 40, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 40, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 40, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %task to i8* call void @llvm.lifetime.start(i64 72, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 40, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %task to i8* call void @llvm.lifetime.end(i64 72, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.582"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.578", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 40, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !401 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 72, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.583"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEElNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.578"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 40, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.587"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.584"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 72, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 72, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIssEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIssEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIssEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 72, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIssEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEElNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.586"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 32, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 32, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 32, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 32, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchESB_ST_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %task to i8* call void @llvm.lifetime.start(i64 64, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 32, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 64, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %task to i8* call void @llvm.lifetime.end(i64 64, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.571"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.567", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 32, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !403 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_ST_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 64, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.572"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSM_23allocator_traits_detail5gozerEvEEjNS_9null_typeESR_SR_SR_SR_SR_EEEEEC2ESB_ST_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.567"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 32, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.576"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.573"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 64, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE6launchEjjmP11CUstream_stSV_EN10workaround14supported_pathEjjmSY_SV_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 64, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIssEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_10device_ptrINS_4pairIssEEEENS_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS_9null_typeESS_SS_SS_SS_SS_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIssEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIssEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 64, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_10device_ptrINS0_4pairIssEEEENS0_6detail16wrapped_functionINSN_23allocator_traits_detail5gozerEvEEjNS0_9null_typeESS_SS_SS_SS_SS_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.575"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES8_EENS2_20distance_from_resultIT_T0_E4typeERKSA_RKSB_(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.505"* %f1, %"class.thrust::detail::normal_iterator.505"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.505"* %f2, %"class.thrust::detail::normal_iterator.505"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES8_EENT_15difference_typeERKS9_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 store %"class.thrust::detail::normal_iterator.505"* %f1, %"class.thrust::detail::normal_iterator.505"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.505"* %f2, %"class.thrust::detail::normal_iterator.505"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.505"* %1 to %"class.thrust::iterator_adaptor.506"* %3 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.505"* %3 to %"class.thrust::iterator_adaptor.506"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.506"* %2, %"class.thrust::iterator_adaptor.506"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E11distance_toIS7_S6_S8_S8_S8_S8_S8_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.506"* %this, %"class.thrust::iterator_adaptor.506"* dereferenceable(8) %y) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.506"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.506"*, align 8 store %"class.thrust::iterator_adaptor.506"* %this, %"class.thrust::iterator_adaptor.506"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.506"* %y, %"class.thrust::iterator_adaptor.506"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.506"*, %"class.thrust::iterator_adaptor.506"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.506"*, %"class.thrust::iterator_adaptor.506"** %y.addr, align 8 %call = call dereferenceable(8) %"class.thrust::device_ptr.508"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES6_NS_11use_defaultES8_S8_S8_S8_E4baseEv(%"class.thrust::iterator_adaptor.506"* %0) %1 = bitcast %"class.thrust::device_ptr.508"* %call to %"class.thrust::iterator_facade.511"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %this1, i32 0, i32 0 %2 = bitcast %"class.thrust::device_ptr.508"* %m_iterator to %"class.thrust::iterator_facade.511"* %call2 = call i64 @_ZN6thrustmiINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElS4_S3_S8_S9_SB_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.511"* dereferenceable(1) %1, %"class.thrust::iterator_facade.511"* dereferenceable(1) %2) ret i64 %call2 } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_10device_ptrINS_4pairIssEEEES3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElS4_S3_S8_S9_SB_lEENS_6detail20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.511"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.511"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.511"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.511"*, align 8 store %"class.thrust::iterator_facade.511"* %lhs, %"class.thrust::iterator_facade.511"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.511"* %rhs, %"class.thrust::iterator_facade.511"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.511"*, %"class.thrust::iterator_facade.511"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.511"* %0 to %"class.thrust::device_ptr.508"* %2 = load %"class.thrust::iterator_facade.511"*, %"class.thrust::iterator_facade.511"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.511"* %2 to %"class.thrust::device_ptr.508"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIssEEEES5_EENS_6detail20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::device_ptr.508"* dereferenceable(8) %1, %"class.thrust::device_ptr.508"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIssEEEES5_EENS_6detail20distance_from_resultIT_T0_E4typeERKS8_RKS9_(%"class.thrust::device_ptr.508"* dereferenceable(8) %f1, %"class.thrust::device_ptr.508"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::device_ptr.508"* %f1, %"class.thrust::device_ptr.508"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %f2, %"class.thrust::device_ptr.508"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %f1.addr, align 8 %1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIssEEEES5_EENT_15difference_typeERKS6_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr.508"* dereferenceable(8) %0, %"class.thrust::device_ptr.508"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_10device_ptrINS_4pairIssEEEES5_EENT_15difference_typeERKS6_RKT0_NS_6detail17integral_constantIbLb1EEE(%"class.thrust::device_ptr.508"* dereferenceable(8) %f1, %"class.thrust::device_ptr.508"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::device_ptr.508"*, align 8 %f2.addr = alloca %"class.thrust::device_ptr.508"*, align 8 store %"class.thrust::device_ptr.508"* %f1, %"class.thrust::device_ptr.508"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::device_ptr.508"* %f2, %"class.thrust::device_ptr.508"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %f1.addr, align 8 %2 = bitcast %"class.thrust::device_ptr.508"* %1 to %"class.thrust::iterator_adaptor.510"* %3 = load %"class.thrust::device_ptr.508"*, %"class.thrust::device_ptr.508"** %f2.addr, align 8 %4 = bitcast %"class.thrust::device_ptr.508"* %3 to %"class.thrust::iterator_adaptor.510"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE11distance_toIS4_S5_S3_S9_SA_SC_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.510"* %2, %"class.thrust::iterator_adaptor.510"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE11distance_toIS4_S5_S3_S9_SA_SC_lEElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.510"* %this, %"class.thrust::iterator_adaptor.510"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.510"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.510"*, align 8 store %"class.thrust::iterator_adaptor.510"* %this, %"class.thrust::iterator_adaptor.510"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.510"* %y, %"class.thrust::iterator_adaptor.510"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.510"*, %"class.thrust::iterator_adaptor.510"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.510"*, %"class.thrust::iterator_adaptor.510"** %y.addr, align 8 %call = call dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_10device_ptrINS_4pairIssEEEEPS3_S3_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS3_EElE4baseEv(%"class.thrust::iterator_adaptor.510"* %0) %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %this1, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !393 %sub.ptr.lhs.cast = ptrtoint %"struct.thrust::pair.487"* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %"struct.thrust::pair.487"* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 4 ret i64 %sub.ptr.div } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEESaIS3_EE5beginEv(%"class.thrust::detail::contiguous_storage.480"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.555", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.480"*, align 8 store %"class.thrust::detail::contiguous_storage.480"* %this, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.480"*, %"class.thrust::detail::contiguous_storage.480"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.480", %"class.thrust::detail::contiguous_storage.480"* %this1, i32 0, i32 1 call void @_ZN6thrust6detail15normal_iteratorIPKNS_4pairIssEEEC2IPS3_EERKNS1_IT_EEPNS0_21enable_if_convertibleIS9_S5_vE4typeE(%"class.thrust::detail::normal_iterator.555"* %retval, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %m_begin, i8* null) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.555", %"class.thrust::detail::normal_iterator.555"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %coerce.dive, i32 0, i32 0 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive2, align 8 ret %"struct.thrust::pair.487"* %0 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorIPKNS_4pairIssEEEC2IPS3_EERKNS1_IT_EEPNS0_21enable_if_convertibleIS9_S5_vE4typeE(%"class.thrust::detail::normal_iterator.555"* %this, %"class.thrust::detail::normal_iterator.484"* dereferenceable(8) %other, i8*) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 %other.addr = alloca %"class.thrust::detail::normal_iterator.484"*, align 8 %.addr = alloca i8*, align 8 %ref.tmp = alloca %"struct.thrust::pair.487"*, align 8 store %"class.thrust::detail::normal_iterator.555"* %this, %"class.thrust::detail::normal_iterator.555"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.484"* %other, %"class.thrust::detail::normal_iterator.484"** %other.addr, align 8, !tbaa !7 store i8* %0, i8** %.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %this.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.555"* %this1 to %"class.thrust::iterator_adaptor.556"* %2 = load %"class.thrust::detail::normal_iterator.484"*, %"class.thrust::detail::normal_iterator.484"** %other.addr, align 8 %3 = bitcast %"class.thrust::detail::normal_iterator.484"* %2 to %"class.thrust::iterator_adaptor.485"* %call = call dereferenceable(8) %"struct.thrust::pair.487"** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPNS_4pairIssEEEES5_NS_11use_defaultES7_S7_S7_S7_E4baseEv(%"class.thrust::iterator_adaptor.485"* %3) %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %call, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %4, %"struct.thrust::pair.487"** %ref.tmp, align 8, !tbaa !1 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_(%"class.thrust::iterator_adaptor.556"* %1, %"struct.thrust::pair.487"** dereferenceable(8) %ref.tmp) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_EC2ERKS6_(%"class.thrust::iterator_adaptor.556"* %this, %"struct.thrust::pair.487"** dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.556"*, align 8 %iter.addr = alloca %"struct.thrust::pair.487"**, align 8 store %"class.thrust::iterator_adaptor.556"* %this, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"** %iter, %"struct.thrust::pair.487"*** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.556"*, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.556"* %this1 to %"class.thrust::iterator_facade.557"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"**, %"struct.thrust::pair.487"*** %iter.addr, align 8 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %1, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %2, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !395 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.555"* %i, %"class.thrust::detail::normal_iterator.555"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %i.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::random_access_traversal_tag", align 1 store %"class.thrust::detail::normal_iterator.555"* %i, %"class.thrust::detail::normal_iterator.555"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %i.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %0, i64 %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEmEEvRT_T0_NS_27random_access_traversal_tagE(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %i, i64 %n) #0 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %i.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.555"* %i, %"class.thrust::detail::normal_iterator.555"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %1 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %i.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.555"* %1 to %"class.thrust::iterator_facade.557"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.555"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEpLEl(%"class.thrust::iterator_facade.557"* %2, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.555"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lEpLEl(%"class.thrust::iterator_facade.557"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.557"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.557"* %this, %"class.thrust::iterator_facade.557"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.557"*, %"class.thrust::iterator_facade.557"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.555"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.557"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEEvRT_NS9_15difference_typeE(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %call, i64 %0) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.555"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.557"* %this1) ret %"class.thrust::detail::normal_iterator.555"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorIPKNS_4pairIssEEEEEEvRT_NS9_15difference_typeE(%"class.thrust::detail::normal_iterator.555"* dereferenceable(8) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::detail::normal_iterator.555"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::normal_iterator.555"* %f, %"class.thrust::detail::normal_iterator.555"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::detail::normal_iterator.555"*, %"class.thrust::detail::normal_iterator.555"** %f.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.555"* %0 to %"class.thrust::iterator_adaptor.556"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.556"* %1, i64 %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.555"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS5_lE7derivedEv(%"class.thrust::iterator_facade.557"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.557"*, align 8 store %"class.thrust::iterator_facade.557"* %this, %"class.thrust::iterator_facade.557"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.557"*, %"class.thrust::iterator_facade.557"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.557"* %this1 to %"class.thrust::detail::normal_iterator.555"* ret %"class.thrust::detail::normal_iterator.555"* %0 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorIPKNS_4pairIssEEEES6_NS_11use_defaultES8_S8_S8_S8_E7advanceEl(%"class.thrust::iterator_adaptor.556"* %this, i64 %n) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.556"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_adaptor.556"* %this, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_adaptor.556"*, %"class.thrust::iterator_adaptor.556"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.556", %"class.thrust::iterator_adaptor.556"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !395 %add.ptr = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %1, i64 %0 store %"struct.thrust::pair.487"* %add.ptr, %"struct.thrust::pair.487"** %m_iterator, align 8, !tbaa !395 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsSaIsEEC2IbSaIbEEERKNS1_IT_T0_EE(%"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.74"* dereferenceable(32) %v) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 %v.addr = alloca %"class.thrust::detail::vector_base.74"*, align 8 %ref.tmp = alloca %"class.std::allocator.472", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.194", align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::vector_base.74"* %v, %"class.thrust::detail::vector_base.74"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 call void @_ZNSaIsEC2Ev(%"class.std::allocator.472"* %ref.tmp) #5 invoke void @_ZN6thrust6detail18contiguous_storageIsSaIsEEC2ERKS2_(%"class.thrust::detail::contiguous_storage.471"* %m_storage, %"class.std::allocator.472"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void bitcast (void (%"class.__gnu_cxx::new_allocator.473"*)* @_ZN9__gnu_cxx13new_allocatorIsED2Ev to void (%"class.std::allocator.472"*)*)(%"class.std::allocator.472"* %ref.tmp) #5 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 1 store i64 0, i64* %m_size, align 8, !tbaa !351 %0 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %v.addr, align 8 %call = invoke i8* @_ZNK6thrust6detail11vector_baseIbSaIbEE5beginEv(%"class.thrust::detail::vector_base.74"* %0) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %call, i8** %coerce.dive4, align 8 %1 = load %"class.thrust::detail::vector_base.74"*, %"class.thrust::detail::vector_base.74"** %v.addr, align 8 %call7 = invoke i8* @_ZNK6thrust6detail11vector_baseIbSaIbEE3endEv(%"class.thrust::detail::vector_base.74"* %1) to label %invoke.cont6 unwind label %lpad2 invoke.cont6: ; preds = %invoke.cont3 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 store i8* %call7, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive10, i32 0, i32 0 %2 = load i8*, i8** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive12, i32 0, i32 0 %3 = load i8*, i8** %coerce.dive13, align 8 invoke void @_ZN6thrust6detail11vector_baseIsSaIsEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_(%"class.thrust::detail::vector_base.470"* %this1, i8* %2, i8* %3) to label %invoke.cont14 unwind label %lpad2 invoke.cont14: ; preds = %invoke.cont6 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.__gnu_cxx::new_allocator.473"*)* @_ZN9__gnu_cxx13new_allocatorIsED2Ev to void (%"class.std::allocator.472"*)*)(%"class.std::allocator.472"* %ref.tmp) #5 br label %eh.resume lpad2: ; preds = %invoke.cont6, %invoke.cont3, %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail18contiguous_storageIsSaIsEED2Ev(%"class.thrust::detail::contiguous_storage.471"* %m_storage) #5 br label %eh.resume eh.resume: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val15 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsSaIsEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_(%"class.thrust::detail::vector_base.470"* %this, i8* %first.coerce, i8* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp6 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive7, i32 0, i32 0 %4 = load i8*, i8** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive9, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive10, align 8 call void @_ZN6thrust6detail11vector_baseIsSaIsEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.470"* %this4, i8* %4, i8* %5) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsSaIsEE10range_initINS0_15normal_iteratorIPKbEEEEvT_S9_NS_27random_access_traversal_tagE(%"class.thrust::detail::vector_base.470"* %this, i8* %first.coerce, i8* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 %new_size = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %1 = bitcast i64* %new_size to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp5 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive6, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive9, align 8 %call = call i64 @_ZN6thrust8distanceINS_6detail15normal_iteratorIPKbEEEENS_15iterator_traitsIT_E15difference_typeES7_S7_(i8* %6, i8* %7) store i64 %call, i64* %new_size, align 8, !tbaa !13 %8 = load i64, i64* %new_size, align 8, !tbaa !13 %9 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp10 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp11 to i8* %12 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 8, i32 8, i1 false) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this4, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp10, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive12, i32 0, i32 0 %13 = load i8*, i8** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp11, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive14, i32 0, i32 0 %14 = load i8*, i8** %coerce.dive15, align 8 call void @_ZN6thrust6detail11vector_baseIsSaIsEE17allocate_and_copyINS0_15normal_iteratorIPKbEEEEvmT_S9_RNS0_18contiguous_storageIsS2_EE(%"class.thrust::detail::vector_base.470"* %this4, i64 %8, i8* %13, i8* %14, %"class.thrust::detail::contiguous_storage.471"* dereferenceable(24) %m_storage) %15 = load i64, i64* %new_size, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this4, i32 0, i32 1 store i64 %15, i64* %m_size, align 8, !tbaa !351 %16 = bitcast i64* %new_size to i8* call void @llvm.lifetime.end(i64 8, i8* %16) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail11vector_baseIsSaIsEE17allocate_and_copyINS0_15normal_iteratorIPKbEEEEvmT_S9_RNS0_18contiguous_storageIsS2_EE(%"class.thrust::detail::vector_base.470"* %this, i64 %requested_size, i8* %first.coerce, i8* %last.coerce, %"class.thrust::detail::contiguous_storage.471"* dereferenceable(24) %new_storage) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 %requested_size.addr = alloca i64, align 8 %new_storage.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 %allocated_size = alloca i64, align 8 %ref.tmp = alloca i64, align 8 %ref.tmp6 = alloca i64, align 8 %ref.tmp11 = alloca %"class.std::basic_string", align 8 %ref.tmp12 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp17 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp18 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %coerce = alloca %"class.thrust::detail::normal_iterator.475", align 8 %new_storage_end = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp42 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp47 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 store i64 %requested_size, i64* %requested_size.addr, align 8, !tbaa !13 store %"class.thrust::detail::contiguous_storage.471"* %new_storage, %"class.thrust::detail::contiguous_storage.471"** %new_storage.addr, align 8, !tbaa !7 %this4 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %0 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %cmp = icmp eq i64 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %new_storage.addr, align 8 call void @_ZN6thrust6detail18contiguous_storageIsSaIsEE10deallocateEv(%"class.thrust::detail::contiguous_storage.471"* %1) br label %return if.end: ; preds = %entry %2 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.start(i64 8, i8* %2) #5 %call = call i64 @_ZNK6thrust6detail11vector_baseIsSaIsEE8capacityEv(%"class.thrust::detail::vector_base.470"* %this4) %mul = mul i64 2, %call store i64 %mul, i64* %ref.tmp, align 8, !tbaa !13 %call5 = call i64 @_ZN6thrust3maxImEET_RKS1_S3_(i64* dereferenceable(8) %requested_size.addr, i64* dereferenceable(8) %ref.tmp) store i64 %call5, i64* %allocated_size, align 8, !tbaa !13 %call7 = call i64 @_ZNK6thrust6detail11vector_baseIsSaIsEE8max_sizeEv(%"class.thrust::detail::vector_base.470"* %this4) store i64 %call7, i64* %ref.tmp6, align 8, !tbaa !13 %call8 = call i64 @_ZN6thrust3minImEET_RKS1_S3_(i64* dereferenceable(8) %allocated_size, i64* dereferenceable(8) %ref.tmp6) store i64 %call8, i64* %allocated_size, align 8, !tbaa !13 %3 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 %4 = load i64, i64* %allocated_size, align 8, !tbaa !13 %cmp9 = icmp ugt i64 %3, %4 br i1 %cmp9, label %if.then10, label %if.end16 if.then10: ; preds = %if.end %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %5 = bitcast i8* %exception to %"class.std::length_error"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp12) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp11, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.23, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp12) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then10 invoke void @_ZNSt12length_errorC1ERKSs(%"class.std::length_error"* %5, %"class.std::basic_string"* dereferenceable(8) %ref.tmp11) to label %invoke.cont14 unwind label %lpad13 invoke.cont14: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTISt12length_error to i8*), i8* bitcast (void (%"class.std::length_error"*)* @_ZNSt12length_errorD1Ev to i8*)) #15 to label %unreachable unwind label %lpad13 lpad: ; preds = %if.then10 %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 br label %ehcleanup lpad13: ; preds = %invoke.cont14, %invoke.cont %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp11) #5 br label %ehcleanup ehcleanup: ; preds = %lpad13, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp12) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup br label %ehcleanup57 if.end16: ; preds = %if.end %12 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %new_storage.addr, align 8 %13 = load i64, i64* %allocated_size, align 8, !tbaa !13 call void @_ZN6thrust6detail18contiguous_storageIsSaIsEE8allocateEm(%"class.thrust::detail::contiguous_storage.471"* %12, i64 %13) %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this4, i32 0, i32 0 %14 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp17 to i8* %17 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 8, i32 8, i1 false) %18 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %new_storage.addr, align 8 %call21 = invoke i16* @_ZN6thrust6detail18contiguous_storageIsSaIsEE5beginEv(%"class.thrust::detail::contiguous_storage.471"* %18) to label %invoke.cont20 unwind label %lpad19 invoke.cont20: ; preds = %if.end16 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp18, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive22, i32 0, i32 0 store i16* %call21, i16** %coerce.dive23, align 8 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive24, i32 0, i32 0 %19 = load i8*, i8** %coerce.dive25, align 8 %coerce.dive26 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp17, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive26, i32 0, i32 0 %20 = load i8*, i8** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp18, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive28, i32 0, i32 0 %21 = load i16*, i16** %coerce.dive29, align 8 %call31 = invoke i16* @_ZN6thrust6detail18contiguous_storageIsSaIsEE18uninitialized_copyINS0_15normal_iteratorIPKbEEEENS5_IPsEET_SB_SA_(%"class.thrust::detail::contiguous_storage.471"* %m_storage, i8* %19, i8* %20, i16* %21) to label %invoke.cont30 unwind label %lpad19 invoke.cont30: ; preds = %invoke.cont20 %coerce.dive32 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %coerce, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive32, i32 0, i32 0 store i16* %call31, i16** %coerce.dive33, align 8 br label %try.cont lpad19: ; preds = %invoke.cont20, %if.end16 %22 = landingpad { i8*, i32 } catch i8* null %23 = extractvalue { i8*, i32 } %22, 0 store i8* %23, i8** %exn.slot, align 8 %24 = extractvalue { i8*, i32 } %22, 1 store i32 %24, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad19 %exn = load i8*, i8** %exn.slot, align 8 %25 = call i8* @__cxa_begin_catch(i8* %exn) #5 %26 = bitcast %"class.thrust::detail::normal_iterator.475"* %new_storage_end to i8* call void @llvm.lifetime.start(i64 8, i8* %26) #5 %27 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %new_storage.addr, align 8 %call36 = invoke i16* @_ZN6thrust6detail18contiguous_storageIsSaIsEE5beginEv(%"class.thrust::detail::contiguous_storage.471"* %27) to label %invoke.cont35 unwind label %lpad34 invoke.cont35: ; preds = %catch %coerce.dive37 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %new_storage_end, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive37, i32 0, i32 0 store i16* %call36, i16** %coerce.dive38, align 8 %28 = load i64, i64* %requested_size.addr, align 8, !tbaa !13 invoke void @_ZN6thrust7advanceINS_6detail15normal_iteratorIPsEEmEEvRT_T0_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %new_storage_end, i64 %28) to label %invoke.cont40 unwind label %lpad39 invoke.cont40: ; preds = %invoke.cont35 %m_storage41 = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this4, i32 0, i32 0 %29 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %new_storage.addr, align 8 %call44 = invoke i16* @_ZN6thrust6detail18contiguous_storageIsSaIsEE5beginEv(%"class.thrust::detail::contiguous_storage.471"* %29) to label %invoke.cont43 unwind label %lpad39 invoke.cont43: ; preds = %invoke.cont40 %coerce.dive45 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp42, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive45, i32 0, i32 0 store i16* %call44, i16** %coerce.dive46, align 8 %30 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp47 to i8* %31 = bitcast %"class.thrust::detail::normal_iterator.475"* %new_storage_end to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %31, i64 8, i32 8, i1 false) %coerce.dive48 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp42, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive48, i32 0, i32 0 %32 = load i16*, i16** %coerce.dive49, align 8 %coerce.dive50 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp47, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive50, i32 0, i32 0 %33 = load i16*, i16** %coerce.dive51, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIsSaIsEE7destroyENS0_15normal_iteratorIPsEES6_(%"class.thrust::detail::contiguous_storage.471"* %m_storage41, i16* %32, i16* %33) to label %invoke.cont52 unwind label %lpad39 invoke.cont52: ; preds = %invoke.cont43 %34 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %new_storage.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageIsSaIsEE10deallocateEv(%"class.thrust::detail::contiguous_storage.471"* %34) to label %invoke.cont53 unwind label %lpad39 invoke.cont53: ; preds = %invoke.cont52 invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad39 lpad34: ; preds = %catch %35 = landingpad { i8*, i32 } cleanup %36 = extractvalue { i8*, i32 } %35, 0 store i8* %36, i8** %exn.slot, align 8 %37 = extractvalue { i8*, i32 } %35, 1 store i32 %37, i32* %ehselector.slot, align 4 br label %ehcleanup55 lpad39: ; preds = %invoke.cont53, %invoke.cont52, %invoke.cont43, %invoke.cont40, %invoke.cont35 %38 = landingpad { i8*, i32 } cleanup %39 = extractvalue { i8*, i32 } %38, 0 store i8* %39, i8** %exn.slot, align 8 %40 = extractvalue { i8*, i32 } %38, 1 store i32 %40, i32* %ehselector.slot, align 4 %41 = bitcast %"class.thrust::detail::normal_iterator.475"* %new_storage_end to i8* call void @llvm.lifetime.end(i64 8, i8* %41) #5 br label %ehcleanup55 ehcleanup55: ; preds = %lpad39, %lpad34 invoke void @__cxa_end_catch() to label %invoke.cont56 unwind label %terminate.lpad invoke.cont56: ; preds = %ehcleanup55 br label %ehcleanup57 try.cont: ; preds = %invoke.cont30 %42 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %42) #5 br label %return return: ; preds = %try.cont, %if.then ret void ehcleanup57: ; preds = %invoke.cont56, %cleanup.done %43 = bitcast i64* %allocated_size to i8* call void @llvm.lifetime.end(i64 8, i8* %43) #5 br label %eh.resume eh.resume: ; preds = %ehcleanup57 %exn58 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn58, 0 %lpad.val59 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val59 terminate.lpad: ; preds = %ehcleanup55 %44 = landingpad { i8*, i32 } catch i8* null %45 = extractvalue { i8*, i32 } %44, 0 call void @__clang_call_terminate(i8* %45) #13 unreachable unreachable: ; preds = %invoke.cont53, %invoke.cont14 unreachable } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIsSaIsEE8capacityEv(%"class.thrust::detail::vector_base.470"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIsSaIsEE4sizeEv(%"class.thrust::detail::contiguous_storage.471"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail11vector_baseIsSaIsEE8max_sizeEv(%"class.thrust::detail::vector_base.470"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::vector_base.470"*, align 8 store %"class.thrust::detail::vector_base.470"* %this, %"class.thrust::detail::vector_base.470"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::vector_base.470"*, %"class.thrust::detail::vector_base.470"** %this.addr, align 8 %m_storage = getelementptr inbounds %"class.thrust::detail::vector_base.470", %"class.thrust::detail::vector_base.470"* %this1, i32 0, i32 0 %call = call i64 @_ZNK6thrust6detail18contiguous_storageIsSaIsEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.471"* %m_storage) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail18contiguous_storageIsSaIsEE18uninitialized_copyINS0_15normal_iteratorIPKbEEEENS5_IPsEET_SB_SA_(%"class.thrust::detail::contiguous_storage.471"* %this, i8* %first.coerce, i8* %last.coerce, i16* %result.coerce) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.475", align 8 %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %result = alloca %"class.thrust::detail::normal_iterator.475", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 %from_system = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp7 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %result, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive4, i32 0, i32 0 store i16* %result.coerce, i16** %coerce.dive5, align 8 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 %this6 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to %"struct.thrust::execution_policy.88"* %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this6, i32 0, i32 0 %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp7 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.475"* %result to %"class.thrust::iterator_adaptor.476"* %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.476"* %6) %7 = load i16*, i16** %call, align 8, !tbaa !1 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp7, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive10, i32 0, i32 0 %9 = load i8*, i8** %coerce.dive11, align 8 %call12 = call i16* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIsENS0_15normal_iteratorIPKbEEPsEET2_RNS_16execution_policyIT_EERT0_T1_SJ_SC_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %1, %"class.std::allocator.472"* dereferenceable(1) %m_allocator, i8* %8, i8* %9, i16* %7) call void @_ZN6thrust6detail15normal_iteratorIPsEC2ES2_(%"class.thrust::detail::normal_iterator.475"* %retval, i16* %call12) %10 = bitcast %"struct.thrust::system::cpp::detail::tag"* %from_system to i8* call void @llvm.lifetime.end(i64 1, i8* %10) #5 %coerce.dive13 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %retval, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive13, i32 0, i32 0 %11 = load i16*, i16** %coerce.dive14, align 8 ret i16* %11 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageIsSaIsEE7destroyENS0_15normal_iteratorIPsEES6_(%"class.thrust::detail::contiguous_storage.471"* %this, i16* %first.coerce, i16* %last.coerce) #0 comdat align 2 { entry: %first = alloca %"class.thrust::detail::normal_iterator.475", align 8 %last = alloca %"class.thrust::detail::normal_iterator.475", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %first.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive2, i32 0, i32 0 store i16* %last.coerce, i16** %coerce.dive3, align 8 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 %this4 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this4, i32 0, i32 0 %0 = bitcast %"class.thrust::detail::normal_iterator.475"* %first to %"class.thrust::iterator_adaptor.476"* %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.476"* %0) %1 = load i16*, i16** %call, align 8, !tbaa !1 %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %last to %"class.thrust::iterator_facade.477"* %3 = bitcast %"class.thrust::detail::normal_iterator.475"* %first to %"class.thrust::iterator_facade.477"* %call5 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade.477"* dereferenceable(1) %2, %"class.thrust::iterator_facade.477"* dereferenceable(1) %3) call void @_ZN6thrust6detail13destroy_rangeISaIsEPslEEvRT_T0_T1_(%"class.std::allocator.472"* dereferenceable(1) %m_allocator, i16* %1, i64 %call5) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageIsSaIsEE8max_sizeEv(%"class.thrust::detail::contiguous_storage.471"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.471"*, align 8 store %"class.thrust::detail::contiguous_storage.471"* %this, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.471"*, %"class.thrust::detail::contiguous_storage.471"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.471", %"class.thrust::detail::contiguous_storage.471"* %this1, i32 0, i32 0 %call = call i64 @_ZN6thrust6detail16allocator_traitsISaIsEE8max_sizeERKS2_(%"class.std::allocator.472"* dereferenceable(1) %m_allocator) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail16allocator_traitsISaIsEE8max_sizeERKS2_(%"class.std::allocator.472"* dereferenceable(1) %a) #8 comdat align 2 { entry: %a.addr = alloca %"class.std::allocator.472"*, align 8 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 %call = call i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeISaIsEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS5_E9size_typeEE4typeERKS5_(%"class.std::allocator.472"* dereferenceable(1) %0) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZN6thrust6detail23allocator_traits_detail8max_sizeISaIsEEENS0_10disable_ifIXsr19has_member_max_sizeIT_EE5valueENS0_16allocator_traitsIS5_E9size_typeEE4typeERKS5_(%"class.std::allocator.472"* dereferenceable(1) %a) #1 comdat { entry: %a.addr = alloca %"class.std::allocator.472"*, align 8 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 ret i64 -1 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIsENS0_15normal_iteratorIPKbEEPsEET2_RNS_16execution_policyIT_EERT0_T1_SJ_SC_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.std::allocator.472"* dereferenceable(1) %a, i8* %first.coerce, i8* %last.coerce, i16* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.std::allocator.472"*, align 8 %result.addr = alloca i16*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 store i16* %result, i16** %result.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i16*, i16** %result.addr, align 8, !tbaa !1 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive5, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive7, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive8, align 8 %call = call i16* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIsENS0_15normal_iteratorIPKbEEPsEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESG_E4typeERNS_16execution_policyIT_EERSE_T1_SQ_SG_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"class.std::allocator.472"* dereferenceable(1) %1, i8* %7, i8* %8, i16* %6) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail23allocator_traits_detail20copy_construct_rangeINS_6system3cpp6detail3tagESaIsENS0_15normal_iteratorIPKbEEPsEENS0_10disable_ifIXsr34needs_copy_construct_via_allocatorIT0_NS0_15pointer_elementIT2_E4typeEEE5valueESG_E4typeERNS_16execution_policyIT_EERSE_T1_SQ_SG_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %from_system, %"class.std::allocator.472"* dereferenceable(1) %a, i8* %first.coerce, i8* %last.coerce, i16* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %from_system.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %a.addr = alloca %"class.std::allocator.472"*, align 8 %result.addr = alloca i16*, align 8 %ref.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %undef.agg.tmp = alloca %"struct.thrust::system::cpp::detail::tag", align 1 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::execution_policy.88"* %from_system, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8, !tbaa !7 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 store i16* %result, i16** %result.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %from_system.addr, align 8 %1 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 call void @_ZN6thrust6detail16allocator_systemISaIsEE3getERS2_(%"class.std::allocator.472"* dereferenceable(1) %1) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %ref.tmp to %"struct.thrust::execution_policy.88"* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = load i16*, i16** %result.addr, align 8, !tbaa !1 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive5, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive7, i32 0, i32 0 %9 = load i8*, i8** %coerce.dive8, align 8 %call = call i16* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagES5_NS0_15normal_iteratorIPKbEEPsEET2_RKNS_16execution_policyIT_EERKNSC_IT0_EET1_SL_SB_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %0, %"struct.thrust::execution_policy.88"* dereferenceable(1) %2, i8* %8, i8* %9, i16* %7) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6detail15two_system_copyINS_6system3cpp6detail3tagES5_NS0_15normal_iteratorIPKbEEPsEET2_RKNS_16execution_policyIT_EERKNSC_IT0_EET1_SL_SB_(%"struct.thrust::execution_policy.88"* dereferenceable(1) %system1, %"struct.thrust::execution_policy.88"* dereferenceable(1) %system2, i8* %first.coerce, i8* %last.coerce, i16* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %system1.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %system2.addr = alloca %"struct.thrust::execution_policy.88"*, align 8 %result.addr = alloca i16*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp8 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::execution_policy.88"* %system1, %"struct.thrust::execution_policy.88"** %system1.addr, align 8, !tbaa !7 store %"struct.thrust::execution_policy.88"* %system2, %"struct.thrust::execution_policy.88"** %system2.addr, align 8, !tbaa !7 store i16* %result, i16** %result.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system1.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.88"* %0 to %"struct.thrust::detail::execution_policy_base.85"* %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call4 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call4 to %"struct.thrust::execution_policy.88"* %3 = load %"struct.thrust::execution_policy.88"*, %"struct.thrust::execution_policy.88"** %system2.addr, align 8 %4 = bitcast %"struct.thrust::execution_policy.88"* %3 to %"struct.thrust::detail::execution_policy_base.85"* %call5 = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %4) %call6 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call5) %5 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call6 to %"struct.thrust::execution_policy.88"* %call7 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6system6detail7generic13select_systemINS0_3cpp6detail3tagES6_EERNS_6detail17enable_if_definedINS7_14minimum_systemIT_T0_NS7_19minimum_type_detail14any_conversionESD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_SD_EEE4typeERNS_16execution_policyISA_EERNSI_ISB_EE(%"struct.thrust::execution_policy.88"* dereferenceable(1) %2, %"struct.thrust::execution_policy.88"* dereferenceable(1) %5) %6 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call7 to %"struct.thrust::detail::execution_policy_base.85"* %7 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp8 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = load i16*, i16** %result.addr, align 8, !tbaa !1 %coerce.dive9 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive9, i32 0, i32 0 %12 = load i8*, i8** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp8, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive11, i32 0, i32 0 %13 = load i8*, i8** %coerce.dive12, align 8 %call13 = call i16* @_ZN6thrust4copyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPsEET1_RKNS5_21execution_policy_baseIT_EET0_SH_SB_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %6, i8* %12, i8* %13, i16* %11) ret i16* %call13 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust4copyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPsEET1_RKNS5_21execution_policy_baseIT_EET0_SH_SB_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i8* %first.coerce, i8* %last.coerce, i16* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %result.addr = alloca i16*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 store i16* %result, i16** %result.addr, align 8, !tbaa !1 %0 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %0) %call4 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call4 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp5 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i16*, i16** %result.addr, align 8, !tbaa !1 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive6, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 %8 = load i8*, i8** %coerce.dive9, align 8 %call10 = call i16* @_ZN6thrust6system6detail10sequential4copyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPsEET1_RNS2_16execution_policyIT_EET0_SI_SD_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %1, i8* %7, i8* %8, i16* %6) ret i16* %call10 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail10sequential4copyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPKbEEPsEET1_RNS2_16execution_policyIT_EET0_SI_SD_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), i8* %first.coerce, i8* %last.coerce, i16* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %result.addr = alloca i16*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp5 = alloca %"struct.thrust::detail::integral_constant.197", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 store i16* %result, i16** %result.addr, align 8, !tbaa !1 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i16*, i16** %result.addr, align 8, !tbaa !1 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive6, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive8, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive9, align 8 %call = call i16* @_ZN6thrust6system6detail10sequential11copy_detail4copyINS_6detail15normal_iteratorIPKbEEPsEET0_T_SC_SB_NS5_17integral_constantIbLb0EEE(i8* %6, i8* %7, i16* %5) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail10sequential11copy_detail4copyINS_6detail15normal_iteratorIPKbEEPsEET0_T_SC_SB_NS5_17integral_constantIbLb0EEE(i8* %first.coerce, i8* %last.coerce, i16* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %0 = alloca %"struct.thrust::detail::integral_constant.197", align 1 %result.addr = alloca i16*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %agg.tmp4 = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store i16* %result, i16** %result.addr, align 8, !tbaa !1 %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp4 to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i16*, i16** %result.addr, align 8, !tbaa !1 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive5, i32 0, i32 0 %6 = load i8*, i8** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp4, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive7, i32 0, i32 0 %7 = load i8*, i8** %coerce.dive8, align 8 %call = call i16* @_ZN6thrust6system6detail10sequential12general_copyINS_6detail15normal_iteratorIPKbEEPsEET0_T_SB_SA_(i8* %6, i8* %7, i16* %5) ret i16* %call } ; Function Attrs: uwtable define linkonce_odr i16* @_ZN6thrust6system6detail10sequential12general_copyINS_6detail15normal_iteratorIPKbEEPsEET0_T_SB_SA_(i8* %first.coerce, i8* %last.coerce, i16* %result) #0 comdat { entry: %first = alloca %"class.thrust::detail::normal_iterator.194", align 8 %last = alloca %"class.thrust::detail::normal_iterator.194", align 8 %result.addr = alloca i16*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.194", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %first.coerce, i8** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %last, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive2, i32 0, i32 0 store i8* %last.coerce, i8** %coerce.dive3, align 8 store i16* %result, i16** %result.addr, align 8, !tbaa !1 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to %"class.thrust::iterator_facade.196"* %1 = bitcast %"class.thrust::detail::normal_iterator.194"* %last to %"class.thrust::iterator_facade.196"* %call = call zeroext i1 @_ZN6thrustneINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lS5_bS9_SA_SB_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSC_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.196"* dereferenceable(1) %0, %"class.thrust::iterator_facade.196"* dereferenceable(1) %1) br i1 %call, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load i16*, i16** %result.addr, align 8, !tbaa !1 %3 = bitcast %"class.thrust::detail::normal_iterator.194"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %agg.tmp, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive4, i32 0, i32 0 %5 = load i8*, i8** %coerce.dive5, align 8 call void @_ZN6thrust6system6detail10sequential19general_copy_detail11iter_assignIPsNS_6detail15normal_iteratorIPKbEEEENS6_9enable_ifIXsr23reference_is_assignableIT0_T_EE5valueEvE4typeESD_SC_(i16* %2, i8* %5) br label %for.inc for.inc: ; preds = %for.body %6 = bitcast %"class.thrust::detail::normal_iterator.194"* %first to %"class.thrust::iterator_facade.196"* %call6 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.194"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEppEv(%"class.thrust::iterator_facade.196"* %6) %7 = load i16*, i16** %result.addr, align 8, !tbaa !1 %incdec.ptr = getelementptr inbounds i16, i16* %7, i32 1 store i16* %incdec.ptr, i16** %result.addr, align 8, !tbaa !1 br label %for.cond for.end: ; preds = %for.cond %8 = load i16*, i16** %result.addr, align 8, !tbaa !1 ret i16* %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system6detail10sequential19general_copy_detail11iter_assignIPsNS_6detail15normal_iteratorIPKbEEEENS6_9enable_ifIXsr23reference_is_assignableIT0_T_EE5valueEvE4typeESD_SC_(i16* %dst, i8* %src.coerce) #8 comdat { entry: %src = alloca %"class.thrust::detail::normal_iterator.194", align 8 %dst.addr = alloca i16*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.194", %"class.thrust::detail::normal_iterator.194"* %src, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.195", %"class.thrust::iterator_adaptor.195"* %coerce.dive, i32 0, i32 0 store i8* %src.coerce, i8** %coerce.dive1, align 8 store i16* %dst, i16** %dst.addr, align 8, !tbaa !1 %0 = bitcast %"class.thrust::detail::normal_iterator.194"* %src to %"class.thrust::iterator_facade.196"* %call = call dereferenceable(1) i8* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPKbEEbNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS3_lEdeEv(%"class.thrust::iterator_facade.196"* %0) %1 = load i8, i8* %call, align 1, !tbaa !75, !range !77 %tobool = trunc i8 %1 to i1 %conv = zext i1 %tobool to i16 %2 = load i16*, i16** %dst.addr, align 8, !tbaa !1 store i16 %conv, i16* %2, align 2, !tbaa !346 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail13destroy_rangeISaIsEPslEEvRT_T0_T1_(%"class.std::allocator.472"* dereferenceable(1) %a, i16* %p, i64 %n) #0 comdat { entry: %a.addr = alloca %"class.std::allocator.472"*, align 8 %p.addr = alloca i16*, align 8 %n.addr = alloca i64, align 8 store %"class.std::allocator.472"* %a, %"class.std::allocator.472"** %a.addr, align 8, !tbaa !7 store i16* %p, i16** %p.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.std::allocator.472"*, %"class.std::allocator.472"** %a.addr, align 8 %1 = load i16*, i16** %p.addr, align 8, !tbaa !1 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIsEPslEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_(%"class.std::allocator.472"* dereferenceable(1) %0, i16* %1, i64 %2) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSC_IT5_T6_T7_T8_T9_T10_EEE4typeERKSJ_RKSQ_(%"class.thrust::iterator_facade.477"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.477"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 store %"class.thrust::iterator_facade.477"* %lhs, %"class.thrust::iterator_facade.477"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.477"* %rhs, %"class.thrust::iterator_facade.477"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.477"* %0 to %"class.thrust::detail::normal_iterator.475"* %2 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.477"* %2 to %"class.thrust::detail::normal_iterator.475"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPsEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %3) ret i64 %call } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail23allocator_traits_detail13destroy_rangeISaIsEPslEENS1_29enable_if_destroy_range_case3IT_T0_E4typeERS6_S7_T1_(%"class.std::allocator.472"* dereferenceable(1), i16*, i64) #1 comdat { entry: %.addr = alloca %"class.std::allocator.472"*, align 8 %.addr1 = alloca i16*, align 8 %.addr2 = alloca i64, align 8 store %"class.std::allocator.472"* %0, %"class.std::allocator.472"** %.addr, align 8, !tbaa !7 store i16* %1, i16** %.addr1, align 8, !tbaa !1 store i64 %2, i64* %.addr2, align 8, !tbaa !13 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPsEES5_EENS2_20distance_from_resultIT_T0_E4typeERKS7_RKS8_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::detail::normal_iterator.475"* %f1, %"class.thrust::detail::normal_iterator.475"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.475"* %f2, %"class.thrust::detail::normal_iterator.475"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %f1.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPsEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_6detail15normal_iteratorIPsEES5_EENT_15difference_typeERKS6_RKT0_NS2_17integral_constantIbLb1EEE(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %f1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 %f2.addr = alloca %"class.thrust::detail::normal_iterator.475"*, align 8 store %"class.thrust::detail::normal_iterator.475"* %f1, %"class.thrust::detail::normal_iterator.475"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.475"* %f2, %"class.thrust::detail::normal_iterator.475"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %f1.addr, align 8 %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %1 to %"class.thrust::iterator_adaptor.476"* %3 = load %"class.thrust::detail::normal_iterator.475"*, %"class.thrust::detail::normal_iterator.475"** %f2.addr, align 8 %4 = bitcast %"class.thrust::detail::normal_iterator.475"* %3 to %"class.thrust::iterator_adaptor.476"* %call = call i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.476"* %2, %"class.thrust::iterator_adaptor.476"* dereferenceable(8) %4) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E11distance_toIS4_S3_S5_S5_S5_S5_S5_EElRKNS0_IT_T0_T1_T2_T3_T4_T5_EE(%"class.thrust::iterator_adaptor.476"* %this, %"class.thrust::iterator_adaptor.476"* dereferenceable(8) %y) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.476"*, align 8 %y.addr = alloca %"class.thrust::iterator_adaptor.476"*, align 8 store %"class.thrust::iterator_adaptor.476"* %this, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8, !tbaa !1 store %"class.thrust::iterator_adaptor.476"* %y, %"class.thrust::iterator_adaptor.476"** %y.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.476"*, %"class.thrust::iterator_adaptor.476"** %this.addr, align 8 %0 = load %"class.thrust::iterator_adaptor.476"*, %"class.thrust::iterator_adaptor.476"** %y.addr, align 8 %call = call dereferenceable(8) i16** @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorIPsEES3_NS_11use_defaultES5_S5_S5_S5_E4baseEv(%"class.thrust::iterator_adaptor.476"* %0) %1 = load i16*, i16** %call, align 8, !tbaa !1 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %this1, i32 0, i32 0 %2 = load i16*, i16** %m_iterator, align 8, !tbaa !357 %sub.ptr.lhs.cast = ptrtoint i16* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i16* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 2 ret i64 %sub.ptr.div } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust21exclusive_scan_by_keyINS_6system3cpp6detail3tagENS_6detail15normal_iteratorIPsEENS6_IPNS_4pairIssEEEESC_SA_NS_8equal_toIsEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SM_T1_SG_T3_T4_T5_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %exec, i16* %first1.coerce, i16* %last1.coerce, %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce, i32 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.484", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %result = alloca %"class.thrust::detail::normal_iterator.484", align 8 %init = alloca %"struct.thrust::pair.487", align 2 %binary_pred = alloca %"struct.thrust::equal_to.512", align 1 %binary_op = alloca %struct.add_pairs, align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.85"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp10 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %agg.tmp11 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp12 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %agg.tmp13 = alloca %"struct.thrust::pair.487", align 2 %agg.tmp14 = alloca %"struct.thrust::equal_to.512", align 1 %agg.tmp15 = alloca %struct.add_pairs, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive2, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive7, align 8 %0 = bitcast %"struct.thrust::pair.487"* %init to i32* store i32 %init.coerce, i32* %0, align 2 store %"struct.thrust::detail::execution_policy_base.85"* %exec, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::detail::execution_policy_base.85"*, %"struct.thrust::detail::execution_policy_base.85"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.85"* @_ZN6thrust6detail11strip_constINS_6system3cpp6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %1) %call9 = call dereferenceable(1) %"struct.thrust::system::cpp::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system3cpp6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.85"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cpp::detail::tag"* %call9 to %"struct.thrust::system::detail::sequential::execution_policy.87"* %3 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.475"* %agg.tmp10 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.475"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.484"* %agg.tmp11 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.484"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.484"* %agg.tmp12 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.484"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::pair.487"* %agg.tmp13 to i8* %12 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 4, i32 2, i1 false), !tbaa.struct !345 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive16, i32 0, i32 0 %13 = load i16*, i16** %coerce.dive17, align 8 %coerce.dive18 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %agg.tmp10, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive18, i32 0, i32 0 %14 = load i16*, i16** %coerce.dive19, align 8 %coerce.dive20 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp11, i32 0, i32 0 %coerce.dive21 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive20, i32 0, i32 0 %15 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive21, align 8 %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %agg.tmp12, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive22, i32 0, i32 0 %16 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive23, align 8 %17 = bitcast %"struct.thrust::pair.487"* %agg.tmp13 to i32* %18 = load i32, i32* %17, align 2 %call24 = call %"struct.thrust::pair.487"* @_ZN6thrust6system6detail10sequential21exclusive_scan_by_keyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPsEENS8_IPNS_4pairIssEEEESE_SC_NS_8equal_toIsEE9add_pairsEET2_RNS2_16execution_policyIT_EET0_SN_T1_SI_T3_T4_T5_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1) %2, i16* %13, i16* %14, %"struct.thrust::pair.487"* %15, %"struct.thrust::pair.487"* %16, i32 %18) %coerce.dive25 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive25, i32 0, i32 0 store %"struct.thrust::pair.487"* %call24, %"struct.thrust::pair.487"** %coerce.dive26, align 8 %coerce.dive27 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive27, i32 0, i32 0 %19 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive28, align 8 ret %"struct.thrust::pair.487"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system6detail10sequential21exclusive_scan_by_keyINS0_3cpp6detail3tagENS_6detail15normal_iteratorIPsEENS8_IPNS_4pairIssEEEESE_SC_NS_8equal_toIsEE9add_pairsEET2_RNS2_16execution_policyIT_EET0_SN_T1_SI_T3_T4_T5_(%"struct.thrust::system::detail::sequential::execution_policy.87"* dereferenceable(1), i16* %first1.coerce, i16* %last1.coerce, %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce, i32 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.484", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.475", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.484", align 8 %result = alloca %"class.thrust::detail::normal_iterator.484", align 8 %init = alloca %"struct.thrust::pair.487", align 2 %binary_pred = alloca %"struct.thrust::equal_to.512", align 1 %binary_op = alloca %struct.add_pairs, align 1 %.addr = alloca %"struct.thrust::system::detail::sequential::execution_policy.87"*, align 8 %temp_key = alloca i16, align 2 %temp_value = alloca %"struct.thrust::pair.487", align 2 %next = alloca %"struct.thrust::pair.487", align 2 %ref.tmp = alloca %"struct.thrust::pair.487", align 2 %key = alloca i16, align 2 %ref.tmp22 = alloca %"struct.thrust::pair.487", align 2 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::normal_iterator.475", %"class.thrust::detail::normal_iterator.475"* %last1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.476", %"class.thrust::iterator_adaptor.476"* %coerce.dive2, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %first2, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive4, i32 0, i32 0 store %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %result, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive6, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive7, align 8 %1 = bitcast %"struct.thrust::pair.487"* %init to i32* store i32 %init.coerce, i32* %1, align 2 store %"struct.thrust::system::detail::sequential::execution_policy.87"* %0, %"struct.thrust::system::detail::sequential::execution_policy.87"** %.addr, align 8, !tbaa !7 %2 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to %"class.thrust::iterator_facade.477"* %3 = bitcast %"class.thrust::detail::normal_iterator.475"* %last1 to %"class.thrust::iterator_facade.477"* %call = call zeroext i1 @_ZN6thrustneINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.477"* dereferenceable(1) %2, %"class.thrust::iterator_facade.477"* dereferenceable(1) %3) br i1 %call, label %if.then, label %if.end27 if.then: ; preds = %entry %4 = bitcast i16* %temp_key to i8* call void @llvm.lifetime.start(i64 2, i8* %4) #5 %5 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to %"class.thrust::iterator_facade.477"* %call9 = call dereferenceable(2) i16* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEdeEv(%"class.thrust::iterator_facade.477"* %5) %6 = load i16, i16* %call9, align 2, !tbaa !346 store i16 %6, i16* %temp_key, align 2, !tbaa !346 %7 = bitcast %"struct.thrust::pair.487"* %temp_value to i8* call void @llvm.lifetime.start(i64 4, i8* %7) #5 %8 = bitcast %"class.thrust::detail::normal_iterator.484"* %first2 to %"class.thrust::iterator_facade.486"* %call10 = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.486"* %8) %9 = bitcast %"struct.thrust::pair.487"* %temp_value to i8* %10 = bitcast %"struct.thrust::pair.487"* %call10 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 4, i32 2, i1 false), !tbaa.struct !345 %11 = bitcast %"struct.thrust::pair.487"* %next to i8* call void @llvm.lifetime.start(i64 4, i8* %11) #5 %12 = bitcast %"struct.thrust::pair.487"* %next to i8* %13 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 4, i32 2, i1 false), !tbaa.struct !345 %14 = bitcast %"class.thrust::detail::normal_iterator.484"* %result to %"class.thrust::iterator_facade.486"* %call11 = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.486"* %14) %15 = bitcast %"struct.thrust::pair.487"* %call11 to i8* %16 = bitcast %"struct.thrust::pair.487"* %next to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %16, i64 4, i32 2, i1 false), !tbaa.struct !345 %call12 = call i32 @_ZN9add_pairsclIN6thrust4pairIssEES3_EET_RKS4_RKT0_(%struct.add_pairs* %binary_op, %"struct.thrust::pair.487"* dereferenceable(4) %next, %"struct.thrust::pair.487"* dereferenceable(4) %temp_value) %17 = bitcast %"struct.thrust::pair.487"* %ref.tmp to i32* store i32 %call12, i32* %17, align 2 %18 = bitcast %"struct.thrust::pair.487"* %next to i8* %19 = bitcast %"struct.thrust::pair.487"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %18, i8* %19, i64 4, i32 2, i1 false), !tbaa.struct !345 %20 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to %"class.thrust::iterator_facade.477"* %call13 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEppEv(%"class.thrust::iterator_facade.477"* %20) %21 = bitcast %"class.thrust::detail::normal_iterator.484"* %first2 to %"class.thrust::iterator_facade.486"* %call14 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.486"* %21) %22 = bitcast %"class.thrust::detail::normal_iterator.484"* %result to %"class.thrust::iterator_facade.486"* %call15 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.486"* %22) br label %for.cond for.cond: ; preds = %for.inc, %if.then %23 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to %"class.thrust::iterator_facade.477"* %24 = bitcast %"class.thrust::detail::normal_iterator.475"* %last1 to %"class.thrust::iterator_facade.477"* %call16 = call zeroext i1 @_ZN6thrustneINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.477"* dereferenceable(1) %23, %"class.thrust::iterator_facade.477"* dereferenceable(1) %24) br i1 %call16, label %for.body, label %for.end for.body: ; preds = %for.cond %25 = bitcast i16* %key to i8* call void @llvm.lifetime.start(i64 2, i8* %25) #5 %26 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to %"class.thrust::iterator_facade.477"* %call17 = call dereferenceable(2) i16* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEdeEv(%"class.thrust::iterator_facade.477"* %26) %27 = load i16, i16* %call17, align 2, !tbaa !346 store i16 %27, i16* %key, align 2, !tbaa !346 %28 = bitcast %"class.thrust::detail::normal_iterator.484"* %first2 to %"class.thrust::iterator_facade.486"* %call18 = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.486"* %28) %29 = bitcast %"struct.thrust::pair.487"* %temp_value to i8* %30 = bitcast %"struct.thrust::pair.487"* %call18 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %29, i8* %30, i64 4, i32 2, i1 false), !tbaa.struct !345 %call19 = call zeroext i1 @_ZNK6thrust8equal_toIsEclERKsS3_(%"struct.thrust::equal_to.512"* %binary_pred, i16* dereferenceable(2) %temp_key, i16* dereferenceable(2) %key) br i1 %call19, label %if.end, label %if.then20 if.then20: ; preds = %for.body %31 = bitcast %"struct.thrust::pair.487"* %next to i8* %32 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %31, i8* %32, i64 4, i32 2, i1 false), !tbaa.struct !345 br label %if.end if.end: ; preds = %if.then20, %for.body %33 = bitcast %"class.thrust::detail::normal_iterator.484"* %result to %"class.thrust::iterator_facade.486"* %call21 = call dereferenceable(4) %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEdeEv(%"class.thrust::iterator_facade.486"* %33) %34 = bitcast %"struct.thrust::pair.487"* %call21 to i8* %35 = bitcast %"struct.thrust::pair.487"* %next to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %34, i8* %35, i64 4, i32 2, i1 false), !tbaa.struct !345 %call23 = call i32 @_ZN9add_pairsclIN6thrust4pairIssEES3_EET_RKS4_RKT0_(%struct.add_pairs* %binary_op, %"struct.thrust::pair.487"* dereferenceable(4) %next, %"struct.thrust::pair.487"* dereferenceable(4) %temp_value) %36 = bitcast %"struct.thrust::pair.487"* %ref.tmp22 to i32* store i32 %call23, i32* %36, align 2 %37 = bitcast %"struct.thrust::pair.487"* %next to i8* %38 = bitcast %"struct.thrust::pair.487"* %ref.tmp22 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %37, i8* %38, i64 4, i32 2, i1 false), !tbaa.struct !345 %39 = load i16, i16* %key, align 2, !tbaa !346 store i16 %39, i16* %temp_key, align 2, !tbaa !346 %40 = bitcast i16* %key to i8* call void @llvm.lifetime.end(i64 2, i8* %40) #5 br label %for.inc for.inc: ; preds = %if.end %41 = bitcast %"class.thrust::detail::normal_iterator.475"* %first1 to %"class.thrust::iterator_facade.477"* %call24 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.475"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslEppEv(%"class.thrust::iterator_facade.477"* %41) %42 = bitcast %"class.thrust::detail::normal_iterator.484"* %first2 to %"class.thrust::iterator_facade.486"* %call25 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.486"* %42) %43 = bitcast %"class.thrust::detail::normal_iterator.484"* %result to %"class.thrust::iterator_facade.486"* %call26 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.484"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorIPNS_4pairIssEEEES4_NS_6system3cpp6detail3tagENS_27random_access_traversal_tagERS4_lEppEv(%"class.thrust::iterator_facade.486"* %43) br label %for.cond for.end: ; preds = %for.cond %44 = bitcast %"struct.thrust::pair.487"* %next to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast %"struct.thrust::pair.487"* %temp_value to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast i16* %temp_key to i8* call void @llvm.lifetime.end(i64 2, i8* %46) #5 br label %if.end27 if.end27: ; preds = %for.end, %entry %47 = bitcast %"class.thrust::detail::normal_iterator.484"* %retval to i8* %48 = bitcast %"class.thrust::detail::normal_iterator.484"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %47, i8* %48, i64 8, i32 8, i1 false) %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.484", %"class.thrust::detail::normal_iterator.484"* %retval, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.485", %"class.thrust::iterator_adaptor.485"* %coerce.dive28, i32 0, i32 0 %49 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive29, align 8 ret %"struct.thrust::pair.487"* %49 } ; Function Attrs: inlinehint uwtable define linkonce_odr zeroext i1 @_ZN6thrustneINS_6detail15normal_iteratorIPsEEsNS_6system3cpp6detail3tagENS_27random_access_traversal_tagERslS4_sS8_S9_SA_lEEbRKNS_15iterator_facadeIT_T0_T1_T2_T3_T4_EERKNSB_IT5_T6_T7_T8_T9_T10_EE(%"class.thrust::iterator_facade.477"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.477"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.477"*, align 8 store %"class.thrust::iterator_facade.477"* %lhs, %"class.thrust::iterator_facade.477"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.477"* %rhs, %"class.thrust::iterator_facade.477"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.477"* %0 to %"class.thrust::detail::normal_iterator.475"* %2 = load %"class.thrust::iterator_facade.477"*, %"class.thrust::iterator_facade.477"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.477"* %2 to %"class.thrust::detail::normal_iterator.475"* %call = call zeroext i1 @_ZN6thrust20iterator_core_access5equalINS_6detail15normal_iteratorIPsEES5_EEbRKT_RKT0_(%"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.475"* dereferenceable(8) %3) %lnot = xor i1 %call, true ret i1 %lnot } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN9add_pairsclIN6thrust4pairIssEES3_EET_RKS4_RKT0_(%struct.add_pairs* %this, %"struct.thrust::pair.487"* dereferenceable(4) %x, %"struct.thrust::pair.487"* dereferenceable(4) %y) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.487", align 2 %this.addr = alloca %struct.add_pairs*, align 8 %x.addr = alloca %"struct.thrust::pair.487"*, align 8 %y.addr = alloca %"struct.thrust::pair.487"*, align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 store %struct.add_pairs* %this, %struct.add_pairs** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %x, %"struct.thrust::pair.487"** %x.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %y, %"struct.thrust::pair.487"** %y.addr, align 8, !tbaa !7 %this1 = load %struct.add_pairs*, %struct.add_pairs** %this.addr, align 8 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %x.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %0, i32 0, i32 0 %1 = load i16, i16* %first, align 2, !tbaa !348 %conv = sext i16 %1 to i32 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %y.addr, align 8 %first2 = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %2, i32 0, i32 0 %3 = load i16, i16* %first2, align 2, !tbaa !348 %conv3 = sext i16 %3 to i32 %add = add nsw i32 %conv, %conv3 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %x.addr, align 8 %second = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %4, i32 0, i32 1 %5 = load i16, i16* %second, align 2, !tbaa !350 %conv4 = sext i16 %5 to i32 %6 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %y.addr, align 8 %second5 = getelementptr inbounds %"struct.thrust::pair.487", %"struct.thrust::pair.487"* %6, i32 0, i32 1 %7 = load i16, i16* %second5, align 2, !tbaa !350 %conv6 = sext i16 %7 to i32 %add7 = add nsw i32 %conv4, %conv6 %call = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %add, i32 %add7) %8 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call, i64* %8, align 4 call void @_ZN6thrust4pairIssEC2IiiEERKNS0_IT_T0_EE(%"struct.thrust::pair.487"* %retval, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %9 = bitcast %"struct.thrust::pair.487"* %retval to i32* %10 = load i32, i32* %9, align 2 ret i32 %10 } ; Function Attrs: nounwind uwtable define linkonce_odr zeroext i1 @_ZNK6thrust8equal_toIsEclERKsS3_(%"struct.thrust::equal_to.512"* %this, i16* dereferenceable(2) %lhs, i16* dereferenceable(2) %rhs) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::equal_to.512"*, align 8 %lhs.addr = alloca i16*, align 8 %rhs.addr = alloca i16*, align 8 store %"struct.thrust::equal_to.512"* %this, %"struct.thrust::equal_to.512"** %this.addr, align 8, !tbaa !1 store i16* %lhs, i16** %lhs.addr, align 8, !tbaa !7 store i16* %rhs, i16** %rhs.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::equal_to.512"*, %"struct.thrust::equal_to.512"** %this.addr, align 8 %0 = load i16*, i16** %lhs.addr, align 8 %1 = load i16, i16* %0, align 2, !tbaa !346 %conv = sext i16 %1 to i32 %2 = load i16*, i16** %rhs.addr, align 8 %3 = load i16, i16* %2, align 2, !tbaa !346 %conv2 = sext i16 %3 to i32 %cmp = icmp eq i32 %conv, %conv2 ret i1 %cmp } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust21exclusive_scan_by_keyINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS6_INS7_INS_4pairIssEEEEEESD_SB_NS_8equal_toIsEE9add_pairsEET2_RKNS5_21execution_policy_baseIT_EET0_SN_T1_SH_T3_T4_T5_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i16* %first1.coerce, i16* %last1.coerce, %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce, i32 %init.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.505", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %result = alloca %"class.thrust::detail::normal_iterator.505", align 8 %init = alloca %"struct.thrust::pair.487", align 2 %binary_pred = alloca %"struct.thrust::equal_to.512", align 1 %binary_op = alloca %struct.add_pairs, align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp22 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp23 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp24 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp25 = alloca %"struct.thrust::pair.487", align 2 %agg.tmp26 = alloca %"struct.thrust::equal_to.512", align 1 %agg.tmp27 = alloca %struct.add_pairs, align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive3, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive8, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive13, i32 0, i32 0 store %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive18, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive19, align 8 %0 = bitcast %"struct.thrust::pair.487"* %init to i32* store i32 %init.coerce, i32* %0, align 2 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %1 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1) %call21 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %2 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call21 to %"struct.thrust::execution_policy.120"* %3 = bitcast %"class.thrust::detail::normal_iterator.493"* %agg.tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.493"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.493"* %agg.tmp22 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.493"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp23 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.505"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp24 to i8* %10 = bitcast %"class.thrust::detail::normal_iterator.505"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 8, i32 8, i1 false) %11 = bitcast %"struct.thrust::pair.487"* %agg.tmp25 to i8* %12 = bitcast %"struct.thrust::pair.487"* %init to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 4, i32 2, i1 false), !tbaa.struct !345 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive31, i32 0, i32 0 %13 = load i16*, i16** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp22, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive35, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive36, i32 0, i32 0 %14 = load i16*, i16** %coerce.dive37, align 8 %coerce.dive38 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp23, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive41, i32 0, i32 0 %15 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive42, align 8 %coerce.dive43 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp24, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive45, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive46, i32 0, i32 0 %16 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive47, align 8 %17 = bitcast %"struct.thrust::pair.487"* %agg.tmp25 to i32* %18 = load i32, i32* %17, align 2 %call48 = call %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic21exclusive_scan_by_keyINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS8_INS9_INS_4pairIssEEEEEESF_SD_NS_8equal_toIsEE9add_pairsEET2_RNS_16execution_policyIT_EET0_SO_T1_SJ_T3_T4_T5_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %2, i16* %13, i16* %14, %"struct.thrust::pair.487"* %15, %"struct.thrust::pair.487"* %16, i32 %18) %coerce.dive49 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive49, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive50, i32 0, i32 0 %coerce.dive52 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive51, i32 0, i32 0 %coerce.dive53 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive52, i32 0, i32 0 store %"struct.thrust::pair.487"* %call48, %"struct.thrust::pair.487"** %coerce.dive53, align 8 %coerce.dive54 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive55, i32 0, i32 0 %coerce.dive57 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive56, i32 0, i32 0 %coerce.dive58 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive57, i32 0, i32 0 %19 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive58, align 8 ret %"struct.thrust::pair.487"* %19 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic21exclusive_scan_by_keyINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS8_INS9_INS_4pairIssEEEEEESF_SD_NS_8equal_toIsEE9add_pairsEET2_RNS_16execution_policyIT_EET0_SO_T1_SJ_T3_T4_T5_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i16* %first1.coerce, i16* %last1.coerce, %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce, i32 %init.coerce) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca %"class.thrust::detail::normal_iterator.505", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %result = alloca %"class.thrust::detail::normal_iterator.505", align 8 %init = alloca %"struct.thrust::pair.487", align 2 %binary_pred = alloca %"struct.thrust::equal_to.512", align 1 %binary_op = alloca %struct.add_pairs, align 1 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n = alloca i64, align 8 %last2 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %flags = alloca %"class.thrust::detail::temporary_array", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce = alloca %"class.thrust::reference.205", align 8 %ref.tmp = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp33 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp41 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp49 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %ref.tmp50 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp63 = alloca %"struct.thrust::detail::binary_negate.589", align 1 %undef.agg.tmp = alloca %"struct.thrust::detail::binary_negate.589", align 1 %coerce86 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %temp = alloca %"class.thrust::detail::temporary_array.590", align 8 %agg.tmp92 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp93 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp102 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %ref.tmp103 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp116 = alloca %"class.thrust::detail::normal_iterator.596", align 8 %ref.tmp117 = alloca %"class.thrust::detail::normal_iterator.596", align 8 %agg.tmp130 = alloca %"struct.thrust::negate", align 1 %coerce151 = alloca %"class.thrust::detail::normal_iterator.596", align 8 %coerce158 = alloca %"class.thrust::reference.599", align 8 %agg.tmp164 = alloca %"class.thrust::zip_iterator.604", align 8 %agg.tmp165 = alloca %"class.thrust::tuple.606", align 8 %ref.tmp166 = alloca %"class.thrust::detail::normal_iterator.596", align 8 %ref.tmp173 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp187 = alloca %"class.thrust::zip_iterator.604", align 8 %ref.tmp188 = alloca %"class.thrust::zip_iterator.604", align 8 %agg.tmp189 = alloca %"class.thrust::tuple.606", align 8 %ref.tmp190 = alloca %"class.thrust::detail::normal_iterator.596", align 8 %ref.tmp197 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp215 = alloca %"class.thrust::zip_iterator.600", align 8 %agg.tmp216 = alloca %"class.thrust::tuple.602", align 8 %ref.tmp217 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp231 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608", align 1 %agg.tmp232 = alloca %struct.add_pairs, align 1 %coerce236 = alloca %"class.thrust::zip_iterator.600", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive3, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive8, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive13, i32 0, i32 0 store %"struct.thrust::pair.487"* %first2.coerce, %"struct.thrust::pair.487"** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive18, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive19, align 8 %0 = bitcast %"struct.thrust::pair.487"* %init to i32* store i32 %init.coerce, i32* %0, align 2 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %1 = bitcast i64* %n to i8* call void @llvm.lifetime.start(i64 8, i8* %1) #5 %2 = bitcast %"class.thrust::detail::normal_iterator.493"* %last1 to %"class.thrust::iterator_facade.495"* %3 = bitcast %"class.thrust::detail::normal_iterator.493"* %first1 to %"class.thrust::iterator_facade.495"* %call = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElS5_sS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.495"* dereferenceable(1) %2, %"class.thrust::iterator_facade.495"* dereferenceable(1) %3) store i64 %call, i64* %n, align 8, !tbaa !13 %4 = load i64, i64* %n, align 8, !tbaa !13 %cmp = icmp ne i64 %4, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %5 = bitcast %"class.thrust::detail::normal_iterator.505"* %last2 to i8* call void @llvm.lifetime.start(i64 8, i8* %5) #5 %6 = bitcast %"class.thrust::detail::normal_iterator.505"* %first2 to %"class.thrust::iterator_facade.507"* %7 = load i64, i64* %n, align 8, !tbaa !13 %call21 = call %"struct.thrust::pair.487"* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEET_RKNS_15iterator_facadeISF_T0_T1_T2_T3_T4_EENSF_15difference_typeE(%"class.thrust::iterator_facade.507"* dereferenceable(1) %6, i64 %7) %coerce.dive22 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %last2, i32 0, i32 0 %coerce.dive23 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive22, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive25, i32 0, i32 0 store %"struct.thrust::pair.487"* %call21, %"struct.thrust::pair.487"** %coerce.dive26, align 8 %8 = bitcast %"class.thrust::detail::temporary_array"* %flags to i8* call void @llvm.lifetime.start(i64 24, i8* %8) #5 %9 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %10 = load i64, i64* %n, align 8, !tbaa !13 call void @_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS5_EEm(%"class.thrust::detail::temporary_array"* %flags, %"struct.thrust::execution_policy.120"* dereferenceable(1) %9, i64 %10) %11 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call27 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEEixEm(%"class.thrust::detail::contiguous_storage.198"* %11, i64 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then %coerce.dive28 = getelementptr inbounds %"class.thrust::reference.205", %"class.thrust::reference.205"* %coerce, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive29, i32 0, i32 0 store i32* %call27, i32** %coerce.dive30, align 8 store i32 1, i32* %ref.tmp, align 4, !tbaa !11 %call32 = invoke dereferenceable(8) %"class.thrust::reference.205"* @_ZN6thrust9referenceIjNS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES6_EES6_EaSERKj(%"class.thrust::reference.205"* %coerce, i32* dereferenceable(4) %ref.tmp) to label %invoke.cont31 unwind label %lpad invoke.cont31: ; preds = %invoke.cont %12 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %13 = bitcast %"struct.thrust::execution_policy.120"* %12 to %"struct.thrust::detail::execution_policy_base.121"* %14 = bitcast %"class.thrust::detail::normal_iterator.493"* %agg.tmp to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.493"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::detail::normal_iterator.493"* %last1 to %"class.thrust::iterator_facade.495"* %call35 = invoke i16* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEmiEl(%"class.thrust::iterator_facade.495"* %16, i64 1) to label %invoke.cont34 unwind label %lpad invoke.cont34: ; preds = %invoke.cont31 %coerce.dive36 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp33, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive36, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive37, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive39, i32 0, i32 0 store i16* %call35, i16** %coerce.dive40, align 8 %17 = bitcast %"class.thrust::detail::normal_iterator.493"* %first1 to %"class.thrust::iterator_facade.495"* %call43 = invoke i16* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE(%"class.thrust::iterator_facade.495"* dereferenceable(1) %17, i64 1) to label %invoke.cont42 unwind label %lpad invoke.cont42: ; preds = %invoke.cont34 %coerce.dive44 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp41, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive45, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive47, i32 0, i32 0 store i16* %call43, i16** %coerce.dive48, align 8 %18 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call52 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %18) to label %invoke.cont51 unwind label %lpad invoke.cont51: ; preds = %invoke.cont42 %coerce.dive53 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp50, i32 0, i32 0 %coerce.dive54 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive53, i32 0, i32 0 %coerce.dive55 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive54, i32 0, i32 0 %coerce.dive56 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive55, i32 0, i32 0 store i32* %call52, i32** %coerce.dive56, align 8 %19 = bitcast %"class.thrust::detail::normal_iterator.199"* %ref.tmp50 to %"class.thrust::iterator_facade.201"* %call58 = invoke i32* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEET_RKNS_15iterator_facadeISE_T0_T1_T2_T3_T4_EENSE_15difference_typeE(%"class.thrust::iterator_facade.201"* dereferenceable(1) %19, i64 1) to label %invoke.cont57 unwind label %lpad invoke.cont57: ; preds = %invoke.cont51 %coerce.dive59 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp49, i32 0, i32 0 %coerce.dive60 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive59, i32 0, i32 0 %coerce.dive61 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive60, i32 0, i32 0 %coerce.dive62 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive61, i32 0, i32 0 store i32* %call58, i32** %coerce.dive62, align 8 invoke void @_ZN6thrust6detail4not2INS_8equal_toIsEEEENS0_13binary_negateIT_EERKS5_(%"struct.thrust::equal_to.512"* dereferenceable(1) %binary_pred) to label %invoke.cont64 unwind label %lpad invoke.cont64: ; preds = %invoke.cont57 %coerce.dive65 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp, i32 0, i32 0 %coerce.dive66 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive65, i32 0, i32 0 %coerce.dive67 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive66, i32 0, i32 0 %coerce.dive68 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive67, i32 0, i32 0 %coerce.dive69 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive68, i32 0, i32 0 %20 = load i16*, i16** %coerce.dive69, align 8 %coerce.dive70 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp33, i32 0, i32 0 %coerce.dive71 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive70, i32 0, i32 0 %coerce.dive72 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive71, i32 0, i32 0 %coerce.dive73 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive72, i32 0, i32 0 %coerce.dive74 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive73, i32 0, i32 0 %21 = load i16*, i16** %coerce.dive74, align 8 %coerce.dive75 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp41, i32 0, i32 0 %coerce.dive76 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive75, i32 0, i32 0 %coerce.dive77 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive76, i32 0, i32 0 %coerce.dive78 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive77, i32 0, i32 0 %coerce.dive79 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive78, i32 0, i32 0 %22 = load i16*, i16** %coerce.dive79, align 8 %coerce.dive80 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp49, i32 0, i32 0 %coerce.dive81 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive80, i32 0, i32 0 %coerce.dive82 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive81, i32 0, i32 0 %coerce.dive83 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive82, i32 0, i32 0 %23 = load i32*, i32** %coerce.dive83, align 8 %call85 = invoke i32* @_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEES9_NS6_INS_7pointerIjS4_NS_11use_defaultESB_EEEENS5_13binary_negateINS_8equal_toIsEEEEEET2_RKNS5_21execution_policy_baseIT_EET0_SO_T1_SI_T3_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %13, i16* %20, i16* %21, i16* %22, i32* %23) to label %invoke.cont84 unwind label %lpad invoke.cont84: ; preds = %invoke.cont64 %coerce.dive87 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %coerce86, i32 0, i32 0 %coerce.dive88 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive87, i32 0, i32 0 %coerce.dive89 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive88, i32 0, i32 0 %coerce.dive90 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive89, i32 0, i32 0 store i32* %call85, i32** %coerce.dive90, align 8 %24 = bitcast %"class.thrust::detail::temporary_array.590"* %temp to i8* call void @llvm.lifetime.start(i64 24, i8* %24) #5 %25 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %26 = load i64, i64* %n, align 8, !tbaa !13 invoke void @_ZN6thrust6detail15temporary_arrayINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EEm(%"class.thrust::detail::temporary_array.590"* %temp, %"struct.thrust::execution_policy.120"* dereferenceable(1) %25, i64 %26) to label %invoke.cont91 unwind label %lpad invoke.cont91: ; preds = %invoke.cont84 %27 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %28 = bitcast %"struct.thrust::execution_policy.120"* %27 to %"struct.thrust::detail::execution_policy_base.121"* %29 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp92 to i8* %30 = bitcast %"class.thrust::detail::normal_iterator.505"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %29, i8* %30, i64 8, i32 8, i1 false) %31 = bitcast %"class.thrust::detail::normal_iterator.505"* %last2 to %"class.thrust::iterator_facade.507"* %call96 = invoke %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmiEl(%"class.thrust::iterator_facade.507"* %31, i64 1) to label %invoke.cont95 unwind label %lpad94 invoke.cont95: ; preds = %invoke.cont91 %coerce.dive97 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp93, i32 0, i32 0 %coerce.dive98 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive97, i32 0, i32 0 %coerce.dive99 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive98, i32 0, i32 0 %coerce.dive100 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive99, i32 0, i32 0 %coerce.dive101 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive100, i32 0, i32 0 store %"struct.thrust::pair.487"* %call96, %"struct.thrust::pair.487"** %coerce.dive101, align 8 %32 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call105 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %32) to label %invoke.cont104 unwind label %lpad94 invoke.cont104: ; preds = %invoke.cont95 %coerce.dive106 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp103, i32 0, i32 0 %coerce.dive107 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive106, i32 0, i32 0 %coerce.dive108 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive107, i32 0, i32 0 %coerce.dive109 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive108, i32 0, i32 0 store i32* %call105, i32** %coerce.dive109, align 8 %33 = bitcast %"class.thrust::detail::normal_iterator.199"* %ref.tmp103 to %"class.thrust::iterator_facade.201"* %call111 = invoke i32* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEEjS7_NS_27random_access_traversal_tagENS_9referenceIjS9_S8_EElEET_RKNS_15iterator_facadeISE_T0_T1_T2_T3_T4_EENSE_15difference_typeE(%"class.thrust::iterator_facade.201"* dereferenceable(1) %33, i64 1) to label %invoke.cont110 unwind label %lpad94 invoke.cont110: ; preds = %invoke.cont104 %coerce.dive112 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp102, i32 0, i32 0 %coerce.dive113 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive112, i32 0, i32 0 %coerce.dive114 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive113, i32 0, i32 0 %coerce.dive115 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive114, i32 0, i32 0 store i32* %call111, i32** %coerce.dive115, align 8 %34 = bitcast %"class.thrust::detail::temporary_array.590"* %temp to %"class.thrust::detail::contiguous_storage.591"* %call119 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.591"* %34) to label %invoke.cont118 unwind label %lpad94 invoke.cont118: ; preds = %invoke.cont110 %coerce.dive120 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %ref.tmp117, i32 0, i32 0 %coerce.dive121 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive120, i32 0, i32 0 %coerce.dive122 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive121, i32 0, i32 0 %coerce.dive123 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive122, i32 0, i32 0 store %"struct.thrust::pair.487"* %call119, %"struct.thrust::pair.487"** %coerce.dive123, align 8 %35 = bitcast %"class.thrust::detail::normal_iterator.596"* %ref.tmp117 to %"class.thrust::iterator_facade.598"* %call125 = invoke %"struct.thrust::pair.487"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.598"* dereferenceable(1) %35, i64 1) to label %invoke.cont124 unwind label %lpad94 invoke.cont124: ; preds = %invoke.cont118 %coerce.dive126 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %agg.tmp116, i32 0, i32 0 %coerce.dive127 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive126, i32 0, i32 0 %coerce.dive128 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive127, i32 0, i32 0 %coerce.dive129 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive128, i32 0, i32 0 store %"struct.thrust::pair.487"* %call125, %"struct.thrust::pair.487"** %coerce.dive129, align 8 %coerce.dive131 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp92, i32 0, i32 0 %coerce.dive132 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive131, i32 0, i32 0 %coerce.dive133 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive132, i32 0, i32 0 %coerce.dive134 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive133, i32 0, i32 0 %coerce.dive135 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive134, i32 0, i32 0 %36 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive135, align 8 %coerce.dive136 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp93, i32 0, i32 0 %coerce.dive137 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive136, i32 0, i32 0 %coerce.dive138 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive137, i32 0, i32 0 %coerce.dive139 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive138, i32 0, i32 0 %coerce.dive140 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive139, i32 0, i32 0 %37 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive140, align 8 %coerce.dive141 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp102, i32 0, i32 0 %coerce.dive142 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive141, i32 0, i32 0 %coerce.dive143 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive142, i32 0, i32 0 %coerce.dive144 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive143, i32 0, i32 0 %38 = load i32*, i32** %coerce.dive144, align 8 %coerce.dive145 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %agg.tmp116, i32 0, i32 0 %coerce.dive146 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive145, i32 0, i32 0 %coerce.dive147 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive146, i32 0, i32 0 %coerce.dive148 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive147, i32 0, i32 0 %39 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive148, align 8 %call150 = invoke %"struct.thrust::pair.487"* @_ZN6thrust15replace_copy_ifINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS_6negateIjEES9_EET2_RKNS5_21execution_policy_baseIT_EET0_SQ_T1_SK_T3_RKT4_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %28, %"struct.thrust::pair.487"* %36, %"struct.thrust::pair.487"* %37, i32* %38, %"struct.thrust::pair.487"* %39, %"struct.thrust::pair.487"* dereferenceable(4) %init) to label %invoke.cont149 unwind label %lpad94 invoke.cont149: ; preds = %invoke.cont124 %coerce.dive152 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %coerce151, i32 0, i32 0 %coerce.dive153 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive152, i32 0, i32 0 %coerce.dive154 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive153, i32 0, i32 0 %coerce.dive155 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive154, i32 0, i32 0 store %"struct.thrust::pair.487"* %call150, %"struct.thrust::pair.487"** %coerce.dive155, align 8 %40 = bitcast %"class.thrust::detail::temporary_array.590"* %temp to %"class.thrust::detail::contiguous_storage.591"* %call157 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEixEm(%"class.thrust::detail::contiguous_storage.591"* %40, i64 0) to label %invoke.cont156 unwind label %lpad94 invoke.cont156: ; preds = %invoke.cont149 %coerce.dive159 = getelementptr inbounds %"class.thrust::reference.599", %"class.thrust::reference.599"* %coerce158, i32 0, i32 0 %coerce.dive160 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive159, i32 0, i32 0 %coerce.dive161 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive160, i32 0, i32 0 store %"struct.thrust::pair.487"* %call157, %"struct.thrust::pair.487"** %coerce.dive161, align 8 %call163 = invoke dereferenceable(8) %"class.thrust::reference.599"* @_ZN6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EaSERKS2_(%"class.thrust::reference.599"* %coerce158, %"struct.thrust::pair.487"* dereferenceable(4) %init) to label %invoke.cont162 unwind label %lpad94 invoke.cont162: ; preds = %invoke.cont156 %41 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %42 = bitcast %"struct.thrust::execution_policy.120"* %41 to %"struct.thrust::detail::execution_policy_base.121"* %43 = bitcast %"class.thrust::detail::temporary_array.590"* %temp to %"class.thrust::detail::contiguous_storage.591"* %call168 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.591"* %43) to label %invoke.cont167 unwind label %lpad94 invoke.cont167: ; preds = %invoke.cont162 %coerce.dive169 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %ref.tmp166, i32 0, i32 0 %coerce.dive170 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive169, i32 0, i32 0 %coerce.dive171 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive170, i32 0, i32 0 %coerce.dive172 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive171, i32 0, i32 0 store %"struct.thrust::pair.487"* %call168, %"struct.thrust::pair.487"** %coerce.dive172, align 8 %44 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call175 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %44) to label %invoke.cont174 unwind label %lpad94 invoke.cont174: ; preds = %invoke.cont167 %coerce.dive176 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp173, i32 0, i32 0 %coerce.dive177 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive176, i32 0, i32 0 %coerce.dive178 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive177, i32 0, i32 0 %coerce.dive179 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive178, i32 0, i32 0 store i32* %call175, i32** %coerce.dive179, align 8 %call181 = invoke { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESI_SI_SI_SI_SI_SI_SI_E4typeERKSG_RKSH_(%"class.thrust::detail::normal_iterator.596"* dereferenceable(8) %ref.tmp166, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %ref.tmp173) to label %invoke.cont180 unwind label %lpad94 invoke.cont180: ; preds = %invoke.cont174 %coerce.dive182 = getelementptr inbounds %"class.thrust::tuple.606", %"class.thrust::tuple.606"* %agg.tmp165, i32 0, i32 0 %45 = bitcast %"struct.thrust::detail::cons.607"* %coerce.dive182 to { %"struct.thrust::pair.487"*, i32* }* %46 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %45, i32 0, i32 0 %47 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call181, 0 store %"struct.thrust::pair.487"* %47, %"struct.thrust::pair.487"** %46, align 8 %48 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %45, i32 0, i32 1 %49 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call181, 1 store i32* %49, i32** %48, align 8 %50 = bitcast %"class.thrust::tuple.606"* %agg.tmp165 to { %"struct.thrust::pair.487"*, i32* }* %51 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %50, i32 0, i32 0 %52 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %51, align 8 %53 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %50, i32 0, i32 1 %54 = load i32*, i32** %53, align 8 %call184 = invoke { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENS_12zip_iteratorIT_EESJ_(%"struct.thrust::pair.487"* %52, i32* %54) to label %invoke.cont183 unwind label %lpad94 invoke.cont183: ; preds = %invoke.cont180 %coerce.dive185 = getelementptr inbounds %"class.thrust::zip_iterator.604", %"class.thrust::zip_iterator.604"* %agg.tmp164, i32 0, i32 0 %coerce.dive186 = getelementptr inbounds %"class.thrust::tuple.606", %"class.thrust::tuple.606"* %coerce.dive185, i32 0, i32 0 %55 = bitcast %"struct.thrust::detail::cons.607"* %coerce.dive186 to { %"struct.thrust::pair.487"*, i32* }* %56 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %55, i32 0, i32 0 %57 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call184, 0 store %"struct.thrust::pair.487"* %57, %"struct.thrust::pair.487"** %56, align 8 %58 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %55, i32 0, i32 1 %59 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call184, 1 store i32* %59, i32** %58, align 8 %60 = bitcast %"class.thrust::detail::temporary_array.590"* %temp to %"class.thrust::detail::contiguous_storage.591"* %call192 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.591"* %60) to label %invoke.cont191 unwind label %lpad94 invoke.cont191: ; preds = %invoke.cont183 %coerce.dive193 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %ref.tmp190, i32 0, i32 0 %coerce.dive194 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive193, i32 0, i32 0 %coerce.dive195 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive194, i32 0, i32 0 %coerce.dive196 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive195, i32 0, i32 0 store %"struct.thrust::pair.487"* %call192, %"struct.thrust::pair.487"** %coerce.dive196, align 8 %61 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call199 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %61) to label %invoke.cont198 unwind label %lpad94 invoke.cont198: ; preds = %invoke.cont191 %coerce.dive200 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp197, i32 0, i32 0 %coerce.dive201 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive200, i32 0, i32 0 %coerce.dive202 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive201, i32 0, i32 0 %coerce.dive203 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive202, i32 0, i32 0 store i32* %call199, i32** %coerce.dive203, align 8 %call205 = invoke { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESI_SI_SI_SI_SI_SI_SI_E4typeERKSG_RKSH_(%"class.thrust::detail::normal_iterator.596"* dereferenceable(8) %ref.tmp190, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %ref.tmp197) to label %invoke.cont204 unwind label %lpad94 invoke.cont204: ; preds = %invoke.cont198 %coerce.dive206 = getelementptr inbounds %"class.thrust::tuple.606", %"class.thrust::tuple.606"* %agg.tmp189, i32 0, i32 0 %62 = bitcast %"struct.thrust::detail::cons.607"* %coerce.dive206 to { %"struct.thrust::pair.487"*, i32* }* %63 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %62, i32 0, i32 0 %64 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call205, 0 store %"struct.thrust::pair.487"* %64, %"struct.thrust::pair.487"** %63, align 8 %65 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %62, i32 0, i32 1 %66 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call205, 1 store i32* %66, i32** %65, align 8 %67 = bitcast %"class.thrust::tuple.606"* %agg.tmp189 to { %"struct.thrust::pair.487"*, i32* }* %68 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %67, i32 0, i32 0 %69 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %68, align 8 %70 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %67, i32 0, i32 1 %71 = load i32*, i32** %70, align 8 %call208 = invoke { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENS_12zip_iteratorIT_EESJ_(%"struct.thrust::pair.487"* %69, i32* %71) to label %invoke.cont207 unwind label %lpad94 invoke.cont207: ; preds = %invoke.cont204 %coerce.dive209 = getelementptr inbounds %"class.thrust::zip_iterator.604", %"class.thrust::zip_iterator.604"* %ref.tmp188, i32 0, i32 0 %coerce.dive210 = getelementptr inbounds %"class.thrust::tuple.606", %"class.thrust::tuple.606"* %coerce.dive209, i32 0, i32 0 %72 = bitcast %"struct.thrust::detail::cons.607"* %coerce.dive210 to { %"struct.thrust::pair.487"*, i32* }* %73 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %72, i32 0, i32 0 %74 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call208, 0 store %"struct.thrust::pair.487"* %74, %"struct.thrust::pair.487"** %73, align 8 %75 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %72, i32 0, i32 1 %76 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call208, 1 store i32* %76, i32** %75, align 8 %77 = bitcast %"class.thrust::zip_iterator.604"* %ref.tmp188 to %"class.thrust::iterator_facade.605"* %78 = load i64, i64* %n, align 8, !tbaa !13 %call212 = invoke { %"struct.thrust::pair.487"*, i32* } @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE(%"class.thrust::iterator_facade.605"* dereferenceable(1) %77, i64 %78) to label %invoke.cont211 unwind label %lpad94 invoke.cont211: ; preds = %invoke.cont207 %coerce.dive213 = getelementptr inbounds %"class.thrust::zip_iterator.604", %"class.thrust::zip_iterator.604"* %agg.tmp187, i32 0, i32 0 %coerce.dive214 = getelementptr inbounds %"class.thrust::tuple.606", %"class.thrust::tuple.606"* %coerce.dive213, i32 0, i32 0 %79 = bitcast %"struct.thrust::detail::cons.607"* %coerce.dive214 to { %"struct.thrust::pair.487"*, i32* }* %80 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %79, i32 0, i32 0 %81 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call212, 0 store %"struct.thrust::pair.487"* %81, %"struct.thrust::pair.487"** %80, align 8 %82 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %79, i32 0, i32 1 %83 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call212, 1 store i32* %83, i32** %82, align 8 %84 = bitcast %"class.thrust::detail::temporary_array"* %flags to %"class.thrust::detail::contiguous_storage.198"* %call219 = invoke i32* @_ZN6thrust6detail18contiguous_storageIjNS0_18no_throw_allocatorINS0_19temporary_allocatorIjNS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.198"* %84) to label %invoke.cont218 unwind label %lpad94 invoke.cont218: ; preds = %invoke.cont211 %coerce.dive220 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %ref.tmp217, i32 0, i32 0 %coerce.dive221 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive220, i32 0, i32 0 %coerce.dive222 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive221, i32 0, i32 0 %coerce.dive223 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive222, i32 0, i32 0 store i32* %call219, i32** %coerce.dive223, align 8 %call225 = invoke { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_E4typeERKSH_RKSI_(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %result, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %ref.tmp217) to label %invoke.cont224 unwind label %lpad94 invoke.cont224: ; preds = %invoke.cont218 %coerce.dive226 = getelementptr inbounds %"class.thrust::tuple.602", %"class.thrust::tuple.602"* %agg.tmp216, i32 0, i32 0 %85 = bitcast %"struct.thrust::detail::cons.603"* %coerce.dive226 to { %"struct.thrust::pair.487"*, i32* }* %86 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %85, i32 0, i32 0 %87 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call225, 0 store %"struct.thrust::pair.487"* %87, %"struct.thrust::pair.487"** %86, align 8 %88 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %85, i32 0, i32 1 %89 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call225, 1 store i32* %89, i32** %88, align 8 %90 = bitcast %"class.thrust::tuple.602"* %agg.tmp216 to { %"struct.thrust::pair.487"*, i32* }* %91 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %90, i32 0, i32 0 %92 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %91, align 8 %93 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %90, i32 0, i32 1 %94 = load i32*, i32** %93, align 8 %call228 = invoke { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS_12zip_iteratorIT_EESK_(%"struct.thrust::pair.487"* %92, i32* %94) to label %invoke.cont227 unwind label %lpad94 invoke.cont227: ; preds = %invoke.cont224 %coerce.dive229 = getelementptr inbounds %"class.thrust::zip_iterator.600", %"class.thrust::zip_iterator.600"* %agg.tmp215, i32 0, i32 0 %coerce.dive230 = getelementptr inbounds %"class.thrust::tuple.602", %"class.thrust::tuple.602"* %coerce.dive229, i32 0, i32 0 %95 = bitcast %"struct.thrust::detail::cons.603"* %coerce.dive230 to { %"struct.thrust::pair.487"*, i32* }* %96 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %95, i32 0, i32 0 %97 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call228, 0 store %"struct.thrust::pair.487"* %97, %"struct.thrust::pair.487"** %96, align 8 %98 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %95, i32 0, i32 1 %99 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call228, 1 store i32* %99, i32** %98, align 8 invoke void @_ZN6thrust6system6detail7generic6detail22segmented_scan_functorINS_4pairIssEEj9add_pairsEC2ES7_(%"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"* %agg.tmp231) to label %invoke.cont233 unwind label %lpad94 invoke.cont233: ; preds = %invoke.cont227 %100 = bitcast %"class.thrust::zip_iterator.604"* %agg.tmp164 to { %"struct.thrust::pair.487"*, i32* }* %101 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %100, i32 0, i32 0 %102 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %101, align 8 %103 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %100, i32 0, i32 1 %104 = load i32*, i32** %103, align 8 %105 = bitcast %"class.thrust::zip_iterator.604"* %agg.tmp187 to { %"struct.thrust::pair.487"*, i32* }* %106 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %105, i32 0, i32 0 %107 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %106, align 8 %108 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %105, i32 0, i32 1 %109 = load i32*, i32** %108, align 8 %call235 = invoke { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust14inclusive_scanINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RKNS7_21execution_policy_baseIT_EET0_S11_SV_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %42, %"struct.thrust::pair.487"* %102, i32* %104, %"struct.thrust::pair.487"* %107, i32* %109, %"class.thrust::zip_iterator.600"* byval align 8 %agg.tmp215) to label %invoke.cont234 unwind label %lpad94 invoke.cont234: ; preds = %invoke.cont233 %coerce.dive237 = getelementptr inbounds %"class.thrust::zip_iterator.600", %"class.thrust::zip_iterator.600"* %coerce236, i32 0, i32 0 %coerce.dive238 = getelementptr inbounds %"class.thrust::tuple.602", %"class.thrust::tuple.602"* %coerce.dive237, i32 0, i32 0 %110 = bitcast %"struct.thrust::detail::cons.603"* %coerce.dive238 to { %"struct.thrust::pair.487"*, i32* }* %111 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %110, i32 0, i32 0 %112 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call235, 0 store %"struct.thrust::pair.487"* %112, %"struct.thrust::pair.487"** %111, align 8 %113 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %110, i32 0, i32 1 %114 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call235, 1 store i32* %114, i32** %113, align 8 call void @_ZN6thrust6detail15temporary_arrayINS_4pairIssEENS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.590"* %temp) #5 %115 = bitcast %"class.thrust::detail::temporary_array.590"* %temp to i8* call void @llvm.lifetime.end(i64 24, i8* %115) #5 call void @_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array"* %flags) #5 %116 = bitcast %"class.thrust::detail::temporary_array"* %flags to i8* call void @llvm.lifetime.end(i64 24, i8* %116) #5 %117 = bitcast %"class.thrust::detail::normal_iterator.505"* %last2 to i8* call void @llvm.lifetime.end(i64 8, i8* %117) #5 br label %if.end lpad: ; preds = %invoke.cont84, %invoke.cont64, %invoke.cont57, %invoke.cont51, %invoke.cont42, %invoke.cont34, %invoke.cont31, %invoke.cont, %if.then %118 = landingpad { i8*, i32 } cleanup %119 = extractvalue { i8*, i32 } %118, 0 store i8* %119, i8** %exn.slot, align 8 %120 = extractvalue { i8*, i32 } %118, 1 store i32 %120, i32* %ehselector.slot, align 4 br label %ehcleanup lpad94: ; preds = %invoke.cont233, %invoke.cont227, %invoke.cont224, %invoke.cont218, %invoke.cont211, %invoke.cont207, %invoke.cont204, %invoke.cont198, %invoke.cont191, %invoke.cont183, %invoke.cont180, %invoke.cont174, %invoke.cont167, %invoke.cont162, %invoke.cont156, %invoke.cont149, %invoke.cont124, %invoke.cont118, %invoke.cont110, %invoke.cont104, %invoke.cont95, %invoke.cont91 %121 = landingpad { i8*, i32 } cleanup %122 = extractvalue { i8*, i32 } %121, 0 store i8* %122, i8** %exn.slot, align 8 %123 = extractvalue { i8*, i32 } %121, 1 store i32 %123, i32* %ehselector.slot, align 4 call void @_ZN6thrust6detail15temporary_arrayINS_4pairIssEENS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.590"* %temp) #5 %124 = bitcast %"class.thrust::detail::temporary_array.590"* %temp to i8* call void @llvm.lifetime.end(i64 24, i8* %124) #5 br label %ehcleanup ehcleanup: ; preds = %lpad94, %lpad call void @_ZN6thrust6detail15temporary_arrayIjNS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array"* %flags) #5 %125 = bitcast %"class.thrust::detail::temporary_array"* %flags to i8* call void @llvm.lifetime.end(i64 24, i8* %125) #5 %126 = bitcast %"class.thrust::detail::normal_iterator.505"* %last2 to i8* call void @llvm.lifetime.end(i64 8, i8* %126) #5 %127 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %127) #5 br label %eh.resume if.end: ; preds = %invoke.cont234, %entry %128 = bitcast %"class.thrust::detail::normal_iterator.505"* %result to %"class.thrust::iterator_facade.507"* %129 = load i64, i64* %n, align 8, !tbaa !13 %call241 = call %"struct.thrust::pair.487"* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEET_RKNS_15iterator_facadeISF_T0_T1_T2_T3_T4_EENSF_15difference_typeE(%"class.thrust::iterator_facade.507"* dereferenceable(1) %128, i64 %129) %coerce.dive242 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive243 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive242, i32 0, i32 0 %coerce.dive244 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive243, i32 0, i32 0 %coerce.dive245 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive244, i32 0, i32 0 %coerce.dive246 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive245, i32 0, i32 0 store %"struct.thrust::pair.487"* %call241, %"struct.thrust::pair.487"** %coerce.dive246, align 8 %130 = bitcast i64* %n to i8* call void @llvm.lifetime.end(i64 8, i8* %130) #5 %coerce.dive248 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive249 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive248, i32 0, i32 0 %coerce.dive250 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive249, i32 0, i32 0 %coerce.dive251 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive250, i32 0, i32 0 %coerce.dive252 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive251, i32 0, i32 0 %131 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive252, align 8 ret %"struct.thrust::pair.487"* %131 eh.resume: ; preds = %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val253 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val253 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEET_RKNS_15iterator_facadeISF_T0_T1_T2_T3_T4_EENSF_15difference_typeE(%"class.thrust::iterator_facade.507"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.505", align 8 %i.addr = alloca %"class.thrust::iterator_facade.507"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.505", align 8 store %"class.thrust::iterator_facade.507"* %i, %"class.thrust::iterator_facade.507"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.505"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.507"*, %"class.thrust::iterator_facade.507"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.507"* %1 to %"class.thrust::detail::normal_iterator.505"* %3 = bitcast %"class.thrust::detail::normal_iterator.505"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.505"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.505"* %tmp to %"class.thrust::iterator_facade.507"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.505"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEpLEl(%"class.thrust::iterator_facade.507"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.505"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.505"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.505"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive3, i32 0, i32 0 %10 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 ret %"struct.thrust::pair.487"* %10 } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEES9_NS6_INS_7pointerIjS4_NS_11use_defaultESB_EEEENS5_13binary_negateINS_8equal_toIsEEEEEET2_RKNS5_21execution_policy_baseIT_EET0_SO_T1_SI_T3_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i16* %first1.coerce, i16* %last1.coerce, i16* %first2.coerce, i32* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.199", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %result = alloca %"class.thrust::detail::normal_iterator.199", align 8 %op = alloca %"struct.thrust::detail::binary_negate.589", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp20 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %agg.tmp22 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp23 = alloca %"struct.thrust::detail::binary_negate.589", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive3, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive8, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive13, i32 0, i32 0 store i16* %first2.coerce, i16** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive17, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive18, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call19 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call19 to %"struct.thrust::execution_policy.120"* %2 = bitcast %"class.thrust::detail::normal_iterator.493"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.493"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.493"* %agg.tmp20 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.493"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.493"* %agg.tmp21 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.493"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::detail::normal_iterator.199"* %agg.tmp22 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.199"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"struct.thrust::detail::binary_negate.589"* %agg.tmp23 to i8* %11 = bitcast %"struct.thrust::detail::binary_negate.589"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 1, i32 1, i1 false), !tbaa.struct !41 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive27, i32 0, i32 0 %12 = load i16*, i16** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp20, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive31, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive32, i32 0, i32 0 %13 = load i16*, i16** %coerce.dive33, align 8 %coerce.dive34 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %agg.tmp21, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive35, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive36, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive37, i32 0, i32 0 %14 = load i16*, i16** %coerce.dive38, align 8 %coerce.dive39 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp22, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive40, i32 0, i32 0 %coerce.dive42 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive41, i32 0, i32 0 %15 = load i32*, i32** %coerce.dive42, align 8 %call43 = call i32* @_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS6_NS_11use_defaultESD_EEEENS7_13binary_negateINS_8equal_toIsEEEEEET2_RNS_16execution_policyIT_EET0_SP_T1_SK_T3_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, i16* %12, i16* %13, i16* %14, i32* %15) %coerce.dive44 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive45, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive46, i32 0, i32 0 store i32* %call43, i32** %coerce.dive47, align 8 %coerce.dive48 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive49, i32 0, i32 0 %coerce.dive51 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive50, i32 0, i32 0 %16 = load i32*, i32** %coerce.dive51, align 8 ret i32* %16 } ; Function Attrs: uwtable define linkonce_odr i16* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEmiEl(%"class.thrust::iterator_facade.495"* %this, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.493", align 8 %this.addr = alloca %"class.thrust::iterator_facade.495"*, align 8 %n.addr = alloca i64, align 8 %result = alloca %"class.thrust::detail::normal_iterator.493", align 8 store %"class.thrust::iterator_facade.495"* %this, %"class.thrust::iterator_facade.495"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.495"*, %"class.thrust::iterator_facade.495"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.493"* %result to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.495"* %this1) %1 = bitcast %"class.thrust::detail::normal_iterator.493"* %result to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.493"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.493"* %result to %"class.thrust::iterator_facade.495"* %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEmIEl(%"class.thrust::iterator_facade.495"* %3, i64 %4) %5 = bitcast %"class.thrust::detail::normal_iterator.493"* %retval to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.493"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.493"* %result to i8* call void @llvm.lifetime.end(i64 8, i8* %7) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive5, i32 0, i32 0 %8 = load i16*, i16** %coerce.dive6, align 8 ret i16* %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr i16* @_ZN6thrustplINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEET_RKNS_15iterator_facadeISD_T0_T1_T2_T3_T4_EENSD_15difference_typeE(%"class.thrust::iterator_facade.495"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.493", align 8 %i.addr = alloca %"class.thrust::iterator_facade.495"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.493", align 8 store %"class.thrust::iterator_facade.495"* %i, %"class.thrust::iterator_facade.495"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.493"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.495"*, %"class.thrust::iterator_facade.495"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.495"* %1 to %"class.thrust::detail::normal_iterator.493"* %3 = bitcast %"class.thrust::detail::normal_iterator.493"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.493"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.493"* %tmp to %"class.thrust::iterator_facade.495"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEpLEl(%"class.thrust::iterator_facade.495"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.493"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.493"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.493"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive3, i32 0, i32 0 %10 = load i16*, i16** %coerce.dive4, align 8 ret i16* %10 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail4not2INS_8equal_toIsEEEENS0_13binary_negateIT_EERKS5_(%"struct.thrust::equal_to.512"* dereferenceable(1) %pred) #0 comdat { entry: %retval = alloca %"struct.thrust::detail::binary_negate.589", align 1 %pred.addr = alloca %"struct.thrust::equal_to.512"*, align 8 store %"struct.thrust::equal_to.512"* %pred, %"struct.thrust::equal_to.512"** %pred.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::equal_to.512"*, %"struct.thrust::equal_to.512"** %pred.addr, align 8 call void @_ZN6thrust6detail13binary_negateINS_8equal_toIsEEEC2ERKS3_(%"struct.thrust::detail::binary_negate.589"* %retval, %"struct.thrust::equal_to.512"* dereferenceable(1) %0) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EEm(%"class.thrust::detail::temporary_array.590"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system, i64 %n) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_array.590"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.thrust::detail::no_throw_allocator.592", align 8 %ref.tmp2 = alloca %"class.thrust::detail::temporary_allocator.593", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::temporary_array.590"* %this, %"class.thrust::detail::temporary_array.590"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %system, %"struct.thrust::execution_policy.120"** %system.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::temporary_array.590"*, %"class.thrust::detail::temporary_array.590"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array.590"* %this1 to %"class.thrust::detail::contiguous_storage.591"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %2 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EE(%"class.thrust::detail::temporary_allocator.593"* %ref.tmp2, %"struct.thrust::execution_policy.120"* dereferenceable(1) %2) invoke void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEC2ERKS9_(%"struct.thrust::detail::no_throw_allocator.592"* %ref.tmp, %"class.thrust::detail::temporary_allocator.593"* dereferenceable(8) %ref.tmp2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEC2EmRKSB_(%"class.thrust::detail::contiguous_storage.591"* %0, i64 %1, %"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %ref.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont call void bitcast (void (%"class.thrust::detail::tagged_allocator.594"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.592"*)*)(%"struct.thrust::detail::no_throw_allocator.592"* %ref.tmp) #5 call void bitcast (void (%"class.thrust::detail::tagged_allocator.594"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"class.thrust::detail::temporary_allocator.593"*)*)(%"class.thrust::detail::temporary_allocator.593"* %ref.tmp2) #5 %3 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_4pairIssEENS0_15temporary_arrayIS4_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_(%"class.thrust::detail::temporary_array.590"* dereferenceable(24) %this1, i64 %3) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %invoke.cont4 ret void lpad: ; preds = %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont %7 = landingpad { i8*, i32 } cleanup %8 = extractvalue { i8*, i32 } %7, 0 store i8* %8, i8** %exn.slot, align 8 %9 = extractvalue { i8*, i32 } %7, 1 store i32 %9, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator.594"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.592"*)*)(%"struct.thrust::detail::no_throw_allocator.592"* %ref.tmp) #5 br label %ehcleanup ehcleanup: ; preds = %lpad3, %lpad call void bitcast (void (%"class.thrust::detail::tagged_allocator.594"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"class.thrust::detail::temporary_allocator.593"*)*)(%"class.thrust::detail::temporary_allocator.593"* %ref.tmp2) #5 br label %eh.resume lpad5: ; preds = %invoke.cont4 %10 = landingpad { i8*, i32 } cleanup %11 = extractvalue { i8*, i32 } %10, 0 store i8* %11, i8** %exn.slot, align 8 %12 = extractvalue { i8*, i32 } %10, 1 store i32 %12, i32* %ehselector.slot, align 4 %13 = bitcast %"class.thrust::detail::temporary_array.590"* %this1 to %"class.thrust::detail::contiguous_storage.591"* call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.591"* %13) #5 br label %eh.resume eh.resume: ; preds = %lpad5, %ehcleanup %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val8 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val8 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust15replace_copy_ifINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS_6negateIjEES9_EET2_RKNS5_21execution_policy_baseIT_EET0_SQ_T1_SK_T3_RKT4_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce, i32* %stencil.coerce, %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"* dereferenceable(4) %new_value) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.596", align 8 %first = alloca %"class.thrust::detail::normal_iterator.505", align 8 %last = alloca %"class.thrust::detail::normal_iterator.505", align 8 %stencil = alloca %"class.thrust::detail::normal_iterator.199", align 8 %result = alloca %"class.thrust::detail::normal_iterator.596", align 8 %pred = alloca %"struct.thrust::negate", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %new_value.addr = alloca %"struct.thrust::pair.487"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp19 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp20 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.596", align 8 %agg.tmp22 = alloca %"struct.thrust::negate", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %stencil, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive12, i32 0, i32 0 store i32* %stencil.coerce, i32** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %result, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive16, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive17, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %new_value, %"struct.thrust::pair.487"** %new_value.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call18 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call18 to %"struct.thrust::execution_policy.120"* %2 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::normal_iterator.505"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %4 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp19 to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.505"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.199"* %agg.tmp20 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.199"* %stencil to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::detail::normal_iterator.596"* %agg.tmp21 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.596"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %new_value.addr, align 8 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive26, i32 0, i32 0 %11 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp19, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive31, i32 0, i32 0 %12 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp20, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive35, i32 0, i32 0 %13 = load i32*, i32** %coerce.dive36, align 8 %coerce.dive37 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %agg.tmp21, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive37, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive39, i32 0, i32 0 %14 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive40, align 8 %call41 = call %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic15replace_copy_ifINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS_6negateIjEESB_EET2_RNS_16execution_policyIT_EET0_SR_T1_SM_T3_RKT4_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, %"struct.thrust::pair.487"* %11, %"struct.thrust::pair.487"* %12, i32* %13, %"struct.thrust::pair.487"* %14, %"struct.thrust::pair.487"* dereferenceable(4) %10) %coerce.dive42 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %retval, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive42, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive44, i32 0, i32 0 store %"struct.thrust::pair.487"* %call41, %"struct.thrust::pair.487"** %coerce.dive45, align 8 %coerce.dive46 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %retval, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive48, i32 0, i32 0 %15 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive49, align 8 ret %"struct.thrust::pair.487"* %15 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmiEl(%"class.thrust::iterator_facade.507"* %this, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.505", align 8 %this.addr = alloca %"class.thrust::iterator_facade.507"*, align 8 %n.addr = alloca i64, align 8 %result = alloca %"class.thrust::detail::normal_iterator.505", align 8 store %"class.thrust::iterator_facade.507"* %this, %"class.thrust::iterator_facade.507"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.507"*, %"class.thrust::iterator_facade.507"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.505"* %result to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.505"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElE7derivedEv(%"class.thrust::iterator_facade.507"* %this1) %1 = bitcast %"class.thrust::detail::normal_iterator.505"* %result to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.505"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = bitcast %"class.thrust::detail::normal_iterator.505"* %result to %"class.thrust::iterator_facade.507"* %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.505"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEES5_NS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIS5_EElEmIEl(%"class.thrust::iterator_facade.507"* %3, i64 %4) %5 = bitcast %"class.thrust::detail::normal_iterator.505"* %retval to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.505"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %7 = bitcast %"class.thrust::detail::normal_iterator.505"* %result to i8* call void @llvm.lifetime.end(i64 8, i8* %7) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive3, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive5, i32 0, i32 0 %8 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive6, align 8 ret %"struct.thrust::pair.487"* %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrustplINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEET_RKNS_15iterator_facadeISG_T0_T1_T2_T3_T4_EENSG_15difference_typeE(%"class.thrust::iterator_facade.598"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.596", align 8 %i.addr = alloca %"class.thrust::iterator_facade.598"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::detail::normal_iterator.596", align 8 store %"class.thrust::iterator_facade.598"* %i, %"class.thrust::iterator_facade.598"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::detail::normal_iterator.596"* %tmp to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.598"*, %"class.thrust::iterator_facade.598"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.598"* %1 to %"class.thrust::detail::normal_iterator.596"* %3 = bitcast %"class.thrust::detail::normal_iterator.596"* %tmp to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.596"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 1, i1 false) %5 = bitcast %"class.thrust::detail::normal_iterator.596"* %tmp to %"class.thrust::iterator_facade.598"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.596"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEpLEl(%"class.thrust::iterator_facade.598"* %5, i64 %6) %7 = bitcast %"class.thrust::detail::normal_iterator.596"* %retval to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.596"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %9 = bitcast %"class.thrust::detail::normal_iterator.596"* %tmp to i8* call void @llvm.lifetime.end(i64 8, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive2, i32 0, i32 0 %10 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 ret %"struct.thrust::pair.487"* %10 } ; Function Attrs: nounwind uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.591"* %this) #1 comdat align 2 { entry: %retval = alloca %"class.thrust::detail::normal_iterator.596", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.591"*, align 8 store %"class.thrust::detail::contiguous_storage.591"* %this, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.591"*, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.596"* %retval to i8* %1 = bitcast %"class.thrust::detail::normal_iterator.596"* %m_begin to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 8, i32 8, i1 false) %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive3, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 ret %"struct.thrust::pair.487"* %2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEixEm(%"class.thrust::detail::contiguous_storage.591"* %this, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::reference.599", align 8 %this.addr = alloca %"class.thrust::detail::contiguous_storage.591"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::detail::contiguous_storage.591"* %this, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.591"*, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.596"* %m_begin to %"class.thrust::iterator_facade.598"* %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEES5_S9_NS_27random_access_traversal_tagENS_9referenceIS5_SB_SA_EElEixEl(%"class.thrust::iterator_facade.598"* %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::reference.599", %"class.thrust::reference.599"* %retval, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive2, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.thrust::reference.599", %"class.thrust::reference.599"* %retval, i32 0, i32 0 %coerce.dive5 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive4, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive5, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive6, align 8 ret %"struct.thrust::pair.487"* %2 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::reference.599"* @_ZN6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_EaSERKS2_(%"class.thrust::reference.599"* %this, %"struct.thrust::pair.487"* dereferenceable(4) %v) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::reference.599"*, align 8 %v.addr = alloca %"struct.thrust::pair.487"*, align 8 store %"class.thrust::reference.599"* %this, %"class.thrust::reference.599"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.487"* %v, %"struct.thrust::pair.487"** %v.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::reference.599"*, %"class.thrust::reference.599"** %this.addr, align 8 %0 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %v.addr, align 8 call void @_ZN6thrust9referenceINS_4pairIssEENS_7pointerIS2_NS_6system4cuda6detail3tagENS_11use_defaultES8_EES8_E11assign_fromIPKS2_EEvT_(%"class.thrust::reference.599"* %this1, %"struct.thrust::pair.487"* %0) ret %"class.thrust::reference.599"* %this1 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust14inclusive_scanINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS1_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RKNS7_21execution_policy_baseIT_EET0_S11_SV_T2_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first.coerce0, i32* %first.coerce1, %"struct.thrust::pair.487"* %last.coerce0, i32* %last.coerce1, %"class.thrust::zip_iterator.600"* byval align 8 %result) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.600", align 8 %first = alloca %"class.thrust::zip_iterator.604", align 8 %last = alloca %"class.thrust::zip_iterator.604", align 8 %binary_op = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.604", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.604", align 8 %agg.tmp3 = alloca %"class.thrust::zip_iterator.600", align 8 %agg.tmp4 = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608", align 1 %0 = bitcast %"class.thrust::zip_iterator.604"* %first to { %"struct.thrust::pair.487"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce0, %"struct.thrust::pair.487"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %0, i32 0, i32 1 store i32* %first.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::zip_iterator.604"* %last to { %"struct.thrust::pair.487"*, i32* }* %4 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %3, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce0, %"struct.thrust::pair.487"** %4, align 8 %5 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %3, i32 0, i32 1 store i32* %last.coerce1, i32** %5, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %6 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %6) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %7 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %8 = bitcast %"class.thrust::zip_iterator.604"* %agg.tmp to i8* %9 = bitcast %"class.thrust::zip_iterator.604"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 16, i32 8, i1 false) %10 = bitcast %"class.thrust::zip_iterator.604"* %agg.tmp2 to i8* %11 = bitcast %"class.thrust::zip_iterator.604"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 16, i32 8, i1 false) %12 = bitcast %"class.thrust::zip_iterator.600"* %agg.tmp3 to i8* %13 = bitcast %"class.thrust::zip_iterator.600"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 16, i32 8, i1 false) %14 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"* %agg.tmp4 to i8* %15 = bitcast %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"* %binary_op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 1, i32 1, i1 false), !tbaa.struct !41 %16 = bitcast %"class.thrust::zip_iterator.604"* %agg.tmp to { %"struct.thrust::pair.487"*, i32* }* %17 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %16, i32 0, i32 0 %18 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %17, align 8 %19 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %16, i32 0, i32 1 %20 = load i32*, i32** %19, align 8 %21 = bitcast %"class.thrust::zip_iterator.604"* %agg.tmp2 to { %"struct.thrust::pair.487"*, i32* }* %22 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %21, i32 0, i32 0 %23 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %22, align 8 %24 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %21, i32 0, i32 1 %25 = load i32*, i32** %24, align 8 %call5 = call { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust6system4cuda6detail14inclusive_scanINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEES4_NS_11use_defaultESC_EEEENS8_INS9_IjS4_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS5_INS6_INS8_INS_10device_ptrISB_EEEESG_SH_SH_SH_SH_SH_SH_SH_SH_EEEENS0_6detail7generic6detail22segmented_scan_functorISB_j9add_pairsEEEET1_RNS2_16execution_policyIT_EET0_S10_SV_T2_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %7, %"struct.thrust::pair.487"* %18, i32* %20, %"struct.thrust::pair.487"* %23, i32* %25, %"class.thrust::zip_iterator.600"* byval align 8 %agg.tmp3) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.600", %"class.thrust::zip_iterator.600"* %retval, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::tuple.602", %"class.thrust::tuple.602"* %coerce.dive, i32 0, i32 0 %26 = bitcast %"struct.thrust::detail::cons.603"* %coerce.dive6 to { %"struct.thrust::pair.487"*, i32* }* %27 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %26, i32 0, i32 0 %28 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call5, 0 store %"struct.thrust::pair.487"* %28, %"struct.thrust::pair.487"** %27, align 8 %29 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %26, i32 0, i32 1 %30 = extractvalue { %"struct.thrust::pair.487"*, i32* } %call5, 1 store i32* %30, i32** %29, align 8 %coerce.dive7 = getelementptr inbounds %"class.thrust::zip_iterator.600", %"class.thrust::zip_iterator.600"* %retval, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::tuple.602", %"class.thrust::tuple.602"* %coerce.dive7, i32 0, i32 0 %31 = bitcast %"struct.thrust::detail::cons.603"* %coerce.dive8 to { %"struct.thrust::pair.487"*, i32* }* %32 = load { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %31, align 8 ret { %"struct.thrust::pair.487"*, i32* } %32 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEENS_12zip_iteratorIT_EESJ_(%"struct.thrust::pair.487"* %t.coerce0, i32* %t.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.604", align 8 %t = alloca %"class.thrust::tuple.606", align 8 %agg.tmp = alloca %"class.thrust::tuple.606", align 8 %0 = bitcast %"class.thrust::tuple.606"* %t to { %"struct.thrust::pair.487"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair.487"* %t.coerce0, %"struct.thrust::pair.487"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %0, i32 0, i32 1 store i32* %t.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::tuple.606"* %agg.tmp to i8* %4 = bitcast %"class.thrust::tuple.606"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::tuple.606"* %agg.tmp to { %"struct.thrust::pair.487"*, i32* }* %6 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %5, i32 0, i32 0 %7 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %6, align 8 %8 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %5, i32 0, i32 1 %9 = load i32*, i32** %8, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS3_INS4_IjSA_SB_SB_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EEEC2ESH_(%"class.thrust::zip_iterator.604"* %retval, %"struct.thrust::pair.487"* %7, i32* %9) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.604", %"class.thrust::zip_iterator.604"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.606", %"class.thrust::tuple.606"* %coerce.dive, i32 0, i32 0 %10 = bitcast %"struct.thrust::detail::cons.607"* %coerce.dive1 to { %"struct.thrust::pair.487"*, i32* }* %11 = load { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %10, align 8 ret { %"struct.thrust::pair.487"*, i32* } %11 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESI_SI_SI_SI_SI_SI_SI_E4typeERKSG_RKSH_(%"class.thrust::detail::normal_iterator.596"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1) #8 comdat { entry: %retval = alloca %"class.thrust::tuple.606", align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.596"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 store %"class.thrust::detail::normal_iterator.596"* %t0, %"class.thrust::detail::normal_iterator.596"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.596"*, %"class.thrust::detail::normal_iterator.596"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS2_INS3_IjS9_SA_SA_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_SF_EC2ERKSC_RKSE_(%"class.thrust::tuple.606"* %retval, %"class.thrust::detail::normal_iterator.596"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %1) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.606", %"class.thrust::tuple.606"* %retval, i32 0, i32 0 %2 = bitcast %"struct.thrust::detail::cons.607"* %coerce.dive to { %"struct.thrust::pair.487"*, i32* }* %3 = load { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %2, align 8 ret { %"struct.thrust::pair.487"*, i32* } %3 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i32* } @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE(%"class.thrust::iterator_facade.605"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.604", align 8 %i.addr = alloca %"class.thrust::iterator_facade.605"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::zip_iterator.604", align 8 store %"class.thrust::iterator_facade.605"* %i, %"class.thrust::iterator_facade.605"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::zip_iterator.604"* %tmp to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.605"*, %"class.thrust::iterator_facade.605"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.605"* %1 to %"class.thrust::zip_iterator.604"* %3 = bitcast %"class.thrust::zip_iterator.604"* %tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.604"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 1, i1 false) %5 = bitcast %"class.thrust::zip_iterator.604"* %tmp to %"class.thrust::iterator_facade.605"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(16) %"class.thrust::zip_iterator.604"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS5_IjSB_SC_SC_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS2_IS7_jSH_SH_SH_SH_SH_SH_SH_SH_EESB_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_9referenceIS7_SD_SC_EENSN_IjSF_SC_EESH_SH_SH_SH_SH_SH_SH_SH_EElEpLEl(%"class.thrust::iterator_facade.605"* %5, i64 %6) %7 = bitcast %"class.thrust::zip_iterator.604"* %retval to i8* %8 = bitcast %"class.thrust::zip_iterator.604"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 16, i32 8, i1 false) %9 = bitcast %"class.thrust::zip_iterator.604"* %tmp to i8* call void @llvm.lifetime.end(i64 16, i8* %9) #5 %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.604", %"class.thrust::zip_iterator.604"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.606", %"class.thrust::tuple.606"* %coerce.dive, i32 0, i32 0 %10 = bitcast %"struct.thrust::detail::cons.607"* %coerce.dive1 to { %"struct.thrust::pair.487"*, i32* }* %11 = load { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %10, align 8 ret { %"struct.thrust::pair.487"*, i32* } %11 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEENS_12zip_iteratorIT_EESK_(%"struct.thrust::pair.487"* %t.coerce0, i32* %t.coerce1) #0 comdat { entry: %retval = alloca %"class.thrust::zip_iterator.600", align 8 %t = alloca %"class.thrust::tuple.602", align 8 %agg.tmp = alloca %"class.thrust::tuple.602", align 8 %0 = bitcast %"class.thrust::tuple.602"* %t to { %"struct.thrust::pair.487"*, i32* }* %1 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %0, i32 0, i32 0 store %"struct.thrust::pair.487"* %t.coerce0, %"struct.thrust::pair.487"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %0, i32 0, i32 1 store i32* %t.coerce1, i32** %2, align 8 %3 = bitcast %"class.thrust::tuple.602"* %agg.tmp to i8* %4 = bitcast %"class.thrust::tuple.602"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 16, i32 8, i1 false) %5 = bitcast %"class.thrust::tuple.602"* %agg.tmp to { %"struct.thrust::pair.487"*, i32* }* %6 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %5, i32 0, i32 0 %7 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %6, align 8 %8 = getelementptr inbounds { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %5, i32 0, i32 1 %9 = load i32*, i32** %8, align 8 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_SH_EEEC2ESI_(%"class.thrust::zip_iterator.600"* %retval, %"struct.thrust::pair.487"* %7, i32* %9) %coerce.dive = getelementptr inbounds %"class.thrust::zip_iterator.600", %"class.thrust::zip_iterator.600"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::tuple.602", %"class.thrust::tuple.602"* %coerce.dive, i32 0, i32 0 %10 = bitcast %"struct.thrust::detail::cons.603"* %coerce.dive1 to { %"struct.thrust::pair.487"*, i32* }* %11 = load { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %10, align 8 ret { %"struct.thrust::pair.487"*, i32* } %11 } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i32* } @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEEEENS1_17make_tuple_mapperIT_T0_NS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_SJ_E4typeERKSH_RKSI_(%"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1) #8 comdat { entry: %retval = alloca %"class.thrust::tuple.602", align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 store %"class.thrust::detail::normal_iterator.505"* %t0, %"class.thrust::detail::normal_iterator.505"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_SG_EC2ERKS7_RKSF_(%"class.thrust::tuple.602"* %retval, %"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %1) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.602", %"class.thrust::tuple.602"* %retval, i32 0, i32 0 %2 = bitcast %"struct.thrust::detail::cons.603"* %coerce.dive to { %"struct.thrust::pair.487"*, i32* }* %3 = load { %"struct.thrust::pair.487"*, i32* }, { %"struct.thrust::pair.487"*, i32* }* %2, align 8 ret { %"struct.thrust::pair.487"*, i32* } %3 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail22segmented_scan_functorINS_4pairIssEEj9add_pairsEC2ES7_(%"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"* %this) unnamed_addr #1 comdat align 2 { entry: %_binary_op = alloca %struct.add_pairs, align 1 %this.addr = alloca %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"*, align 8 store %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"* %this, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"*, %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"** %this.addr, align 8 %binary_op = getelementptr inbounds %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608", %"struct.thrust::system::detail::generic::detail::segmented_scan_functor.608"* %this1, i32 0, i32 0 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail15temporary_arrayINS_4pairIssEENS_6system4cuda6detail3tagEED2Ev(%"class.thrust::detail::temporary_array.590"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_array.590"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.596", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp5 = alloca %"class.thrust::detail::normal_iterator.596", align 8 store %"class.thrust::detail::temporary_array.590"* %this, %"class.thrust::detail::temporary_array.590"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_array.590"*, %"class.thrust::detail::temporary_array.590"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_array.590"* %this1 to %"class.thrust::detail::contiguous_storage.591"* %1 = bitcast %"class.thrust::detail::temporary_array.590"* %this1 to %"class.thrust::detail::contiguous_storage.591"* %call = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE5beginEv(%"class.thrust::detail::contiguous_storage.591"* %1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive4, align 8 %2 = bitcast %"class.thrust::detail::temporary_array.590"* %this1 to %"class.thrust::detail::contiguous_storage.591"* %call7 = invoke %"struct.thrust::pair.487"* @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE3endEv(%"class.thrust::detail::contiguous_storage.591"* %2) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont %coerce.dive8 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %agg.tmp5, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive8, i32 0, i32 0 %coerce.dive10 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive10, i32 0, i32 0 store %"struct.thrust::pair.487"* %call7, %"struct.thrust::pair.487"** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %agg.tmp, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive13, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive14, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive15, align 8 %coerce.dive16 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %agg.tmp5, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive17, i32 0, i32 0 %coerce.dive19 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive18, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive19, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE7destroyENS0_15normal_iteratorINS_7pointerIS3_S9_NS_11use_defaultESF_EEEESH_(%"class.thrust::detail::contiguous_storage.591"* %0, %"struct.thrust::pair.487"* %3, %"struct.thrust::pair.487"* %4) to label %invoke.cont20 unwind label %lpad invoke.cont20: ; preds = %invoke.cont6 %5 = bitcast %"class.thrust::detail::temporary_array.590"* %this1 to %"class.thrust::detail::contiguous_storage.591"* call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.591"* %5) #5 ret void lpad: ; preds = %invoke.cont6, %invoke.cont, %entry %6 = landingpad { i8*, i32 } catch i8* null %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 %9 = bitcast %"class.thrust::detail::temporary_array.590"* %this1 to %"class.thrust::detail::contiguous_storage.591"* call void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.591"* %9) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: uwtable define linkonce_odr i32* @_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS6_NS_11use_defaultESD_EEEENS7_13binary_negateINS_8equal_toIsEEEEEET2_RNS_16execution_policyIT_EET0_SP_T1_SK_T3_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i16* %first1.coerce, i16* %last1.coerce, i16* %first2.coerce, i32* %result.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.199", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.493", align 8 %result = alloca %"class.thrust::detail::normal_iterator.199", align 8 %op = alloca %"struct.thrust::detail::binary_negate.589", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %zipped_result = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp19 = alloca %"class.thrust::tuple.611", align 8 %agg.tmp20 = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp21 = alloca %"class.thrust::tuple.611", align 8 %agg.tmp22 = alloca %"struct.thrust::detail::binary_transform_functor.614", align 1 %agg.tmp23 = alloca %"struct.thrust::detail::binary_negate.589", align 1 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive3, i32 0, i32 0 store i16* %first1.coerce, i16** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive8, i32 0, i32 0 store i16* %last1.coerce, i16** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.493", %"class.thrust::detail::normal_iterator.493"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.494", %"class.thrust::iterator_adaptor.494"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::device_ptr.496", %"class.thrust::device_ptr.496"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::pointer.497", %"class.thrust::pointer.497"* %coerce.dive12, i32 0, i32 0 %coerce.dive14 = getelementptr inbounds %"class.thrust::iterator_adaptor.498", %"class.thrust::iterator_adaptor.498"* %coerce.dive13, i32 0, i32 0 store i16* %first2.coerce, i16** %coerce.dive14, align 8 %coerce.dive15 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %result, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive16, i32 0, i32 0 %coerce.dive18 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive17, i32 0, i32 0 store i32* %result.coerce, i32** %coerce.dive18, align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %0 = bitcast %"class.thrust::zip_iterator.609"* %zipped_result to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESI_SI_SI_SI_SI_SI_E4typeERKSF_RKSG_RKSH_(%"class.thrust::tuple.611"* sret %agg.tmp19, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %first1, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS_12zip_iteratorIT_EESI_(%"class.thrust::zip_iterator.609"* sret %agg.tmp, %"class.thrust::tuple.611"* byval align 8 %agg.tmp19) call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESI_SI_SI_SI_SI_SI_E4typeERKSF_RKSG_RKSH_(%"class.thrust::tuple.611"* sret %agg.tmp21, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %last1, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS_12zip_iteratorIT_EESI_(%"class.thrust::zip_iterator.609"* sret %agg.tmp20, %"class.thrust::tuple.611"* byval align 8 %agg.tmp21) %3 = bitcast %"struct.thrust::detail::binary_negate.589"* %agg.tmp23 to i8* %4 = bitcast %"struct.thrust::detail::binary_negate.589"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6detail24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEC2ES5_(%"struct.thrust::detail::binary_transform_functor.614"* %agg.tmp22) call void @_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RKNS7_21execution_policy_baseIT_EESP_SP_T1_(%"class.thrust::zip_iterator.609"* sret %zipped_result, %"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp20) %call = call dereferenceable(24) %"class.thrust::tuple.611"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.609"* %zipped_result) %5 = bitcast %"class.thrust::tuple.611"* %call to %"struct.thrust::detail::cons.612"* %call24 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.612"* dereferenceable(24) %5) %6 = bitcast %"class.thrust::detail::normal_iterator.199"* %retval to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.199"* %call24 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::zip_iterator.609"* %zipped_result to i8* call void @llvm.lifetime.end(i64 24, i8* %8) #5 %coerce.dive25 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %retval, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive27, i32 0, i32 0 %9 = load i32*, i32** %coerce.dive28, align 8 ret i32* %9 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RKNS7_21execution_policy_baseIT_EESP_SP_T1_(%"class.thrust::zip_iterator.609"* noalias sret %agg.result, %"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.609"* byval align 8 %first, %"class.thrust::zip_iterator.609"* byval align 8 %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.614", align 1 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor.614", align 1 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp to i8* %3 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %4 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp2 to i8* %5 = bitcast %"class.thrust::zip_iterator.609"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 8, i1 false) %6 = bitcast %"struct.thrust::detail::binary_transform_functor.614"* %agg.tmp3 to i8* %7 = bitcast %"struct.thrust::detail::binary_transform_functor.614"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RNS2_16execution_policyIT_EESP_SP_T1_(%"class.thrust::zip_iterator.609"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp2) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEENS_12zip_iteratorIT_EESI_(%"class.thrust::zip_iterator.609"* noalias sret %agg.result, %"class.thrust::tuple.611"* byval align 8 %t) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::tuple.611", align 8 %0 = bitcast %"class.thrust::tuple.611"* %agg.tmp to i8* %1 = bitcast %"class.thrust::tuple.611"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEC2ESG_(%"class.thrust::zip_iterator.609"* %agg.result, %"class.thrust::tuple.611"* byval align 8 %agg.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESI_SI_SI_SI_SI_SI_E4typeERKSF_RKSG_RKSH_(%"class.thrust::tuple.611"* noalias sret %agg.result, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t2) #8 comdat { entry: %t0.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 store %"class.thrust::detail::normal_iterator.493"* %t0, %"class.thrust::detail::normal_iterator.493"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.493"* %t1, %"class.thrust::detail::normal_iterator.493"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t2, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %t1.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeESE_SE_SE_SE_SE_SE_EC2ERKS5_SH_RKSD_(%"class.thrust::tuple.611"* %agg.result, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEC2ES5_(%"struct.thrust::detail::binary_transform_functor.614"* %this) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::detail::binary_negate.589", align 1 %this.addr = alloca %"struct.thrust::detail::binary_transform_functor.614"*, align 8 store %"struct.thrust::detail::binary_transform_functor.614"* %this, %"struct.thrust::detail::binary_transform_functor.614"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::binary_transform_functor.614"*, %"struct.thrust::detail::binary_transform_functor.614"** %this.addr, align 8 %f2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.614", %"struct.thrust::detail::binary_transform_functor.614"* %this1, i32 0, i32 0 %0 = bitcast %"struct.thrust::detail::binary_negate.589"* %f2 to i8* %1 = bitcast %"struct.thrust::detail::binary_negate.589"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.612"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.612"*, align 8 store %"struct.thrust::detail::cons.612"* %c, %"struct.thrust::detail::cons.612"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.612"*, %"struct.thrust::detail::cons.612"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIsEEEENS0_4consISH_NSI_ISC_NS_9null_typeEEEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.612"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.199"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::tuple.611"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.609"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 store %"class.thrust::zip_iterator.609"* %this, %"class.thrust::zip_iterator.609"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.609", %"class.thrust::zip_iterator.609"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.611"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RNS2_16execution_policyIT_EESP_SP_T1_(%"class.thrust::zip_iterator.609"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.609"* byval align 8 %first, %"class.thrust::zip_iterator.609"* byval align 8 %last) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.614", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor.614", align 1 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp to i8* %2 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %3 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp1 to i8* %4 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false) %5 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp2 to i8* %6 = bitcast %"class.thrust::zip_iterator.609"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEEEENS_15iterator_traitsIT_E15difference_typeESK_SK_(%"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp1, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp2) %7 = bitcast %"struct.thrust::detail::binary_transform_functor.614"* %agg.tmp3 to i8* %8 = bitcast %"struct.thrust::detail::binary_transform_functor.614"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_(%"class.thrust::zip_iterator.609"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %0, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp, i64 %call) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_(%"class.thrust::zip_iterator.609"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.609"* byval align 8 %first, i64 %n) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.614", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp1 = alloca %"struct.thrust::detail::binary_transform_functor.614", align 1 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp to i8* %2 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %4 = bitcast %"struct.thrust::detail::binary_transform_functor.614"* %agg.tmp1 to i8* %5 = bitcast %"struct.thrust::detail::binary_transform_functor.614"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 1, i32 1, i1 false), !tbaa.struct !41 call void @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_EN10workaround13parallel_pathERNSQ_IS4_EESI_lSO_(%"class.thrust::zip_iterator.609"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %0, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp, i64 %3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEEEENS_15iterator_traitsIT_E15difference_typeESK_SK_(%"class.thrust::zip_iterator.609"* byval align 8 %first, %"class.thrust::zip_iterator.609"* byval align 8 %last) #8 comdat { entry: %agg.tmp = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.609", align 8 %0 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp to i8* %1 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) %2 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp1 to i8* %3 = bitcast %"class.thrust::zip_iterator.609"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESA_NS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EEEEEENS_15iterator_traitsIT_E15difference_typeESM_SM_(%"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEElNS7_24binary_transform_functorINS7_13binary_negateINS_8equal_toIsEEEEEEEET0_RNS2_16execution_policyIT_EESP_T1_T2_EN10workaround13parallel_pathERNSQ_IS4_EESI_lSO_(%"class.thrust::zip_iterator.609"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.609"* byval align 8 %first, i64 %n) #0 comdat align 2 { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.614", align 1 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.615", align 1 %narrow_n = alloca i32, align 4 %narrow_num_groups = alloca i32, align 4 %narrow_group_size = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.147", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp2 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp3 = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp4 = alloca %"struct.thrust::detail::wrapped_function.615", align 1 %num_groups = alloca i64, align 8 %group_size = alloca i64, align 8 %coerce9 = alloca %"class.thrust::tuple.152", align 8 %ref.tmp11 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp12 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp13 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp14 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp15 = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp16 = alloca %"struct.thrust::detail::wrapped_function.615", align 1 %ref.tmp19 = alloca i64, align 8 %agg.tmp.ensured = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp22 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp25 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp26 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp27 = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp28 = alloca %"struct.thrust::detail::wrapped_function.615", align 1 %ref.tmp29 = alloca i32, align 4 %agg.tmp.ensured32 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp33 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp38 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp39 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp40 = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp41 = alloca %"struct.thrust::detail::wrapped_function.615", align 1 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"struct.thrust::detail::wrapped_function.615"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 1, i8* %0) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEC2ERKS7_(%"struct.thrust::detail::wrapped_function.615"* %wrapped_f, %"struct.thrust::detail::binary_transform_functor.614"* dereferenceable(1) %f) %1 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.start(i64 4, i8* %1) #5 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %conv = trunc i64 %2 to i32 store i32 %conv, i32* %narrow_n, align 4, !tbaa !11 %3 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %narrow_num_groups, align 4, !tbaa !11 %4 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %narrow_group_size, align 4, !tbaa !11 %call = call { i32*, i32* } @_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %narrow_group_size) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.147", %"class.thrust::tuple.147"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.148"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call, 1 store i32* %9, i32** %8, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, i64 2147483647, i64 2147483647, i64 2147483647) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %11 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp3 to i8* %12 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 24, i32 8, i1 false) %13 = bitcast %"struct.thrust::detail::wrapped_function.615"* %agg.tmp4 to i8* %14 = bitcast %"struct.thrust::detail::wrapped_function.615"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 1, i32 1, i1 false), !tbaa.struct !41 %15 = load i32, i32* %narrow_n, align 4, !tbaa !11 %call5 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp3, i32 %15) %16 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call5, i64* %16, align 4 %call6 = call dereferenceable(16) %"class.thrust::tuple.147"* @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.147"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %17 = load i64, i64* %n.addr, align 8, !tbaa !13 %18 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %19 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %mul = mul i32 %18, %19 %call7 = call zeroext i1 @_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j(i64 %17, i32 %mul) br i1 %call7, label %if.then, label %if.else if.then: ; preds = %entry %20 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.start(i64 8, i8* %20) #5 store i64 0, i64* %num_groups, align 8, !tbaa !13 %21 = bitcast i64* %group_size to i8* call void @llvm.lifetime.start(i64 8, i8* %21) #5 store i64 0, i64* %group_size, align 8, !tbaa !13 %call8 = call { i64*, i64* } @_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %group_size) %coerce.dive10 = getelementptr inbounds %"class.thrust::tuple.152", %"class.thrust::tuple.152"* %coerce9, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.153"* %coerce.dive10 to { i64*, i64* }* %23 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %22, i32 0, i32 0 %24 = extractvalue { i64*, i64* } %call8, 0 store i64* %24, i64** %23, align 8 %25 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %22, i32 0, i32 1 %26 = extractvalue { i64*, i64* } %call8, 1 store i64* %26, i64** %25, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp12, i64 2147483647, i64 2147483647, i64 2147483647) %27 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp14 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %27, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %28 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp15 to i8* %29 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %28, i8* %29, i64 24, i32 8, i1 false) %30 = bitcast %"struct.thrust::detail::wrapped_function.615"* %agg.tmp16 to i8* %31 = bitcast %"struct.thrust::detail::wrapped_function.615"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %31, i64 1, i32 1, i1 false), !tbaa.struct !41 %32 = load i64, i64* %n.addr, align 8, !tbaa !13 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp12, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp15, i64 %32) %33 = bitcast %"struct.thrust::pair.82"* %ref.tmp11 to i64* store i64 %call17, i64* %33, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.152"* @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.152"* %coerce9, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp11) %34 = load i64, i64* %n.addr, align 8, !tbaa !13 %35 = load i64, i64* %group_size, align 8, !tbaa !13 %call20 = call i64 @_ZN6thrust6detail4util9divide_riIllEET_S3_T0_(i64 %34, i64 %35) store i64 %call20, i64* %ref.tmp19, align 8, !tbaa !13 %call21 = call i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %ref.tmp19) store i64 %call21, i64* %num_groups, align 8, !tbaa !13 %36 = load i64, i64* %num_groups, align 8, !tbaa !13 %37 = load i64, i64* %group_size, align 8, !tbaa !13 %38 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %39 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %38 to %"struct.thrust::detail::execution_policy_base.121"* %call23 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %39) %40 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call23 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call24 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %40) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp22, i64 %36, i64 %37, i64 0, %struct.CUstream_st* %call24) %41 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp26 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %41, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %42 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp27 to i8* %43 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %42, i8* %43, i64 24, i32 8, i1 false) %44 = bitcast %"struct.thrust::detail::wrapped_function.615"* %agg.tmp28 to i8* %45 = bitcast %"struct.thrust::detail::wrapped_function.615"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %44, i8* %45, i64 1, i32 1, i1 false), !tbaa.struct !41 %46 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp22, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp27, i64 %46) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured) #5 %47 = bitcast i64* %group_size to i8* call void @llvm.lifetime.end(i64 8, i8* %47) #5 %48 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %48) #5 br label %if.end if.else: ; preds = %entry %49 = load i32, i32* %narrow_n, align 4, !tbaa !11 %50 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %call30 = call i32 @_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_(i32 %49, i32 %50) store i32 %call30, i32* %ref.tmp29, align 4, !tbaa !11 %call31 = call i32 @_ZN6thrust3minIjEET_RKS1_S3_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %ref.tmp29) store i32 %call31, i32* %narrow_num_groups, align 4, !tbaa !11 %51 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %conv34 = zext i32 %51 to i64 %52 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %conv35 = zext i32 %52 to i64 %53 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %54 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %53 to %"struct.thrust::detail::execution_policy_base.121"* %call36 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %54) %55 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call36 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call37 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %55) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp33, i64 %conv34, i64 %conv35, i64 0, %struct.CUstream_st* %call37) %56 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp39 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %56, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %57 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp40 to i8* %58 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %57, i8* %58, i64 24, i32 8, i1 false) %59 = bitcast %"struct.thrust::detail::wrapped_function.615"* %agg.tmp41 to i8* %60 = bitcast %"struct.thrust::detail::wrapped_function.615"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %59, i8* %60, i64 1, i32 1, i1 false), !tbaa.struct !41 %61 = load i32, i32* %narrow_n, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured32, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp33, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp40, i32 %61) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured32) #5 br label %if.end if.end: ; preds = %if.else, %if.then %62 = bitcast %"class.thrust::zip_iterator.609"* %first to %"class.thrust::iterator_facade.610"* %63 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE(%"class.thrust::zip_iterator.609"* sret %agg.result, %"class.thrust::iterator_facade.610"* dereferenceable(1) %62, i64 %63) %64 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %64) #5 %65 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %65) #5 %66 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.end(i64 4, i8* %66) #5 %67 = bitcast %"struct.thrust::detail::wrapped_function.615"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 1, i8* %67) #5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEC2ERKS7_(%"struct.thrust::detail::wrapped_function.615"* %this, %"struct.thrust::detail::binary_transform_functor.614"* dereferenceable(1) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %f.addr = alloca %"struct.thrust::detail::binary_transform_functor.614"*, align 8 store %"struct.thrust::detail::wrapped_function.615"* %this, %"struct.thrust::detail::wrapped_function.615"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::binary_transform_functor.614"* %f, %"struct.thrust::detail::binary_transform_functor.614"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.615", %"struct.thrust::detail::wrapped_function.615"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::binary_transform_functor.614"*, %"struct.thrust::detail::binary_transform_functor.614"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::binary_transform_functor.614"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::binary_transform_functor.614"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::zip_iterator.609"* byval align 8 %arg2, i32 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.615", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp3 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* sret %agg.tmp3, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIsEEEEEEvEEjSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %agg.tmp3) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::zip_iterator.609"* byval align 8 %arg2, i64 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.615", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp3 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* sret %agg.tmp3, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIsEEEEEEvEElSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %agg.tmp3) %2 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %2, align 4 %3 = bitcast %"struct.thrust::pair.82"* %retval to i64* %4 = load i64, i64* %3, align 4 ret i64 %4 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::zip_iterator.609"* byval align 8 %arg2, i64 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.615", align 1 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp3 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* sret %agg.tmp3, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %arg3, i64* dereferenceable(8) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %agg.tmp3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::zip_iterator.609"* byval align 8 %arg2, i32 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.615", align 1 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp3 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", align 8 %agg.tmp4 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* sret %agg.tmp3, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %arg3, i32* dereferenceable(4) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %agg.tmp3) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEET_RKNS_15iterator_facadeISR_T0_T1_T2_T3_T4_EENSR_15difference_typeE(%"class.thrust::zip_iterator.609"* noalias sret %agg.result, %"class.thrust::iterator_facade.610"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %i.addr = alloca %"class.thrust::iterator_facade.610"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::zip_iterator.609", align 8 store %"class.thrust::iterator_facade.610"* %i, %"class.thrust::iterator_facade.610"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::zip_iterator.609"* %tmp to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.610"*, %"class.thrust::iterator_facade.610"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.610"* %1 to %"class.thrust::zip_iterator.609"* %3 = bitcast %"class.thrust::zip_iterator.609"* %tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.609"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 1, i1 false) %5 = bitcast %"class.thrust::zip_iterator.609"* %tmp to %"class.thrust::iterator_facade.610"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(24) %"class.thrust::zip_iterator.609"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEpLEl(%"class.thrust::iterator_facade.610"* %5, i64 %6) %7 = bitcast %"class.thrust::zip_iterator.609"* %agg.result to i8* %8 = bitcast %"class.thrust::zip_iterator.609"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 24, i32 8, i1 false) %9 = bitcast %"class.thrust::zip_iterator.609"* %tmp to i8* call void @llvm.lifetime.end(i64 24, i8* %9) #5 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIsEEEEEEvEEjSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %a2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %a3, i32* dereferenceable(4) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %a4.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.617", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %a2, %"class.thrust::zip_iterator.609"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %a3, %"struct.thrust::detail::wrapped_function.615"** %a3.addr, align 8, !tbaa !7 store i32* %a4, i32** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %a3.addr, align 8 %3 = load i32*, i32** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIsEEEEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_(%"class.thrust::tuple.617"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.609"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %2, i32* dereferenceable(4) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %agg.result, %"class.thrust::tuple.617"* dereferenceable(40) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIsEEEEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_(%"class.thrust::tuple.617"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.609"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t3.addr = alloca i32*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %t1, %"class.thrust::zip_iterator.609"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %t2, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8 %3 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIsEEEEEEvEEjSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKj(%"class.thrust::tuple.617"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.609"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %2, i32* dereferenceable(4) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEEjSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %this, %"class.thrust::tuple.617"* dereferenceable(40) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"*, align 8 %args.addr = alloca %"class.thrust::tuple.617"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.617"* %args, %"class.thrust::tuple.617"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.617"*, %"class.thrust::tuple.617"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.617"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.617"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 40, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIsEEEEEEvEEjSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKj(%"class.thrust::tuple.617"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.609"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.617"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t3.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.617"* %this, %"class.thrust::tuple.617"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %t1, %"class.thrust::zip_iterator.609"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %t2, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.617"*, %"class.thrust::tuple.617"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.617"* %this1 to %"struct.thrust::detail::cons.618"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IjSK_EEEEEEEC2IKS8_KSM_KSU_KjKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.618"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IjSK_EEEEEEEC2IKS8_KSM_KSU_KjKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.618"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %t2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t3, i32* dereferenceable(4) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.618"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t4.addr = alloca i32*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.618"* %this, %"struct.thrust::detail::cons.618"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %t2, %"class.thrust::zip_iterator.609"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %t3, %"struct.thrust::detail::wrapped_function.615"** %t3.addr, align 8, !tbaa !7 store i32* %t4, i32** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.618"*, %"struct.thrust::detail::cons.618"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.618", %"struct.thrust::detail::cons.618"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.618", %"struct.thrust::detail::cons.618"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t3.addr, align 8 %5 = load i32*, i32** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IjSG_EEEEEC2IKSI_KSQ_KjKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.619"* %tail, %"class.thrust::zip_iterator.609"* dereferenceable(24) %3, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %4, i32* dereferenceable(4) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IjSG_EEEEEC2IKSI_KSQ_KjKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.619"* %this, %"class.thrust::zip_iterator.609"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t2, i32* dereferenceable(4) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.619"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t3.addr = alloca i32*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.619"* %this, %"struct.thrust::detail::cons.619"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.609"* %t1, %"class.thrust::zip_iterator.609"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %t2, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.619"*, %"struct.thrust::detail::cons.619"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.619", %"struct.thrust::detail::cons.619"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.609"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.609"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.619", %"struct.thrust::detail::cons.619"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IjNS_9null_typeEEEEC2IKS9_KjKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.620"* %tail, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IjNS_9null_typeEEEEC2IKS9_KjKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.620"* %this, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t1, i32* dereferenceable(4) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.620"*, align 8 %t1.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t2.addr = alloca i32*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.620"* %this, %"struct.thrust::detail::cons.620"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::wrapped_function.615"* %t1, %"struct.thrust::detail::wrapped_function.615"** %t1.addr, align 8, !tbaa !7 store i32* %t2, i32** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.620"*, %"struct.thrust::detail::cons.620"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.620", %"struct.thrust::detail::cons.620"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::detail::wrapped_function.615"* %head to i8* %2 = bitcast %"struct.thrust::detail::wrapped_function.615"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.620", %"struct.thrust::detail::cons.620"* %this1, i32 0, i32 1 %3 = load i32*, i32** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIjNS_9null_typeEEC2IKjEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.159"* %tail, i32* dereferenceable(4) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESH_NSE_INS_7pointerIjNS2_3tagENS_11use_defaultESK_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINSD_13binary_negateINS_8equal_toIsEEEEEEvEElSN_SN_SN_SN_SN_SN_EEEEEENS_4pairIiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SM_SM_SM_SM_SM_SM_EEEESY_RKSZ_RKS10_RKS11_RKS12_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %a2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %a3, i64* dereferenceable(8) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %a4.addr = alloca i64*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.629", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %a2, %"class.thrust::zip_iterator.609"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %a3, %"struct.thrust::detail::wrapped_function.615"** %a3.addr, align 8, !tbaa !7 store i64* %a4, i64** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %a3.addr, align 8 %3 = load i64*, i64** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIsEEEEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_(%"class.thrust::tuple.629"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.609"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %2, i64* dereferenceable(8) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %agg.result, %"class.thrust::tuple.629"* dereferenceable(48) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS3_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINSA_13binary_negateINS_8equal_toIsEEEEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SK_SK_SK_SK_SK_SK_E4typeERKSW_RKSX_RKSY_RKSZ_(%"class.thrust::tuple.629"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.609"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t3.addr = alloca i64*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %t1, %"class.thrust::zip_iterator.609"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %t2, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8 %3 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIsEEEEEEvEElSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKl(%"class.thrust::tuple.629"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.609"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %2, i64* dereferenceable(8) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESG_NSD_INS_7pointerIjNS2_3tagENS_11use_defaultESJ_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINSC_13binary_negateINS_8equal_toIsEEEEEEvEElSM_SM_SM_SM_SM_SM_EEEC2ES7_RKSX_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %this, %"class.thrust::tuple.629"* dereferenceable(48) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"*, align 8 %args.addr = alloca %"class.thrust::tuple.629"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.629"* %args, %"class.thrust::tuple.629"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.629"*, %"class.thrust::tuple.629"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.629"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.629"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 48, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESD_NSA_INS_7pointerIjNS3_3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS9_13binary_negateINS_8equal_toIsEEEEEEvEElSJ_SJ_SJ_SJ_SJ_SJ_EC2ERKS7_RKSL_RKST_RKl(%"class.thrust::tuple.629"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.609"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.629"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t3.addr = alloca i64*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.629"* %this, %"class.thrust::tuple.629"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %t1, %"class.thrust::zip_iterator.609"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %t2, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.629"*, %"class.thrust::tuple.629"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.629"* %this1 to %"struct.thrust::detail::cons.630"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IlSK_EEEEEEEC2IKS8_KSM_KSU_KlKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.630"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEESE_NSB_INS_7pointerIjNS4_3tagENS_11use_defaultESH_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IlSK_EEEEEEEC2IKS8_KSM_KSU_KlKSK_S14_S14_S14_S14_S14_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.630"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %t2, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t3, i64* dereferenceable(8) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.630"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t4.addr = alloca i64*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.630"* %this, %"struct.thrust::detail::cons.630"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %t2, %"class.thrust::zip_iterator.609"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %t3, %"struct.thrust::detail::wrapped_function.615"** %t3.addr, align 8, !tbaa !7 store i64* %t4, i64** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.630"*, %"struct.thrust::detail::cons.630"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.630", %"struct.thrust::detail::cons.630"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.630", %"struct.thrust::detail::cons.630"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t3.addr, align 8 %5 = load i64*, i64** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IlSG_EEEEEC2IKSI_KSQ_KlKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.631"* %tail, %"class.thrust::zip_iterator.609"* dereferenceable(24) %3, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %4, i64* dereferenceable(8) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IlSG_EEEEEC2IKSI_KSQ_KlKSG_SY_SY_SY_SY_SY_SY_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.631"* %this, %"class.thrust::zip_iterator.609"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t2, i64* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.631"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t3.addr = alloca i64*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.631"* %this, %"struct.thrust::detail::cons.631"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.609"* %t1, %"class.thrust::zip_iterator.609"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.615"* %t2, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.631"*, %"struct.thrust::detail::cons.631"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.631", %"struct.thrust::detail::cons.631"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.609"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.609"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.631", %"struct.thrust::detail::cons.631"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IlNS_9null_typeEEEEC2IKS9_KlKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.632"* %tail, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS0_13binary_negateINS_8equal_toIsEEEEEEvEENS1_IlNS_9null_typeEEEEC2IKS9_KlKSA_SG_SG_SG_SG_SG_SG_SG_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.632"* %this, %"struct.thrust::detail::wrapped_function.615"* dereferenceable(1) %t1, i64* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.632"*, align 8 %t1.addr = alloca %"struct.thrust::detail::wrapped_function.615"*, align 8 %t2.addr = alloca i64*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.632"* %this, %"struct.thrust::detail::cons.632"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::wrapped_function.615"* %t1, %"struct.thrust::detail::wrapped_function.615"** %t1.addr, align 8, !tbaa !7 store i64* %t2, i64** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.632"*, %"struct.thrust::detail::cons.632"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.632", %"struct.thrust::detail::cons.632"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::wrapped_function.615"*, %"struct.thrust::detail::wrapped_function.615"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::detail::wrapped_function.615"* %head to i8* %2 = bitcast %"struct.thrust::detail::wrapped_function.615"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.632", %"struct.thrust::detail::cons.632"* %this1, i32 0, i32 1 %3 = load i64*, i64** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIlNS_9null_typeEEC2IKlEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.165"* %tail, i64* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 56, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 56, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 56, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 56, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %task to i8* call void @llvm.lifetime.start(i64 88, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 56, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 88, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %task to i8* call void @llvm.lifetime.end(i64 88, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.633"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.628", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 56, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !405 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 88, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.634"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEElST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.628"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 56, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.638"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.635"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 88, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 88, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIsEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIsEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIsEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 88, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIsEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIsEEEEEEvEElSU_SU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.637"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %launch, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %c) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp5 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", align 8 %call = call zeroext i1 @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE15is_stream_validEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) br i1 %call, label %cond.true, label %cond.false cond.true: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %agg.tmp1 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) %call2 = call %struct.CUstream_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE6streamEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %call3 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %agg.tmp1, %struct.CUstream_st* %call2, %struct.CUevent_st* %call3) br label %cond.end cond.false: ; preds = %entry call void @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE4execEv(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %agg.tmp5 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 48, i32 8, i1 false) %call6 = call %struct.CUevent_st* @_ZNK6thrust6system4cuda6detail5bulk_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEE12before_eventEv(%"class.thrust::system::cuda::detail::bulk_::async_launch"* %launch) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp4, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %agg.tmp5, %struct.CUevent_st* %call6) br label %cond.end cond.end: ; preds = %cond.false, %cond.true ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15async_in_streamINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P11CUstream_stP10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %c, %struct.CUstream_st* %s, %struct.CUevent_st* %before_event) #0 comdat { entry: %s.addr = alloca %struct.CUstream_st*, align 8 %before_event.addr = alloca %struct.CUevent_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp1 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", align 8 store %struct.CUstream_st* %s, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 %2 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %1, %struct.CUevent_st* %2, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.35, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %3) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher) %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 4, i1 false) %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %agg.tmp1 to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 48, i32 8, i1 false) %8 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %agg.tmp1, %struct.CUstream_st* %8) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s.addr, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %9, i1 zeroext false) %10 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %10) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEENS3_6futureIvEET_T0_P10CUevent_st(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %c, %struct.CUevent_st* %before_event) #0 comdat { entry: %before_event.addr = alloca %struct.CUevent_st*, align 8 %s = alloca %struct.CUstream_st*, align 8 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621", align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", align 8 store %struct.CUevent_st* %before_event, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %0 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %call = call i32 @cudaStreamCreate(%struct.CUstream_st** %s) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.40, i32 0, i32 0)) %1 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %cmp = icmp ne %struct.CUevent_st* %1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 %3 = load %struct.CUevent_st*, %struct.CUevent_st** %before_event.addr, align 8, !tbaa !1 %call1 = call i32 @cudaStreamWaitEvent(%struct.CUstream_st* %2, %struct.CUevent_st* %3, i32 0) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call1, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.41, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %4) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher) %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 4, i1 false) %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 48, i32 8, i1 false) %9 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %agg.tmp2, %struct.CUstream_st* %9) %10 = load %struct.CUstream_st*, %struct.CUstream_st** %s, align 8, !tbaa !1 call void @_ZN6thrust6system4cuda6detail5bulk_6detail18future_core_access6createEP11CUstream_stb(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %struct.CUstream_st* %10, i1 zeroext true) %11 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %11) #5 %12 = bitcast %struct.CUstream_st** %s to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchESB_S15_P11CUstream_st(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %request, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %c, %struct.CUstream_st* %stream) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"*, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %g = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %num_blocks = alloca i32, align 4 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %max_physical_grid_size = alloca i32, align 4 %num_remaining_physical_blocks = alloca i32, align 4 %block_offset = alloca i32, align 4 %task = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625", align 8 %agg.tmp10 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp11 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", align 8 %num_physical_blocks = alloca i32, align 4 %agg.tmp13 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"** %this.addr, align 8, !tbaa !1 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %request to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %g, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this1, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp) %3 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %4) store i32 %call, i32* %num_blocks, align 4, !tbaa !11 %5 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %6, i32 0, i32 0 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call2 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %7) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %8 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp = icmp sgt i32 %8, 0 br i1 %cmp, label %land.lhs.true, label %if.end14 land.lhs.true: ; preds = %entry %9 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp3 = icmp sgt i32 %9, 0 br i1 %cmp3, label %if.then, label %if.end14 if.then: ; preds = %land.lhs.true %10 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %10) #5 %11 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec4 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %11, i32 0, i32 0 %call5 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %12 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.start(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %call6 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %13) store i32 %call6, i32* %max_physical_grid_size, align 4, !tbaa !11 %14 = load i32, i32* %block_size, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, 0 br i1 %cmp7, label %if.then8, label %if.end if.then8: ; preds = %if.then %15 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %15) #5 %16 = load i32, i32* %num_blocks, align 4, !tbaa !11 store i32 %16, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %17 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.start(i64 4, i8* %17) #5 store i32 0, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.cond: ; preds = %for.inc, %if.then8 %18 = load i32, i32* %block_offset, align 4, !tbaa !11 %19 = load i32, i32* %num_blocks, align 4, !tbaa !11 %cmp9 = icmp slt i32 %18, %19 br i1 %cmp9, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond %20 = bitcast i32* %block_offset to i8* call void @llvm.lifetime.end(i64 4, i8* %20) #5 br label %for.end for.body: ; preds = %for.cond %21 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %task to i8* call void @llvm.lifetime.start(i64 80, i8* %21) #5 %22 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp10 to i8* %23 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 24, i32 4, i1 false) %24 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %agg.tmp11 to i8* %25 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %25, i64 48, i32 8, i1 false) %26 = load i32, i32* %block_offset, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %task, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp10, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %agg.tmp11, i32 %26) %27 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %27) #5 %call12 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %num_remaining_physical_blocks, i32* dereferenceable(4) %max_physical_grid_size) store i32 %call12, i32* %num_physical_blocks, align 4, !tbaa !11 %28 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %29 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %30 = load i32, i32* %block_size, align 4, !tbaa !11 %31 = load i32, i32* %heap_size, align 4, !tbaa !11 %32 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %33 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %agg.tmp13 to i8* %34 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 80, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %28, i32 %29, i32 %30, i32 %31, %struct.CUstream_st* %32, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* byval align 8 %agg.tmp13) %35 = load i32, i32* %num_physical_blocks, align 4, !tbaa !11 %36 = load i32, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %sub = sub nsw i32 %36, %35 store i32 %sub, i32* %num_remaining_physical_blocks, align 4, !tbaa !11 %37 = bitcast i32* %num_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 %38 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %task to i8* call void @llvm.lifetime.end(i64 80, i8* %38) #5 br label %for.inc for.inc: ; preds = %for.body %39 = load i32, i32* %max_physical_grid_size, align 4, !tbaa !11 %40 = load i32, i32* %block_offset, align 4, !tbaa !11 %add = add nsw i32 %40, %39 store i32 %add, i32* %block_offset, align 4, !tbaa !11 br label %for.cond for.end: ; preds = %for.cond.cleanup %41 = bitcast i32* %num_remaining_physical_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %41) #5 br label %if.end if.end: ; preds = %for.end, %if.then %42 = bitcast i32* %max_physical_grid_size to i8* call void @llvm.lifetime.end(i64 4, i8* %42) #5 %43 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %43) #5 br label %if.end14 if.end14: ; preds = %if.end, %land.lhs.true, %entry %44 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %44) #5 %45 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %45) #5 %46 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.lifetime.end(i64 24, i8* %46) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE9configureESB_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"*, align 8 %block_size = alloca i32, align 4 %heap_size = alloca i32, align 4 %ref.tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", align 8 %num_blocks = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::concurrent_group", align 4 %agg.tmp7 = alloca %"class.thrust::system::cuda::detail::bulk_::agent", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"** %this.addr, align 8 %0 = bitcast i32* %block_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2, i32 0, i32 0 %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %3) %call2 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %1, i32 %call) store i32 %call2, i32* %block_size, align 4, !tbaa !11 %4 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 %5 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.621"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %ref.tmp) %6 = load i32, i32* %block_size, align 4, !tbaa !11 %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %7, i32 0, i32 0 %call4 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_16concurrent_groupINS3_5agentILm1EEELm0EE9heap_sizeEv(%"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec3) %call5 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %5, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %ref.tmp, i32 %6, i32 %call4) store i32 %call5, i32* %heap_size, align 4, !tbaa !11 %8 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.start(i64 4, i8* %8) #5 %9 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call6 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %9) store i32 %call6, i32* %num_blocks, align 4, !tbaa !11 %10 = load i32, i32* %num_blocks, align 4, !tbaa !11 %11 = load i32, i32* %block_size, align 4, !tbaa !11 %12 = load i32, i32* %heap_size, align 4, !tbaa !11 call void @_ZN6thrust6system4cuda6detail5bulk_5agentILm1EEC2Ei(%"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 2147483647) %coerce.dive = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::agent", %"class.thrust::system::cuda::detail::bulk_::agent"* %agg.tmp7, i32 0, i32 0 %13 = load i32, i32* %coerce.dive, align 4 %call8 = call { i64, i64 } @_ZN6thrust6system4cuda6detail5bulk_6detail10make_blockINS3_16concurrent_groupINS3_5agentILm1EEELm0EEEEET_NSA_9size_typeESB_NSA_10agent_typeESB_(i32 %11, i32 %12, i32 %13, i32 2147483647) %14 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %15 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 0 %16 = extractvalue { i64, i64 } %call8, 0 store i64 %16, i64* %15, align 4 %17 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %14, i32 0, i32 1 %18 = extractvalue { i64, i64 } %call8, 1 store i64 %18, i64* %17, align 4 %19 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %agg.tmp to { i64, i64 }* %20 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 0 %21 = load i64, i64* %20, align 4 %22 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %19, i32 0, i32 1 %23 = load i64, i64* %22, align 4 call void @_ZN6thrust6system4cuda6detail5bulk_6detail9make_gridINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEET_NSC_9size_typeENSC_10agent_typeESD_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.result, i32 %10, i64 %21, i64 %23, i32 2147483647) %24 = bitcast i32* %num_blocks to i8* call void @llvm.lifetime.end(i64 4, i8* %24) #5 %25 = bitcast i32* %heap_size to i8* call void @llvm.lifetime.end(i64 4, i8* %25) #5 %26 = bitcast i32* %block_size to i8* call void @llvm.lifetime.end(i64 4, i8* %26) #5 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_i(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %c, i32 %offset) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*, align 8 %offset.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.616", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"** %this.addr, align 8, !tbaa !1 store i32 %offset, i32* %offset.addr, align 4, !tbaa !11 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"** %this.addr, align 8 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 4, i1 false) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %agg.tmp2 to i8* %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"* %0, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %agg.tmp2) %block_offset = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %this1, i32 0, i32 1 %5 = load i32, i32* %offset.addr, align 4, !tbaa !11 store i32 %5, i32* %block_offset, align 8, !tbaa !407 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE6launchEiiiP11CUstream_stNS4_9cuda_taskISB_S15_EE(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, i32 %num_blocks, i32 %block_size, i32 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* byval align 8 %task) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i32, align 4 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i32 %num_dynamic_smem_bytes, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623"* %2 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %3 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_dynamic_smem_bytes.addr, align 4, !tbaa !11 %conv = sext i32 %4 to i64 %5 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %6 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %agg.tmp to i8* %7 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 80, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623"* %1, i32 %2, i32 %3, i64 %conv, %struct.CUstream_st* %5, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* byval align 8 %agg.tmp) call void @_ZN6thrust6system4cuda6detail5bulk_6detail22synchronize_if_enabledEPKc(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.36, i32 0, i32 0)) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE16choose_heap_sizeERKNS4_19device_properties_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, i32 %group_size, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, align 8 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %group_size.addr = alloca i32, align 4 %requested_size.addr = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 %result = alloca i32, align 4 %occupancy = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.173", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %next_level_result = alloca i32, align 4 %next_level_occupancy = alloca i32, align 4 %coerce14 = alloca %"class.thrust::tuple.173", align 8 %ref.tmp16 = alloca %"struct.thrust::pair.82", align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.622"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %0) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %call) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, i32 0, i32 4 %1 = load i32, i32* %ptxVersion, align 8, !tbaa !138 %cmp = icmp slt i32 %1, 20 br i1 %cmp, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %entry %2 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp2 = icmp eq i32 %2, 0 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %lor.lhs.false, %entry store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %lor.lhs.false %3 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 store i32 0, i32* %result, align 4, !tbaa !11 %4 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %occupancy, align 4, !tbaa !11 %call3 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %result, i32* dereferenceable(4) %occupancy) %coerce.dive = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce, i32 0, i32 0 %5 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive to { i32*, i32* }* %6 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0 %7 = extractvalue { i32*, i32* } %call3, 0 store i32* %7, i32** %6, align 8 %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1 %9 = extractvalue { i32*, i32* } %call3, 1 store i32* %9, i32** %8, align 8 %10 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %11 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %10, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %11, i32 0) %12 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call4, i64* %12, align 4 %call5 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %13 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %cmp6 = icmp ne i32 %13, 2147483647 br i1 %cmp6, label %land.lhs.true, label %if.end23 land.lhs.true: ; preds = %if.end %14 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %15 = load i32, i32* %result, align 4, !tbaa !11 %cmp7 = icmp sgt i32 %14, %15 br i1 %cmp7, label %land.lhs.true8, label %if.end23 land.lhs.true8: ; preds = %land.lhs.true %16 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp9 = icmp sgt i32 %16, 1 br i1 %cmp9, label %if.then10, label %if.end23 if.then10: ; preds = %land.lhs.true8 %17 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %add = add nsw i32 %17, 48 store i32 %add, i32* %requested_size.addr, align 4, !tbaa !11 %18 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %19 = load i32, i32* %result, align 4, !tbaa !11 %cmp11 = icmp sgt i32 %18, %19 br i1 %cmp11, label %if.then12, label %if.end22 if.then12: ; preds = %if.then10 %20 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.start(i64 4, i8* %20) #5 store i32 0, i32* %next_level_result, align 4, !tbaa !11 %21 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %21) #5 store i32 0, i32* %next_level_occupancy, align 4, !tbaa !11 %call13 = call { i32*, i32* } @_ZN6thrust3tieIiiEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %next_level_result, i32* dereferenceable(4) %next_level_occupancy) %coerce.dive15 = getelementptr inbounds %"class.thrust::tuple.173", %"class.thrust::tuple.173"* %coerce14, i32 0, i32 0 %22 = bitcast %"struct.thrust::detail::cons.174"* %coerce.dive15 to { i32*, i32* }* %23 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 0 %24 = extractvalue { i32*, i32* } %call13, 0 store i32* %24, i32** %23, align 8 %25 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %22, i32 0, i32 1 %26 = extractvalue { i32*, i32* } %call13, 1 store i32* %26, i32** %25, align 8 %27 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %28 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %29 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 %call17 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %27, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %28, i32 %29) %30 = bitcast %"struct.thrust::pair.82"* %ref.tmp16 to i64* store i64 %call17, i64* %30, align 4 %call18 = call dereferenceable(16) %"class.thrust::tuple.173"* @_ZN6thrust5tupleIRiS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.173"* %coerce14, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp16) %31 = load i32, i32* %next_level_occupancy, align 4, !tbaa !11 %cmp19 = icmp sgt i32 %31, 0 br i1 %cmp19, label %if.then20, label %if.end21 if.then20: ; preds = %if.then12 %32 = load i32, i32* %next_level_result, align 4, !tbaa !11 store i32 %32, i32* %result, align 4, !tbaa !11 br label %if.end21 if.end21: ; preds = %if.then20, %if.then12 %33 = bitcast i32* %next_level_occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %33) #5 %34 = bitcast i32* %next_level_result to i8* call void @llvm.lifetime.end(i64 4, i8* %34) #5 br label %if.end22 if.end22: ; preds = %if.end21, %if.then10 br label %if.end23 if.end23: ; preds = %if.end22, %land.lhs.true8, %land.lhs.true, %if.end %35 = load i32, i32* %result, align 4, !tbaa !11 store i32 %35, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %36 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %36) #5 %37 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %37) #5 br label %cleanup cleanup: ; preds = %if.end23, %if.then %38 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %38) #5 %39 = load i32, i32* %retval, align 4 ret i32 %39 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE28dynamic_smem_occupancy_limitERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 %occupancy = alloca i32, align 4 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %2 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %3 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %4 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %1, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %2, i32 %3, i32 %4) store i32 %call, i32* %occupancy, align 4, !tbaa !11 %5 = load i32, i32* %occupancy, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %call1 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 0, i32 0) %6 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call1, i64* %6, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup if.end: ; preds = %entry %7 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %8 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %9 = load i32, i32* %occupancy, align 4, !tbaa !11 %conv = sext i32 %9 to i64 %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail28proportional_smem_allocationERKNS4_19device_properties_tERKNS4_21function_attributes_tEm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %7, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %8, i64 %conv) %conv3 = trunc i64 %call2 to i32 %10 = load i32, i32* %occupancy, align 4, !tbaa !11 %call4 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %conv3, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call4, i64* %11, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %12 = bitcast i32* %occupancy to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast %"struct.thrust::pair.82"* %retval to i64* %14 = load i64, i64* %13, align 4 ret i64 %14 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEE36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEii(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %props, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, i32 %num_threads_per_block, i32 %num_smem_bytes_per_block) #0 comdat align 2 { entry: %props.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, align 8 %attr.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, align 8 %num_threads_per_block.addr = alloca i32, align 4 %num_smem_bytes_per_block.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %props, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8, !tbaa !7 store i32 %num_threads_per_block, i32* %num_threads_per_block.addr, align 4, !tbaa !11 store i32 %num_smem_bytes_per_block, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"** %props.addr, align 8 %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"*, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"** %attr.addr, align 8 %2 = load i32, i32* %num_threads_per_block.addr, align 4, !tbaa !11 %conv = sext i32 %2 to i64 %3 = load i32, i32* %num_smem_bytes_per_block.addr, align 4, !tbaa !11 %conv1 = sext i32 %3 to i64 %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail25cuda_launch_config_detail36max_active_blocks_per_multiprocessorERKNS4_19device_properties_tERKNS4_21function_attributes_tEmm(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %0, %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %1, i64 %conv, i64 %conv1) %conv2 = trunc i64 %call to i32 ret i32 %conv2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail9task_baseINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESN_NSK_INS_7pointerIjNS2_3tagENS_11use_defaultESQ_EEEENS_9null_typeEST_ST_ST_ST_ST_ST_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINSJ_13binary_negateINS_8equal_toIsEEEEEEvEEjST_ST_ST_ST_ST_ST_EEEEEC2ESB_S15_(%"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"* %this, %"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* byval align 8 %c) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"*, %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"** %this.addr, align 8 %c2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"* %this1, i32 0, i32 0 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %c2 to i8* %1 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::closure.616"* %c to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 48, i32 8, i1 false) %g3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626", %"class.thrust::system::cuda::detail::bulk_::detail::task_base.626"* %this1, i32 0, i32 1 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g3 to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_(%"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623"* %this, i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* byval align 8 %task) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623"*, align 8 %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625", align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623"** %this.addr, align 8, !tbaa !1 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623"*, %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.623"** %this.addr, align 8 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %agg.tmp to i8* %5 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 80, i32 8, i1 false) call void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_(i32 %0, i32 %1, i64 %2, %struct.CUstream_st* %3, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* byval align 8 %agg.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail5bulk_6detail23triple_chevron_launcherILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE6launchEjjmP11CUstream_stS17_EN10workaround14supported_pathEjjmS1A_S17_(i32 %num_blocks, i32 %block_size, i64 %num_dynamic_smem_bytes, %struct.CUstream_st* %stream, %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* byval align 8 %task) #0 comdat align 2 { entry: %num_blocks.addr = alloca i32, align 4 %block_size.addr = alloca i32, align 4 %num_dynamic_smem_bytes.addr = alloca i64, align 8 %stream.addr = alloca %struct.CUstream_st*, align 8 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp1 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp1.coerce = alloca { i64, i32 }, align 4 %agg.tmp2 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625", align 8 store i32 %num_blocks, i32* %num_blocks.addr, align 4, !tbaa !11 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 store i64 %num_dynamic_smem_bytes, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 store %struct.CUstream_st* %stream, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %0 = load i32, i32* %num_blocks.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %0, i32 1, i32 1) %1 = load i32, i32* %block_size.addr, align 4, !tbaa !11 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp1, i32 %1, i32 1, i32 1) %2 = load i64, i64* %num_dynamic_smem_bytes.addr, align 8, !tbaa !13 %3 = load %struct.CUstream_st*, %struct.CUstream_st** %stream.addr, align 8, !tbaa !1 %4 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %5 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false) %6 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %7 = load i64, i64* %6, align 4 %8 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %9 = load i32, i32* %8, align 4 %10 = bitcast { i64, i32 }* %agg.tmp1.coerce to i8* %11 = bitcast %struct.dim3* %agg.tmp1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 12, i32 4, i1 false) %12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 0 %13 = load i64, i64* %12, align 4 %14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp1.coerce, i32 0, i32 1 %15 = load i32, i32* %14, align 4 %call = call i32 @cudaConfigureCall(i64 %7, i32 %9, i64 %13, i32 %15, i64 %2, %struct.CUstream_st* %3) %16 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %agg.tmp2 to i8* %17 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %task to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 80, i32 8, i1 false) %call3 = call i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIsEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* byval align 8 %agg.tmp2, i64 0) %call4 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrIsEEEESO_NSL_INS_7pointerIjNS2_3tagENS_11use_defaultESR_EEEENS_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEELb1EE23global_function_pointerEv() %call5 = call i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIsEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %call4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call5, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.37, i32 0, i32 0)) ret void } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL17cudaSetupArgumentIN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIsEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEE9cudaErrorT_m(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* byval align 8 %arg, i64 %offset) #8 { entry: %offset.addr = alloca i64, align 8 store i64 %offset, i64* %offset.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"* %arg to i8* %1 = load i64, i64* %offset.addr, align 8, !tbaa !13 %call = call i32 @cudaSetupArgument(i8* %0, i64 80, i64 %1) ret i32 %call } ; Function Attrs: inlinehint uwtable define internal i32 @_ZL10cudaLaunchIFvN6thrust6system4cuda6detail5bulk_6detail9cuda_taskINS4_14parallel_groupINS4_16concurrent_groupINS4_5agentILm1EEELm0EEELm0EEENS5_7closureINS3_17for_each_n_detail15for_each_kernelENS0_5tupleINS5_6cursorILj0EEENS0_12zip_iteratorINSG_INS0_6detail15normal_iteratorINS0_10device_ptrIsEEEESO_NSL_INS0_7pointerIjNS3_3tagENS0_11use_defaultESR_EEEENS0_9null_typeESU_SU_SU_SU_SU_SU_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINSK_13binary_negateINS0_8equal_toIsEEEEEEvEEjSU_SU_SU_SU_SU_SU_EEEEEEEE9cudaErrorPT_(void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %func) #8 { entry: %func.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)*, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %func, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)** %func.addr, align 8, !tbaa !1 %0 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)** %func.addr, align 8, !tbaa !1 %1 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.625"*)* %0 to i8* %call = call i32 @cudaLaunch(i8* %1) ret i32 %call } ; Function Attrs: uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.609"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElEpLEl(%"class.thrust::iterator_facade.610"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.610"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.610"* %this, %"class.thrust::iterator_facade.610"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.610"*, %"class.thrust::iterator_facade.610"** %this.addr, align 8 %call = call dereferenceable(24) %"class.thrust::zip_iterator.609"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElE7derivedEv(%"class.thrust::iterator_facade.610"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEEEEvRT_NSK_15difference_typeE(%"class.thrust::zip_iterator.609"* dereferenceable(24) %call, i64 %0) %call2 = call dereferenceable(24) %"class.thrust::zip_iterator.609"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElE7derivedEv(%"class.thrust::iterator_facade.610"* %this1) ret %"class.thrust::zip_iterator.609"* %call2 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust20iterator_core_access7advanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEEEEvRT_NSK_15difference_typeE(%"class.thrust::zip_iterator.609"* dereferenceable(24) %f, i64 %n) #0 comdat align 2 { entry: %f.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::zip_iterator.609"* %f, %"class.thrust::zip_iterator.609"** %f.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %f.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE7advanceEl(%"class.thrust::zip_iterator.609"* %0, i64 %1) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::zip_iterator.609"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElE7derivedEv(%"class.thrust::iterator_facade.610"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.610"*, align 8 store %"class.thrust::iterator_facade.610"* %this, %"class.thrust::iterator_facade.610"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.610"*, %"class.thrust::iterator_facade.610"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.610"* %this1 to %"class.thrust::zip_iterator.609"* ret %"class.thrust::zip_iterator.609"* %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE7advanceEl(%"class.thrust::zip_iterator.609"* %this, i64 %n) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce = alloca %"class.thrust::detail::advance_iterator", align 8 store %"class.thrust::zip_iterator.609"* %this, %"class.thrust::zip_iterator.609"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.609", %"class.thrust::zip_iterator.609"* %this1, i32 0, i32 0 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrust6detail16advance_iteratorIlEC2El(%"class.thrust::detail::advance_iterator"* %agg.tmp, i64 %0) %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %1 = load i64, i64* %coerce.dive, align 8 %call = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EENS0_16advance_iteratorIlEEEET0_RT_SK_(%"class.thrust::tuple.611"* dereferenceable(24) %m_iterator_tuple, i64 %1) %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %coerce, i32 0, i32 0 store i64 %call, i64* %coerce.dive2, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS_5tupleINS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EENS0_16advance_iteratorIlEEEET0_RT_SK_(%"class.thrust::tuple.611"* dereferenceable(24) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"class.thrust::tuple.611"*, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"class.thrust::tuple.611"* %t, %"class.thrust::tuple.611"** %t.addr, align 8, !tbaa !7 %0 = load %"class.thrust::tuple.611"*, %"class.thrust::tuple.611"** %t.addr, align 8 %1 = bitcast %"class.thrust::tuple.611"* %0 to %"struct.thrust::detail::cons.612"* %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.612"* %1) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrIsEEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %call) %2 = load %"class.thrust::tuple.611"*, %"class.thrust::tuple.611"** %t.addr, align 8 %3 = bitcast %"class.thrust::tuple.611"* %2 to %"struct.thrust::detail::cons.612"* %call1 = call dereferenceable(16) %"struct.thrust::detail::cons.613"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.612"* %3) %4 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp to i8* %5 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %6 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS3_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SL_(%"struct.thrust::detail::cons.613"* dereferenceable(16) %call1, i64 %6) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %7 = load i64, i64* %coerce.dive5, align 8 ret i64 %7 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrIsEEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %it) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::advance_iterator"*, align 8 %it.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 store %"class.thrust::detail::advance_iterator"* %this, %"class.thrust::detail::advance_iterator"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.493"* %it, %"class.thrust::detail::normal_iterator.493"** %it.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::advance_iterator"*, %"class.thrust::detail::advance_iterator"** %this.addr, align 8 %0 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %it.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.493"* %0 to %"class.thrust::iterator_facade.495"* %m_step = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %this1, i32 0, i32 0 %2 = load i64, i64* %m_step, align 8, !tbaa !204 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEpLEl(%"class.thrust::iterator_facade.495"* %1, i64 %2) ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_headEv(%"struct.thrust::detail::cons.612"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.612"*, align 8 store %"struct.thrust::detail::cons.612"* %this, %"struct.thrust::detail::cons.612"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.612"*, %"struct.thrust::detail::cons.612"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.612", %"struct.thrust::detail::cons.612"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.493"* %head } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS3_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeEEEEENS0_16advance_iteratorIlEEEET0_RT_SL_(%"struct.thrust::detail::cons.613"* dereferenceable(16) %t, i64 %f.coerce) #8 comdat { entry: %retval = alloca %"class.thrust::detail::advance_iterator", align 8 %f = alloca %"class.thrust::detail::advance_iterator", align 8 %t.addr = alloca %"struct.thrust::detail::cons.613"*, align 8 %agg.tmp = alloca %"class.thrust::detail::advance_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %f, i32 0, i32 0 store i64 %f.coerce, i64* %coerce.dive, align 8 store %"struct.thrust::detail::cons.613"* %t, %"struct.thrust::detail::cons.613"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.613"*, %"struct.thrust::detail::cons.613"** %t.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.613"* %0) call void @_ZNK6thrust6detail16advance_iteratorIlEclINS0_15normal_iteratorINS_10device_ptrIsEEEEEEvRT_(%"class.thrust::detail::advance_iterator"* %f, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %call) %1 = load %"struct.thrust::detail::cons.613"*, %"struct.thrust::detail::cons.613"** %t.addr, align 8 %call1 = call dereferenceable(8) %"struct.thrust::detail::cons.220"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.613"* %1) %2 = bitcast %"class.thrust::detail::advance_iterator"* %agg.tmp to i8* %3 = bitcast %"class.thrust::detail::advance_iterator"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false), !tbaa.struct !203 %coerce.dive2 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %agg.tmp, i32 0, i32 0 %4 = load i64, i64* %coerce.dive2, align 8 %call3 = call i64 @_ZN6thrust6detail19tuple_impl_specific14tuple_for_eachINS0_4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS_9null_typeEEENS0_16advance_iteratorIlEEEET0_RT_SH_(%"struct.thrust::detail::cons.220"* dereferenceable(8) %call1, i64 %4) %coerce.dive4 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 store i64 %call3, i64* %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::advance_iterator", %"class.thrust::detail::advance_iterator"* %retval, i32 0, i32 0 %5 = load i64, i64* %coerce.dive5, align 8 ret i64 %5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(16) %"struct.thrust::detail::cons.613"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEE8get_tailEv(%"struct.thrust::detail::cons.612"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.612"*, align 8 store %"struct.thrust::detail::cons.612"* %this, %"struct.thrust::detail::cons.612"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.612"*, %"struct.thrust::detail::cons.612"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.612", %"struct.thrust::detail::cons.612"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.613"* %tail } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_headEv(%"struct.thrust::detail::cons.613"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.613"*, align 8 store %"struct.thrust::detail::cons.613"* %this, %"struct.thrust::detail::cons.613"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.613"*, %"struct.thrust::detail::cons.613"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.613", %"struct.thrust::detail::cons.613"* %this1, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.493"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"struct.thrust::detail::cons.220"* @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEE8get_tailEv(%"struct.thrust::detail::cons.613"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.613"*, align 8 store %"struct.thrust::detail::cons.613"* %this, %"struct.thrust::detail::cons.613"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::cons.613"*, %"struct.thrust::detail::cons.613"** %this.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.613", %"struct.thrust::detail::cons.613"* %this1, i32 0, i32 1 ret %"struct.thrust::detail::cons.220"* %tail } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESA_NS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESF_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EEEEEENS_15iterator_traitsIT_E15difference_typeESM_SM_(%"class.thrust::zip_iterator.609"* byval align 8 %first, %"class.thrust::zip_iterator.609"* byval align 8 %last) #8 comdat { entry: %agg.tmp = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.609", align 8 %agg.tmp2 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %0 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp to i8* %1 = bitcast %"class.thrust::zip_iterator.609"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) %2 = bitcast %"class.thrust::zip_iterator.609"* %agg.tmp1 to i8* %3 = bitcast %"class.thrust::zip_iterator.609"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEEEENS_15iterator_traitsIT_E15difference_typeESN_SN_NS_27random_access_traversal_tagE(%"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.609"* byval align 8 %agg.tmp1) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust6system6detail7generic6detail8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEESB_NS8_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEEEENS_15iterator_traitsIT_E15difference_typeESN_SN_NS_27random_access_traversal_tagE(%"class.thrust::zip_iterator.609"* byval align 8 %first, %"class.thrust::zip_iterator.609"* byval align 8 %last) #8 comdat { entry: %0 = alloca %"struct.thrust::random_access_traversal_tag", align 1 %1 = bitcast %"class.thrust::zip_iterator.609"* %last to %"class.thrust::iterator_facade.610"* %2 = bitcast %"class.thrust::zip_iterator.609"* %first to %"class.thrust::iterator_facade.610"* %call = call i64 @_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElSI_SJ_SC_SK_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_(%"class.thrust::iterator_facade.610"* dereferenceable(1) %1, %"class.thrust::iterator_facade.610"* dereferenceable(1) %2) ret i64 %call } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrustmiINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES7_NS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS_9null_typeESG_SG_SG_SG_SG_SG_EEEENS2_IssjSG_SG_SG_SG_SG_SG_SG_EESC_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIsEESN_NS_9referenceIjSE_SD_EESG_SG_SG_SG_SG_SG_SG_EElSI_SJ_SC_SK_SQ_lEENS3_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSS_IT5_T6_T7_T8_T9_T10_EEE4typeERKSZ_RKS16_(%"class.thrust::iterator_facade.610"* dereferenceable(1) %lhs, %"class.thrust::iterator_facade.610"* dereferenceable(1) %rhs) #8 comdat { entry: %lhs.addr = alloca %"class.thrust::iterator_facade.610"*, align 8 %rhs.addr = alloca %"class.thrust::iterator_facade.610"*, align 8 store %"class.thrust::iterator_facade.610"* %lhs, %"class.thrust::iterator_facade.610"** %lhs.addr, align 8, !tbaa !7 store %"class.thrust::iterator_facade.610"* %rhs, %"class.thrust::iterator_facade.610"** %rhs.addr, align 8, !tbaa !7 %0 = load %"class.thrust::iterator_facade.610"*, %"class.thrust::iterator_facade.610"** %lhs.addr, align 8 %1 = bitcast %"class.thrust::iterator_facade.610"* %0 to %"class.thrust::zip_iterator.609"* %2 = load %"class.thrust::iterator_facade.610"*, %"class.thrust::iterator_facade.610"** %rhs.addr, align 8 %3 = bitcast %"class.thrust::iterator_facade.610"* %2 to %"class.thrust::zip_iterator.609"* %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENS4_20distance_from_resultIT_T0_E4typeERKSL_RKSM_(%"class.thrust::zip_iterator.609"* dereferenceable(24) %1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %3) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENS4_20distance_from_resultIT_T0_E4typeERKSL_RKSM_(%"class.thrust::zip_iterator.609"* dereferenceable(24) %f1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %f2) #0 comdat align 2 { entry: %f1.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %agg.tmp = alloca %"struct.thrust::detail::integral_constant", align 1 store %"class.thrust::zip_iterator.609"* %f1, %"class.thrust::zip_iterator.609"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %f2, %"class.thrust::zip_iterator.609"** %f2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %f1.addr, align 8 %1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %f2.addr, align 8 %call = call i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENT_15difference_typeERKSK_RKT0_NS4_17integral_constantIbLb1EEE(%"class.thrust::zip_iterator.609"* dereferenceable(24) %0, %"class.thrust::zip_iterator.609"* dereferenceable(24) %1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust20iterator_core_access13distance_fromINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES8_NS5_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS_9null_typeESH_SH_SH_SH_SH_SH_EEEESJ_EENT_15difference_typeERKSK_RKT0_NS4_17integral_constantIbLb1EEE(%"class.thrust::zip_iterator.609"* dereferenceable(24) %f1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %f2) #0 comdat align 2 { entry: %0 = alloca %"struct.thrust::detail::integral_constant", align 1 %f1.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %f2.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 store %"class.thrust::zip_iterator.609"* %f1, %"class.thrust::zip_iterator.609"** %f1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.609"* %f2, %"class.thrust::zip_iterator.609"** %f2.addr, align 8, !tbaa !7 %1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %f1.addr, align 8 %2 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %f2.addr, align 8 %call = call i64 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE11distance_toISG_EElRKNS0_IT_EE(%"class.thrust::zip_iterator.609"* %1, %"class.thrust::zip_iterator.609"* dereferenceable(24) %2) %sub = sub nsw i64 0, %call ret i64 %sub } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE11distance_toISG_EElRKNS0_IT_EE(%"class.thrust::zip_iterator.609"* %this, %"class.thrust::zip_iterator.609"* dereferenceable(24) %other) #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 %other.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 store %"class.thrust::zip_iterator.609"* %this, %"class.thrust::zip_iterator.609"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.609"* %other, %"class.thrust::zip_iterator.609"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %this.addr, align 8 %0 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %other.addr, align 8 %call = call dereferenceable(24) %"class.thrust::tuple.611"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.609"* %0) %1 = bitcast %"class.thrust::tuple.611"* %call to %"struct.thrust::detail::cons.612"* %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.612"* dereferenceable(24) %1) %2 = bitcast %"class.thrust::detail::normal_iterator.493"* %call2 to %"class.thrust::iterator_facade.495"* %call3 = call dereferenceable(24) %"class.thrust::tuple.611"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.609"* %this1) %3 = bitcast %"class.thrust::tuple.611"* %call3 to %"struct.thrust::detail::cons.612"* %call4 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.612"* dereferenceable(24) %3) %4 = bitcast %"class.thrust::detail::normal_iterator.493"* %call4 to %"class.thrust::iterator_facade.495"* %call5 = call i64 @_ZN6thrustmiINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElS5_sS9_SA_SC_lEENS1_20distance_from_resultINS_15iterator_facadeIT_T0_T1_T2_T3_T4_EENSE_IT5_T6_T7_T8_T9_T10_EEE4typeERKSL_RKSS_(%"class.thrust::iterator_facade.495"* dereferenceable(1) %2, %"class.thrust::iterator_facade.495"* dereferenceable(1) %4) ret i64 %call5 } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust3getILi0ENS_6detail15normal_iteratorINS_10device_ptrIsEEEENS1_4consIS5_NS6_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS6_IT0_T1_EEE4typeEE10const_typeERKSM_(%"struct.thrust::detail::cons.612"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.612"*, align 8 store %"struct.thrust::detail::cons.612"* %c, %"struct.thrust::detail::cons.612"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.612"*, %"struct.thrust::detail::cons.612"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS0_4consIS7_NSA_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeEEEEEEET_RKNSA_IT0_T1_EE(%"struct.thrust::detail::cons.612"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.493"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_10device_ptrIsEEEES7_NS0_4consIS7_NSA_INS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESG_EEEENS_9null_typeEEEEEEET_RKNSA_IT0_T1_EE(%"struct.thrust::detail::cons.612"* dereferenceable(24) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.612"*, align 8 store %"struct.thrust::detail::cons.612"* %t, %"struct.thrust::detail::cons.612"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.612"*, %"struct.thrust::detail::cons.612"** %t.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.612", %"struct.thrust::detail::cons.612"* %0, i32 0, i32 0 ret %"class.thrust::detail::normal_iterator.493"* %head } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES6_NS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS_9null_typeESF_SF_SF_SF_SF_SF_EEEC2ESG_(%"class.thrust::zip_iterator.609"* %this, %"class.thrust::tuple.611"* byval align 8 %iterator_tuple) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.609"*, align 8 store %"class.thrust::zip_iterator.609"* %this, %"class.thrust::zip_iterator.609"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.609"*, %"class.thrust::zip_iterator.609"** %this.addr, align 8 %0 = bitcast %"class.thrust::zip_iterator.609"* %this1 to %"class.thrust::iterator_facade.610"* %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.609", %"class.thrust::zip_iterator.609"* %this1, i32 0, i32 0 %1 = bitcast %"class.thrust::tuple.611"* %m_iterator_tuple to i8* %2 = bitcast %"class.thrust::tuple.611"* %iterator_tuple to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrIsEEEES5_NS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeESE_SE_SE_SE_SE_SE_EC2ERKS5_SH_RKSD_(%"class.thrust::tuple.611"* %this, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t2) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.611"*, align 8 %t0.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 %ref.tmp7 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.611"* %this, %"class.thrust::tuple.611"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.493"* %t0, %"class.thrust::detail::normal_iterator.493"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.493"* %t1, %"class.thrust::detail::normal_iterator.493"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t2, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.611"*, %"class.thrust::tuple.611"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.611"* %this1 to %"struct.thrust::detail::cons.612"* %1 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %t0.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %t1.addr, align 8 %3 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEEC2IKS5_SJ_KSD_KSE_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.612"* %0, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %2, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp7) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_IS5_NS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEEEC2IKS5_SJ_KSD_KSE_SL_SL_SL_SL_SL_SL_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.612"* %this, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %t2, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.612"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %t3.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.612"* %this, %"struct.thrust::detail::cons.612"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.493"* %t1, %"class.thrust::detail::normal_iterator.493"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.493"* %t2, %"class.thrust::detail::normal_iterator.493"** %t2.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t3, %"class.thrust::detail::normal_iterator.199"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.612"*, %"struct.thrust::detail::cons.612"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.612", %"struct.thrust::detail::cons.612"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.493"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.493"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.612", %"struct.thrust::detail::cons.612"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %t2.addr, align 8 %4 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEC2IKS5_KSD_KSE_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.613"* %tail, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %3, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_10device_ptrIsEEEENS1_INS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESB_EEEENS_9null_typeEEEEC2IKS5_KSD_KSE_SK_SK_SK_SK_SK_SK_SK_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.613"* %this, %"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.613"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.493"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.613"* %this, %"struct.thrust::detail::cons.613"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::normal_iterator.493"* %t1, %"class.thrust::detail::normal_iterator.493"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t2, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.613"*, %"struct.thrust::detail::cons.613"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.613", %"struct.thrust::detail::cons.613"* %this1, i32 0, i32 0 %0 = load %"class.thrust::detail::normal_iterator.493"*, %"class.thrust::detail::normal_iterator.493"** %t1.addr, align 8 %1 = bitcast %"class.thrust::detail::normal_iterator.493"* %head to i8* %2 = bitcast %"class.thrust::detail::normal_iterator.493"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.613", %"struct.thrust::detail::cons.613"* %this1, i32 0, i32 1 %3 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_9null_typeEEC2IKSA_EERT_RKSB_SI_SI_SI_SI_SI_SI_SI_SI_(%"struct.thrust::detail::cons.220"* %tail, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIsEEEENS0_4consISH_NSI_ISC_NS_9null_typeEEEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.612"* dereferenceable(24) %t) #8 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.612"*, align 8 store %"struct.thrust::detail::cons.612"* %t, %"struct.thrust::detail::cons.612"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.612"*, %"struct.thrust::detail::cons.612"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.612", %"struct.thrust::detail::cons.612"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIsEEEENS0_4consISC_NS_9null_typeEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.613"* dereferenceable(16) %tail) ret %"class.thrust::detail::normal_iterator.199"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi1EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEENS4_INS_10device_ptrIsEEEENS0_4consISC_NS_9null_typeEEEEET_RKNSI_IT0_T1_EE(%"struct.thrust::detail::cons.613"* dereferenceable(16) %t) #9 comdat align 2 { entry: %t.addr = alloca %"struct.thrust::detail::cons.613"*, align 8 store %"struct.thrust::detail::cons.613"* %t, %"struct.thrust::detail::cons.613"** %t.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.613"*, %"struct.thrust::detail::cons.613"** %t.addr, align 8 %tail = getelementptr inbounds %"struct.thrust::detail::cons.613", %"struct.thrust::detail::cons.613"* %0, i32 0, i32 1 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.199"* @_ZN6thrust6detail9get_classILi0EE3getIRKNS0_15normal_iteratorINS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESC_NS_9null_typeEEET_RKNS0_4consIT0_T1_EE(%"struct.thrust::detail::cons.220"* dereferenceable(8) %tail) ret %"class.thrust::detail::normal_iterator.199"* %call } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZNK6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.495"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.495"*, align 8 store %"class.thrust::iterator_facade.495"* %this, %"class.thrust::iterator_facade.495"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_facade.495"*, %"class.thrust::iterator_facade.495"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_facade.495"* %this1 to %"class.thrust::detail::normal_iterator.493"* ret %"class.thrust::detail::normal_iterator.493"* %0 } ; Function Attrs: uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElEmIEl(%"class.thrust::iterator_facade.495"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_facade.495"*, align 8 %n.addr = alloca i64, align 8 store %"class.thrust::iterator_facade.495"* %this, %"class.thrust::iterator_facade.495"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::iterator_facade.495"*, %"class.thrust::iterator_facade.495"** %this.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.495"* %this1) %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %sub = sub nsw i64 0, %0 call void @_ZN6thrust20iterator_core_access7advanceINS_6detail15normal_iteratorINS_10device_ptrIsEEEEEEvRT_NS7_15difference_typeE(%"class.thrust::detail::normal_iterator.493"* dereferenceable(8) %call, i64 %sub) %call2 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.493"* @_ZN6thrust15iterator_facadeINS_6detail15normal_iteratorINS_10device_ptrIsEEEEsNS_6system4cuda6detail3tagENS_27random_access_traversal_tagENS_16device_referenceIsEElE7derivedEv(%"class.thrust::iterator_facade.495"* %this1) ret %"class.thrust::detail::normal_iterator.493"* %call2 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail13binary_negateINS_8equal_toIsEEEC2ERKS3_(%"struct.thrust::detail::binary_negate.589"* %this, %"struct.thrust::equal_to.512"* dereferenceable(1) %pred) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::binary_negate.589"*, align 8 %pred.addr = alloca %"struct.thrust::equal_to.512"*, align 8 store %"struct.thrust::detail::binary_negate.589"* %this, %"struct.thrust::detail::binary_negate.589"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::equal_to.512"* %pred, %"struct.thrust::equal_to.512"** %pred.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::binary_negate.589"*, %"struct.thrust::detail::binary_negate.589"** %this.addr, align 8 %pred2 = getelementptr inbounds %"struct.thrust::detail::binary_negate.589", %"struct.thrust::detail::binary_negate.589"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::equal_to.512"*, %"struct.thrust::equal_to.512"** %pred.addr, align 8 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERNS_16execution_policyIS7_EE(%"class.thrust::detail::temporary_allocator.593"* %this, %"struct.thrust::execution_policy.120"* dereferenceable(1) %system) unnamed_addr #8 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.593"*, align 8 %system.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::temporary_allocator.593"* %this, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::execution_policy.120"* %system, %"struct.thrust::execution_policy.120"** %system.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator.593"*, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator.593"* %this1 to %"class.thrust::detail::tagged_allocator.594"* call void @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev(%"class.thrust::detail::tagged_allocator.594"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.593", %"class.thrust::detail::temporary_allocator.593"* %this1, i32 0, i32 0 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %system.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %call = invoke dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store %"struct.thrust::system::cuda::detail::tag"* %call, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 %6 = bitcast %"class.thrust::detail::temporary_allocator.593"* %this1 to %"class.thrust::detail::tagged_allocator.594"* call void @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev(%"class.thrust::detail::tagged_allocator.594"* %6) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEC2ERKS9_(%"struct.thrust::detail::no_throw_allocator.592"* %this, %"class.thrust::detail::temporary_allocator.593"* dereferenceable(8) %other) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.592"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator.593"*, align 8 store %"struct.thrust::detail::no_throw_allocator.592"* %this, %"struct.thrust::detail::no_throw_allocator.592"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator.593"* %other, %"class.thrust::detail::temporary_allocator.593"** %other.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator.592"*, %"struct.thrust::detail::no_throw_allocator.592"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator.592"* %this1 to %"class.thrust::detail::temporary_allocator.593"* %1 = load %"class.thrust::detail::temporary_allocator.593"*, %"class.thrust::detail::temporary_allocator.593"** %other.addr, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERKS8_(%"class.thrust::detail::temporary_allocator.593"* %0, %"class.thrust::detail::temporary_allocator.593"* dereferenceable(8) %1) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEEC2EmRKSB_(%"class.thrust::detail::contiguous_storage.591"* %this, i64 %n, %"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %alloc) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.591"*, align 8 %n.addr = alloca i64, align 8 %alloc.addr = alloca %"struct.thrust::detail::no_throw_allocator.592"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.591"* %this, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 store %"struct.thrust::detail::no_throw_allocator.592"* %alloc, %"struct.thrust::detail::no_throw_allocator.592"** %alloc.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::contiguous_storage.591"*, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::no_throw_allocator.592"*, %"struct.thrust::detail::no_throw_allocator.592"** %alloc.addr, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEC2ERKSA_(%"struct.thrust::detail::no_throw_allocator.592"* %m_allocator, %"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %0) %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 1 invoke void @_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.562"* %agg.tmp, %"struct.thrust::pair.487"* null) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive2, align 8 invoke void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.596"* %m_begin, %"struct.thrust::pair.487"* %1) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !409 %2 = load i64, i64* %n.addr, align 8, !tbaa !13 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.591"* %this1, i64 %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont3 ret void lpad: ; preds = %invoke.cont3, %invoke.cont, %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 call void bitcast (void (%"class.thrust::detail::tagged_allocator.594"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.592"*)*)(%"struct.thrust::detail::no_throw_allocator.592"* %m_allocator) #5 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev(%"class.thrust::detail::tagged_allocator.594"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator.594"*, align 8 store %"class.thrust::detail::tagged_allocator.594"* %this, %"class.thrust::detail::tagged_allocator.594"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator.594"*, %"class.thrust::detail::tagged_allocator.594"** %this.addr, align 8 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail22temporary_array_detail16construct_valuesINS_4pairIssEENS0_15temporary_arrayIS4_NS_6system4cuda6detail3tagEEEmEENS0_9enable_ifIXsr20avoid_initializationIT_EE5valueEvE4typeERT0_T1_(%"class.thrust::detail::temporary_array.590"* dereferenceable(24), i64) #1 comdat { entry: %.addr = alloca %"class.thrust::detail::temporary_array.590"*, align 8 %.addr1 = alloca i64, align 8 store %"class.thrust::detail::temporary_array.590"* %0, %"class.thrust::detail::temporary_array.590"** %.addr, align 8, !tbaa !7 store i64 %1, i64* %.addr1, align 8, !tbaa !13 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEED2Ev(%"class.thrust::detail::contiguous_storage.591"* %this) unnamed_addr #1 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.591"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.thrust::detail::contiguous_storage.591"* %this, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.591"*, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8 invoke void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.591"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator.594"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.592"*)*)(%"struct.thrust::detail::no_throw_allocator.592"* %m_allocator) #5 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } catch i8* null %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %m_allocator2 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 0 call void bitcast (void (%"class.thrust::detail::tagged_allocator.594"*)* @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEED2Ev to void (%"struct.thrust::detail::no_throw_allocator.592"*)*)(%"struct.thrust::detail::no_throw_allocator.592"* %m_allocator2) #5 br label %terminate.handler terminate.handler: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 call void @__clang_call_terminate(i8* %exn) #13 unreachable } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev(%"class.thrust::detail::tagged_allocator.594"* %this) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::tagged_allocator.594"*, align 8 store %"class.thrust::detail::tagged_allocator.594"* %this, %"class.thrust::detail::tagged_allocator.594"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::tagged_allocator.594"*, %"class.thrust::detail::tagged_allocator.594"** %this.addr, align 8 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERKS8_(%"class.thrust::detail::temporary_allocator.593"* %this, %"class.thrust::detail::temporary_allocator.593"* dereferenceable(8) %other) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.593"*, align 8 %other.addr = alloca %"class.thrust::detail::temporary_allocator.593"*, align 8 store %"class.thrust::detail::temporary_allocator.593"* %this, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8, !tbaa !1 store %"class.thrust::detail::temporary_allocator.593"* %other, %"class.thrust::detail::temporary_allocator.593"** %other.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::detail::temporary_allocator.593"*, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::temporary_allocator.593"* %this1 to %"class.thrust::detail::tagged_allocator.594"* call void @_ZN6thrust6detail16tagged_allocatorINS_4pairIssEENS_6system4cuda6detail3tagENS_7pointerIS3_S7_NS_11use_defaultES9_EEEC2Ev(%"class.thrust::detail::tagged_allocator.594"* %0) %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.593", %"class.thrust::detail::temporary_allocator.593"* %this1, i32 0, i32 0 %1 = load %"class.thrust::detail::temporary_allocator.593"*, %"class.thrust::detail::temporary_allocator.593"** %other.addr, align 8 %m_system2 = getelementptr inbounds %"class.thrust::detail::temporary_allocator.593", %"class.thrust::detail::temporary_allocator.593"* %1, i32 0, i32 0 %ref = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %m_system2, align 8, !tbaa !7 store %"struct.thrust::system::cuda::detail::tag"* %ref, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEC2ERKSA_(%"struct.thrust::detail::no_throw_allocator.592"* %this, %"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8)) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.592"*, align 8 %.addr = alloca %"struct.thrust::detail::no_throw_allocator.592"*, align 8 store %"struct.thrust::detail::no_throw_allocator.592"* %this, %"struct.thrust::detail::no_throw_allocator.592"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::no_throw_allocator.592"* %0, %"struct.thrust::detail::no_throw_allocator.592"** %.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::no_throw_allocator.592"*, %"struct.thrust::detail::no_throw_allocator.592"** %this.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.592"* %this1 to %"class.thrust::detail::temporary_allocator.593"* %2 = load %"struct.thrust::detail::no_throw_allocator.592"*, %"struct.thrust::detail::no_throw_allocator.592"** %.addr, align 8 %3 = bitcast %"struct.thrust::detail::no_throw_allocator.592"* %2 to %"class.thrust::detail::temporary_allocator.593"* call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEC2ERKS8_(%"class.thrust::detail::temporary_allocator.593"* %1, %"class.thrust::detail::temporary_allocator.593"* dereferenceable(8) %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.596"* %this, %"struct.thrust::pair.487"* %p.coerce) unnamed_addr #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.562", align 8 %this.addr = alloca %"class.thrust::detail::normal_iterator.596"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"class.thrust::detail::normal_iterator.596"* %this, %"class.thrust::detail::normal_iterator.596"** %this.addr, align 8, !tbaa !1 %this2 = load %"class.thrust::detail::normal_iterator.596"*, %"class.thrust::detail::normal_iterator.596"** %this.addr, align 8 %0 = bitcast %"class.thrust::detail::normal_iterator.596"* %this2 to %"class.thrust::iterator_adaptor.597"* call void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_(%"class.thrust::iterator_adaptor.597"* %0, %"class.thrust::pointer.562"* dereferenceable(8) %p) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE8allocateEm(%"class.thrust::detail::contiguous_storage.591"* %this, i64 %n) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.591"*, align 8 %n.addr = alloca i64, align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.596", align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %ref.tmp6 = alloca %"class.thrust::detail::normal_iterator.596", align 8 %agg.tmp7 = alloca %"class.thrust::pointer.562", align 8 store %"class.thrust::detail::contiguous_storage.591"* %this, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::contiguous_storage.591"*, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8 %0 = load i64, i64* %n.addr, align 8, !tbaa !13 %cmp = icmp ugt i64 %0, 0 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 1 %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 0 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_m(%"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %m_allocator, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive2, align 8 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive3, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.596"* %ref.tmp, %"struct.thrust::pair.487"* %2) %3 = bitcast %"class.thrust::detail::normal_iterator.596"* %m_begin to i8* %4 = bitcast %"class.thrust::detail::normal_iterator.596"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 8, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 2 store i64 %5, i64* %m_size, align 8, !tbaa !409 br label %if.end if.else: ; preds = %entry %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.562"* %agg.tmp7, %"struct.thrust::pair.487"* null) %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive8, i32 0, i32 0 %6 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive9, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.596"* %ref.tmp6, %"struct.thrust::pair.487"* %6) %7 = bitcast %"class.thrust::detail::normal_iterator.596"* %m_begin5 to i8* %8 = bitcast %"class.thrust::detail::normal_iterator.596"* %ref.tmp6 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 8, i32 8, i1 false) %m_size10 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 2 store i64 0, i64* %m_size10, align 8, !tbaa !409 br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_EC2ERKSB_(%"class.thrust::iterator_adaptor.597"* %this, %"class.thrust::pointer.562"* dereferenceable(8) %iter) unnamed_addr #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.597"*, align 8 %iter.addr = alloca %"class.thrust::pointer.562"*, align 8 store %"class.thrust::iterator_adaptor.597"* %this, %"class.thrust::iterator_adaptor.597"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.562"* %iter, %"class.thrust::pointer.562"** %iter.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::iterator_adaptor.597"*, %"class.thrust::iterator_adaptor.597"** %this.addr, align 8 %0 = bitcast %"class.thrust::iterator_adaptor.597"* %this1 to %"class.thrust::iterator_facade.598"* %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %this1, i32 0, i32 0 %1 = load %"class.thrust::pointer.562"*, %"class.thrust::pointer.562"** %iter.addr, align 8 %2 = bitcast %"class.thrust::pointer.562"* %m_iterator to i8* %3 = bitcast %"class.thrust::pointer.562"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_m(%"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %a, i64 %n) #8 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.562", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.592"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator.592"* %a, %"struct.thrust::detail::no_throw_allocator.592"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.592"*, %"struct.thrust::detail::no_throw_allocator.592"** %a.addr, align 8 %1 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m(%"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %0, i64 %1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive2, i32 0, i32 0 %2 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 ret %"struct.thrust::pair.487"* %2 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE8allocateERSB_mEN19workaround_warnings8allocateESD_m(%"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %a, i64 %n) #0 comdat align 2 { entry: %retval = alloca %"class.thrust::pointer.562", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.592"*, align 8 %n.addr = alloca i64, align 8 store %"struct.thrust::detail::no_throw_allocator.592"* %a, %"struct.thrust::detail::no_throw_allocator.592"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.592"*, %"struct.thrust::detail::no_throw_allocator.592"** %a.addr, align 8 %1 = bitcast %"struct.thrust::detail::no_throw_allocator.592"* %0 to %"class.thrust::detail::temporary_allocator.593"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator.593"* %1, i64 %2) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %retval, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %retval, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive2, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 ret %"struct.thrust::pair.487"* %3 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE8allocateEm(%"class.thrust::detail::temporary_allocator.593"* %this, i64 %cnt) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca %"class.thrust::pointer.562", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator.593"*, align 8 %cnt.addr = alloca i64, align 8 %result = alloca %"struct.thrust::pair.640", align 8 %ref.tmp = alloca %"struct.thrust::pair.641", align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %ref.tmp4 = alloca %"class.std::basic_string", align 8 %ref.tmp5 = alloca %"class.std::allocator", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %cleanup.isactive = alloca i1, align 1 store %"class.thrust::detail::temporary_allocator.593"* %this, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8, !tbaa !1 store i64 %cnt, i64* %cnt.addr, align 8, !tbaa !13 %this1 = load %"class.thrust::detail::temporary_allocator.593"*, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8 %0 = bitcast %"struct.thrust::pair.640"* %result to i8* call void @llvm.lifetime.start(i64 16, i8* %0) #5 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.593"* %this1) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %2 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %call2 = call { %"struct.thrust::pair.487"*, i64 } @_ZN6thrust20get_temporary_bufferINS_4pairIssEENS_6system4cuda6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.641"* %ref.tmp to { %"struct.thrust::pair.487"*, i64 }* %4 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { %"struct.thrust::pair.487"*, i64 } %call2, 0 store %"struct.thrust::pair.487"* %5, %"struct.thrust::pair.487"** %4, align 8 %6 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { %"struct.thrust::pair.487"*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 call void @_ZN6thrust4pairINS_7pointerINS0_IssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.640"* %result, %"struct.thrust::pair.641"* dereferenceable(16) %ref.tmp) %second = getelementptr inbounds %"struct.thrust::pair.640", %"struct.thrust::pair.640"* %result, i32 0, i32 1 %8 = load i64, i64* %second, align 8, !tbaa !413 %9 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %cmp = icmp ult i64 %8, %9 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %first = getelementptr inbounds %"struct.thrust::pair.640", %"struct.thrust::pair.640"* %result, i32 0, i32 0 %10 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %11 = bitcast %"class.thrust::pointer.562"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = load i64, i64* %cnt.addr, align 8, !tbaa !13 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 %13 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 call void @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm(%"class.thrust::detail::temporary_allocator.593"* %this1, %"struct.thrust::pair.487"* %13, i64 %12) %exception = call i8* @__cxa_allocate_exception(i64 16) #5 store i1 true, i1* %cleanup.isactive, align 1 %14 = bitcast i8* %exception to %"class.thrust::system::detail::bad_alloc"* call void @_ZNSaIcEC2Ev(%"class.std::allocator"* %ref.tmp5) #5 invoke void @_ZNSsC1EPKcRKSaIcE(%"class.std::basic_string"* %ref.tmp4, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.44, i32 0, i32 0), %"class.std::allocator"* dereferenceable(1) %ref.tmp5) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then invoke void @_ZN6thrust6system6detail9bad_allocC2ERKSs(%"class.thrust::system::detail::bad_alloc"* %14, %"class.std::basic_string"* dereferenceable(8) %ref.tmp4) to label %invoke.cont7 unwind label %lpad6 invoke.cont7: ; preds = %invoke.cont store i1 false, i1* %cleanup.isactive, align 1 invoke void @__cxa_throw(i8* %exception, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN6thrust6system6detail9bad_allocE to i8*), i8* bitcast (void (%"class.thrust::system::detail::bad_alloc"*)* @_ZN6thrust6system6detail9bad_allocD2Ev to i8*)) #15 to label %unreachable unwind label %lpad6 lpad: ; preds = %if.then %15 = landingpad { i8*, i32 } cleanup %16 = extractvalue { i8*, i32 } %15, 0 store i8* %16, i8** %exn.slot, align 8 %17 = extractvalue { i8*, i32 } %15, 1 store i32 %17, i32* %ehselector.slot, align 4 br label %ehcleanup lpad6: ; preds = %invoke.cont7, %invoke.cont %18 = landingpad { i8*, i32 } cleanup %19 = extractvalue { i8*, i32 } %18, 0 store i8* %19, i8** %exn.slot, align 8 %20 = extractvalue { i8*, i32 } %18, 1 store i32 %20, i32* %ehselector.slot, align 4 call void @_ZNSsD2Ev(%"class.std::basic_string"* %ref.tmp4) #5 br label %ehcleanup ehcleanup: ; preds = %lpad6, %lpad call void @_ZNSaIcED2Ev(%"class.std::allocator"* %ref.tmp5) #5 %cleanup.is_active = load i1, i1* %cleanup.isactive, align 1 br i1 %cleanup.is_active, label %cleanup.action, label %cleanup.done cleanup.action: ; preds = %ehcleanup call void @__cxa_free_exception(i8* %exception) #5 br label %cleanup.done cleanup.done: ; preds = %cleanup.action, %ehcleanup %21 = bitcast %"struct.thrust::pair.640"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %21) #5 br label %eh.resume if.end: ; preds = %entry %first9 = getelementptr inbounds %"struct.thrust::pair.640", %"struct.thrust::pair.640"* %result, i32 0, i32 0 %22 = bitcast %"class.thrust::pointer.562"* %retval to i8* %23 = bitcast %"class.thrust::pointer.562"* %first9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 8, i32 8, i1 false) %24 = bitcast %"struct.thrust::pair.640"* %result to i8* call void @llvm.lifetime.end(i64 16, i8* %24) #5 %coerce.dive11 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %retval, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive11, i32 0, i32 0 %25 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive12, align 8 ret %"struct.thrust::pair.487"* %25 eh.resume: ; preds = %cleanup.done %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val13 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val13 unreachable: ; preds = %invoke.cont7 unreachable } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i64 } @_ZN6thrust20get_temporary_bufferINS_4pairIssEENS_6system4cuda6detail3tagEEENS1_INS_7pointerIT_T0_NS_11use_defaultESA_EENSB_15difference_typeEEERKNS_6detail21execution_policy_baseIS9_EESC_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.641", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"struct.thrust::pair.641", align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::execution_policy.120"* %2 = load i64, i64* %n.addr, align 8, !tbaa !13 %call2 = call { %"struct.thrust::pair.487"*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIssEENS0_4cuda6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, i64 %2) %3 = bitcast %"struct.thrust::pair.641"* %agg.tmp to { %"struct.thrust::pair.487"*, i64 }* %4 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %3, i32 0, i32 0 %5 = extractvalue { %"struct.thrust::pair.487"*, i64 } %call2, 0 store %"struct.thrust::pair.487"* %5, %"struct.thrust::pair.487"** %4, align 8 %6 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %3, i32 0, i32 1 %7 = extractvalue { %"struct.thrust::pair.487"*, i64 } %call2, 1 store i64 %7, i64* %6, align 8 %8 = bitcast %"struct.thrust::pair.641"* %agg.tmp to { %"struct.thrust::pair.487"*, i64 }* %9 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %8, i32 0, i32 0 %10 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %9, align 8 %11 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %8, i32 0, i32 1 %12 = load i64, i64* %11, align 8 %call3 = call { %"struct.thrust::pair.487"*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIssEENS_6system4cuda6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_(%"struct.thrust::pair.487"* %10, i64 %12) %13 = bitcast %"struct.thrust::pair.641"* %retval to { %"struct.thrust::pair.487"*, i64 }* %14 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %13, i32 0, i32 0 %15 = extractvalue { %"struct.thrust::pair.487"*, i64 } %call3, 0 store %"struct.thrust::pair.487"* %15, %"struct.thrust::pair.487"** %14, align 8 %16 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %13, i32 0, i32 1 %17 = extractvalue { %"struct.thrust::pair.487"*, i64 } %call3, 1 store i64 %17, i64* %16, align 8 %18 = bitcast %"struct.thrust::pair.641"* %retval to { %"struct.thrust::pair.487"*, i64 }* %19 = load { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %18, align 8 ret { %"struct.thrust::pair.487"*, i64 } %19 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.593"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::temporary_allocator.593"*, align 8 store %"class.thrust::detail::temporary_allocator.593"* %this, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::temporary_allocator.593"*, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8 %m_system = getelementptr inbounds %"class.thrust::detail::temporary_allocator.593", %"class.thrust::detail::temporary_allocator.593"* %this1, i32 0, i32 0 %ref = load %"struct.thrust::system::cuda::detail::tag"*, %"struct.thrust::system::cuda::detail::tag"** %m_system, align 8, !tbaa !7 ret %"struct.thrust::system::cuda::detail::tag"* %ref } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerINS0_IssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EEmEC2IS8_lEERKNS0_IT_T0_EE(%"struct.thrust::pair.640"* %this, %"struct.thrust::pair.641"* dereferenceable(16) %p) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.640"*, align 8 %p.addr = alloca %"struct.thrust::pair.641"*, align 8 store %"struct.thrust::pair.640"* %this, %"struct.thrust::pair.640"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::pair.641"* %p, %"struct.thrust::pair.641"** %p.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.640"*, %"struct.thrust::pair.640"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.640", %"struct.thrust::pair.640"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::pair.641"*, %"struct.thrust::pair.641"** %p.addr, align 8 %first2 = getelementptr inbounds %"struct.thrust::pair.641", %"struct.thrust::pair.641"* %0, i32 0, i32 0 %1 = bitcast %"class.thrust::pointer.562"* %first to i8* %2 = bitcast %"class.thrust::pointer.562"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.640", %"struct.thrust::pair.640"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::pair.641"*, %"struct.thrust::pair.641"** %p.addr, align 8 %second3 = getelementptr inbounds %"struct.thrust::pair.641", %"struct.thrust::pair.641"* %3, i32 0, i32 1 %4 = load i64, i64* %second3, align 8, !tbaa !416 store i64 %4, i64* %second, align 8, !tbaa !413 ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm(%"class.thrust::detail::temporary_allocator.593"* %this, %"struct.thrust::pair.487"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.562", align 8 %this.addr = alloca %"class.thrust::detail::temporary_allocator.593"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"class.thrust::detail::temporary_allocator.593"* %this, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"class.thrust::detail::temporary_allocator.593"*, %"class.thrust::detail::temporary_allocator.593"** %this.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE6systemEv(%"class.thrust::detail::temporary_allocator.593"* %this2) %0 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call to %"struct.thrust::detail::execution_policy_base.121"* %1 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.562"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive3, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 call void @_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0, %"struct.thrust::pair.487"* %3) ret void } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i64 } @_ZN6thrust6detail27get_temporary_buffer_detail14down_cast_pairINS_4pairIssEENS_6system4cuda6detail3tagENS3_INS_7pointerIS4_S8_NS_11use_defaultESA_EElEEEENS3_INS9_IT_T0_SA_SA_EENSF_15difference_typeEEET1_(%"struct.thrust::pair.487"* %p.coerce0, i64 %p.coerce1) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.641", align 8 %p = alloca %"struct.thrust::pair.641", align 8 %ptr = alloca %"class.thrust::pointer.562", align 8 %0 = bitcast %"struct.thrust::pair.641"* %p to { %"struct.thrust::pair.487"*, i64 }* %1 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %0, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce0, %"struct.thrust::pair.487"** %1, align 8 %2 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %0, i32 0, i32 1 store i64 %p.coerce1, i64* %2, align 8 %3 = bitcast %"class.thrust::pointer.562"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %3) #5 %first = getelementptr inbounds %"struct.thrust::pair.641", %"struct.thrust::pair.641"* %p, i32 0, i32 0 %call = call %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.562"* dereferenceable(8) %first) call void @_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.562"* %ptr, %"struct.thrust::pair.487"* %call) %second = getelementptr inbounds %"struct.thrust::pair.641", %"struct.thrust::pair.641"* %p, i32 0, i32 1 call void @_ZN6thrust4pairINS_7pointerINS0_IssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl(%"struct.thrust::pair.641"* %retval, %"class.thrust::pointer.562"* dereferenceable(8) %ptr, i64* dereferenceable(8) %second) %4 = bitcast %"class.thrust::pointer.562"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %4) #5 %5 = bitcast %"struct.thrust::pair.641"* %retval to { %"struct.thrust::pair.487"*, i64 }* %6 = load { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %5, align 8 ret { %"struct.thrust::pair.487"*, i64 } %6 } ; Function Attrs: uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i64 } @_ZN6thrust6system6detail7generic20get_temporary_bufferINS_4pairIssEENS0_4cuda6detail3tagEEENS4_INS_7pointerIT_T0_NS_11use_defaultESC_EENSD_15difference_typeEEERNS_16execution_policyISB_EESE_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, i64 %n) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.641", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %n.addr = alloca i64, align 8 %ptr = alloca %"class.thrust::pointer.562", align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::pointer.562"* %ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %2 = bitcast %"struct.thrust::execution_policy.120"* %1 to %"struct.thrust::detail::execution_policy_base.121"* %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call %"struct.thrust::pair.487"* @_ZN6thrust6mallocINS_4pairIssEENS_6system4cuda6detail3tagEEENS_7pointerIT_T0_NS_11use_defaultESA_EERKNS_6detail21execution_policy_baseIS9_EEm(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2, i64 %3) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive1, align 8 %call2 = call %"struct.thrust::pair.487"* @_ZNK6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_E3getEv(%"class.thrust::pointer.562"* %ptr) %tobool = icmp ne %"struct.thrust::pair.487"* %call2, null br i1 %tobool, label %if.end, label %if.then if.then: ; preds = %entry store i64 0, i64* %n.addr, align 8, !tbaa !13 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %5 = bitcast %"class.thrust::pointer.562"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive3, i32 0, i32 0 %7 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 %call5 = call { %"struct.thrust::pair.487"*, i64 } @_ZN6thrust9make_pairINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_(%"struct.thrust::pair.487"* %7, i64 %6) %8 = bitcast %"struct.thrust::pair.641"* %retval to { %"struct.thrust::pair.487"*, i64 }* %9 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %8, i32 0, i32 0 %10 = extractvalue { %"struct.thrust::pair.487"*, i64 } %call5, 0 store %"struct.thrust::pair.487"* %10, %"struct.thrust::pair.487"** %9, align 8 %11 = getelementptr inbounds { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %8, i32 0, i32 1 %12 = extractvalue { %"struct.thrust::pair.487"*, i64 } %call5, 1 store i64 %12, i64* %11, align 8 %13 = bitcast %"class.thrust::pointer.562"* %ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.641"* %retval to { %"struct.thrust::pair.487"*, i64 }* %15 = load { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %14, align 8 ret { %"struct.thrust::pair.487"*, i64 } %15 } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust4pairINS_7pointerINS0_IssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl(%"struct.thrust::pair.641"* %this, %"class.thrust::pointer.562"* dereferenceable(8) %x, i64* dereferenceable(8) %y) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::pair.641"*, align 8 %x.addr = alloca %"class.thrust::pointer.562"*, align 8 %y.addr = alloca i64*, align 8 store %"struct.thrust::pair.641"* %this, %"struct.thrust::pair.641"** %this.addr, align 8, !tbaa !1 store %"class.thrust::pointer.562"* %x, %"class.thrust::pointer.562"** %x.addr, align 8, !tbaa !7 store i64* %y, i64** %y.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::pair.641"*, %"struct.thrust::pair.641"** %this.addr, align 8 %first = getelementptr inbounds %"struct.thrust::pair.641", %"struct.thrust::pair.641"* %this1, i32 0, i32 0 %0 = load %"class.thrust::pointer.562"*, %"class.thrust::pointer.562"** %x.addr, align 8 %1 = bitcast %"class.thrust::pointer.562"* %first to i8* %2 = bitcast %"class.thrust::pointer.562"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %second = getelementptr inbounds %"struct.thrust::pair.641", %"struct.thrust::pair.641"* %this1, i32 0, i32 1 %3 = load i64*, i64** %y.addr, align 8 %4 = load i64, i64* %3, align 8, !tbaa !13 store i64 %4, i64* %second, align 8, !tbaa !416 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr { %"struct.thrust::pair.487"*, i64 } @_ZN6thrust9make_pairINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EElEENS2_IT_T0_EESA_SB_(%"struct.thrust::pair.487"* %x.coerce, i64 %y) #8 comdat { entry: %retval = alloca %"struct.thrust::pair.641", align 8 %x = alloca %"class.thrust::pointer.562", align 8 %y.addr = alloca i64, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %x, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %x.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store i64 %y, i64* %y.addr, align 8, !tbaa !13 call void @_ZN6thrust4pairINS_7pointerINS0_IssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EElEC2ERKS8_RKl(%"struct.thrust::pair.641"* %retval, %"class.thrust::pointer.562"* dereferenceable(8) %x, i64* dereferenceable(8) %y.addr) %0 = bitcast %"struct.thrust::pair.641"* %retval to { %"struct.thrust::pair.487"*, i64 }* %1 = load { %"struct.thrust::pair.487"*, i64 }, { %"struct.thrust::pair.487"*, i64 }* %0, align 8 ret { %"struct.thrust::pair.487"*, i64 } %1 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust23return_temporary_bufferINS_6system4cuda6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.562", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::execution_policy.120"* %2 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.562"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 call void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_4pairIssEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %1, %"struct.thrust::pair.487"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic23return_temporary_bufferINS0_4cuda6detail3tagENS_7pointerINS_4pairIssEES6_NS_11use_defaultESA_EEEEvRNS_16execution_policyIT_EET0_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %p.coerce) #0 comdat { entry: %p = alloca %"class.thrust::pointer.562", align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %1 = bitcast %"struct.thrust::execution_policy.120"* %0 to %"struct.thrust::detail::execution_policy_base.121"* %2 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.562"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 call void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %1, %"struct.thrust::pair.487"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust4freeINS_6system4cuda6detail3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRKNS_6detail21execution_policy_baseIT_EET0_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::pointer.562", align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %ptr.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %0) %call2 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %1 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call2 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %2 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %3 = bitcast %"class.thrust::pointer.562"* %ptr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 8, i32 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 call void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %1, %"struct.thrust::pair.487"* %4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail4freeINS2_3tagENS_7pointerINS_4pairIssEES4_NS_11use_defaultES8_EEEEvRNS2_16execution_policyIT_EET0_(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1), %"struct.thrust::pair.487"* %ptr.coerce) #0 comdat { entry: %ptr = alloca %"class.thrust::pointer.562", align 8 %.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %ptr, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %ptr.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"struct.thrust::system::cuda::detail::execution_policy.119"* %0, %"struct.thrust::system::cuda::detail::execution_policy.119"** %.addr, align 8, !tbaa !7 %call = call %"struct.thrust::pair.487"* @_ZN6thrust16raw_pointer_castINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES8_EEEENS_6detail14pointer_traitsIT_E11raw_pointerERKSC_(%"class.thrust::pointer.562"* dereferenceable(8) %ptr) %1 = bitcast %"struct.thrust::pair.487"* %call to i8* %call2 = call i32 @cudaFree(i8* %1) call void @_ZN6thrust6system4cuda6detail14throw_on_errorE9cudaErrorPKc(i32 %call2, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.24, i32 0, i32 0)) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE10deallocateEv(%"class.thrust::detail::contiguous_storage.591"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.591"*, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %ref.tmp = alloca %"class.thrust::detail::normal_iterator.596", align 8 %agg.tmp6 = alloca %"class.thrust::pointer.562", align 8 store %"class.thrust::detail::contiguous_storage.591"* %this, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.591"*, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8 %call = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.591"* %this1) %cmp = icmp ugt i64 %call, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %m_allocator = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 0 %m_begin = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 1 %0 = bitcast %"class.thrust::detail::normal_iterator.596"* %m_begin to %"class.thrust::iterator_adaptor.597"* %call2 = call dereferenceable(8) %"class.thrust::pointer.562"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.597"* %0) %1 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.562"* %call2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %call3 = call i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.591"* %this1) %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 %3 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 call void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm(%"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %m_allocator, %"struct.thrust::pair.487"* %3, i64 %call3) %m_begin5 = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 1 call void @_ZN6thrust7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES7_EC2IS2_EEPT_(%"class.thrust::pointer.562"* %agg.tmp6, %"struct.thrust::pair.487"* null) %coerce.dive7 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive7, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive8, align 8 call void @_ZN6thrust6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultES9_EEEC2ESA_(%"class.thrust::detail::normal_iterator.596"* %ref.tmp, %"struct.thrust::pair.487"* %4) %5 = bitcast %"class.thrust::detail::normal_iterator.596"* %m_begin5 to i8* %6 = bitcast %"class.thrust::detail::normal_iterator.596"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 8, i32 8, i1 false) %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 2 store i64 0, i64* %m_size, align 8, !tbaa !409 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i64 @_ZNK6thrust6detail18contiguous_storageINS_4pairIssEENS0_18no_throw_allocatorINS0_19temporary_allocatorIS3_NS_6system4cuda6detail3tagEEEEEE4sizeEv(%"class.thrust::detail::contiguous_storage.591"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::detail::contiguous_storage.591"*, align 8 store %"class.thrust::detail::contiguous_storage.591"* %this, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::detail::contiguous_storage.591"*, %"class.thrust::detail::contiguous_storage.591"** %this.addr, align 8 %m_size = getelementptr inbounds %"class.thrust::detail::contiguous_storage.591", %"class.thrust::detail::contiguous_storage.591"* %this1, i32 0, i32 2 %0 = load i64, i64* %m_size, align 8, !tbaa !409 ret i64 %0 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEm(%"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %a, %"struct.thrust::pair.487"* %p.coerce, i64 %n) #8 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.562", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.592"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.592"* %a, %"struct.thrust::detail::no_throw_allocator.592"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.592"*, %"struct.thrust::detail::no_throw_allocator.592"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.562"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 call void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m(%"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %0, %"struct.thrust::pair.487"* %4, i64 %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(8) %"class.thrust::pointer.562"* @_ZNK6thrust16iterator_adaptorINS_6detail15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESA_EEEESB_SA_SA_SA_SA_SA_E4baseEv(%"class.thrust::iterator_adaptor.597"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"class.thrust::iterator_adaptor.597"*, align 8 store %"class.thrust::iterator_adaptor.597"* %this, %"class.thrust::iterator_adaptor.597"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::iterator_adaptor.597"*, %"class.thrust::iterator_adaptor.597"** %this.addr, align 8 %m_iterator = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %this1, i32 0, i32 0 ret %"class.thrust::pointer.562"* %m_iterator } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6detail16allocator_traitsINS0_18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEEEE10deallocateERSB_NS_7pointerIS5_S9_NS_11use_defaultESF_EEmEN19workaround_warnings10deallocateESD_SG_m(%"struct.thrust::detail::no_throw_allocator.592"* dereferenceable(8) %a, %"struct.thrust::pair.487"* %p.coerce, i64 %n) #0 comdat align 2 { entry: %p = alloca %"class.thrust::pointer.562", align 8 %a.addr = alloca %"struct.thrust::detail::no_throw_allocator.592"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.592"* %a, %"struct.thrust::detail::no_throw_allocator.592"** %a.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = load %"struct.thrust::detail::no_throw_allocator.592"*, %"struct.thrust::detail::no_throw_allocator.592"** %a.addr, align 8 %1 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.562"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive2 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive2, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive3, align 8 call void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm(%"struct.thrust::detail::no_throw_allocator.592"* %0, %"struct.thrust::pair.487"* %4, i64 %3) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6detail18no_throw_allocatorINS0_19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEEEE10deallocateENS_7pointerIS4_S8_NS_11use_defaultESC_EEm(%"struct.thrust::detail::no_throw_allocator.592"* %this, %"struct.thrust::pair.487"* %p.coerce, i64 %n) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %p = alloca %"class.thrust::pointer.562", align 8 %this.addr = alloca %"struct.thrust::detail::no_throw_allocator.592"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::pointer.562", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce.dive = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %p, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive, i32 0, i32 0 store %"struct.thrust::pair.487"* %p.coerce, %"struct.thrust::pair.487"** %coerce.dive1, align 8 store %"struct.thrust::detail::no_throw_allocator.592"* %this, %"struct.thrust::detail::no_throw_allocator.592"** %this.addr, align 8, !tbaa !1 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %this2 = load %"struct.thrust::detail::no_throw_allocator.592"*, %"struct.thrust::detail::no_throw_allocator.592"** %this.addr, align 8 %0 = bitcast %"struct.thrust::detail::no_throw_allocator.592"* %this2 to %"class.thrust::detail::temporary_allocator.593"* %1 = bitcast %"class.thrust::pointer.562"* %agg.tmp to i8* %2 = bitcast %"class.thrust::pointer.562"* %p to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 8, i32 8, i1 false) %3 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %agg.tmp, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive3, i32 0, i32 0 %4 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive4, align 8 invoke void @_ZN6thrust6detail19temporary_allocatorINS_4pairIssEENS_6system4cuda6detail3tagEE10deallocateENS_7pointerIS3_S7_NS_11use_defaultESA_EEm(%"class.thrust::detail::temporary_allocator.593"* %0, %"struct.thrust::pair.487"* %4, i64 %3) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry br label %try.cont lpad: ; preds = %entry %5 = landingpad { i8*, i32 } catch i8* null %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %8 = call i8* @__cxa_begin_catch(i8* %exn) #5 call void @__cxa_end_catch() br label %try.cont try.cont: ; preds = %catch, %invoke.cont ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic15replace_copy_ifINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS_6negateIjEESB_EET2_RNS_16execution_policyIT_EET0_SR_T1_SM_T3_RKT4_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"* %last.coerce, i32* %stencil.coerce, %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"* dereferenceable(4) %new_value) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.596", align 8 %first = alloca %"class.thrust::detail::normal_iterator.505", align 8 %last = alloca %"class.thrust::detail::normal_iterator.505", align 8 %stencil = alloca %"class.thrust::detail::normal_iterator.199", align 8 %result = alloca %"class.thrust::detail::normal_iterator.596", align 8 %pred = alloca %"struct.thrust::negate", align 1 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %new_value.addr = alloca %"struct.thrust::pair.487"*, align 8 %op = alloca %"struct.thrust::system::detail::generic::detail::new_value_if.642", align 2 %agg.tmp = alloca %"struct.thrust::negate", align 1 %agg.tmp18 = alloca %"struct.thrust::pair.487", align 2 %agg.tmp19 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp20 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp22 = alloca %"class.thrust::detail::normal_iterator.596", align 8 %agg.tmp23 = alloca %"struct.thrust::system::detail::generic::detail::new_value_if.642", align 2 %tmp = alloca i48, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %first, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair.487"* %first.coerce, %"struct.thrust::pair.487"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %last, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair.487"* %last.coerce, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %stencil, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive12, i32 0, i32 0 store i32* %stencil.coerce, i32** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %result, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive16, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive17, align 8 store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 store %"struct.thrust::pair.487"* %new_value, %"struct.thrust::pair.487"** %new_value.addr, align 8, !tbaa !7 %0 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %op to i8* call void @llvm.lifetime.start(i64 6, i8* %0) #5 %1 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %new_value.addr, align 8 %2 = bitcast %"struct.thrust::pair.487"* %agg.tmp18 to i8* %3 = bitcast %"struct.thrust::pair.487"* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 4, i32 2, i1 false), !tbaa.struct !345 %4 = bitcast %"struct.thrust::pair.487"* %agg.tmp18 to i32* %5 = load i32, i32* %4, align 2 call void @_ZN6thrust6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEES8_EC2ES6_S8_(%"struct.thrust::system::detail::generic::detail::new_value_if.642"* %op, i32 %5) %6 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %7 = bitcast %"struct.thrust::execution_policy.120"* %6 to %"struct.thrust::detail::execution_policy_base.121"* %8 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp19 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.505"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp20 to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.505"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = bitcast %"class.thrust::detail::normal_iterator.199"* %agg.tmp21 to i8* %13 = bitcast %"class.thrust::detail::normal_iterator.199"* %stencil to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 8, i32 8, i1 false) %14 = bitcast %"class.thrust::detail::normal_iterator.596"* %agg.tmp22 to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.596"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %agg.tmp23 to i8* %17 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 6, i32 2, i1 false), !tbaa.struct !418 %coerce.dive24 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp19, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive27, i32 0, i32 0 %18 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive28, align 8 %coerce.dive29 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp20, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive31, i32 0, i32 0 %coerce.dive33 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive32, i32 0, i32 0 %19 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive33, align 8 %coerce.dive34 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp21, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive35, i32 0, i32 0 %coerce.dive37 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive36, i32 0, i32 0 %20 = load i32*, i32** %coerce.dive37, align 8 %coerce.dive38 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %agg.tmp22, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive39, i32 0, i32 0 %coerce.dive41 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive40, i32 0, i32 0 %21 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive41, align 8 %22 = bitcast i48* %tmp to i8* %23 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %agg.tmp23 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* %23, i64 6, i32 2, i1 false) %24 = load i48, i48* %tmp, align 8 %call = call %"struct.thrust::pair.487"* @_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS1_6detail7generic6detail12new_value_ifINS_6negateIjEES9_S9_EEEET2_RKNS5_21execution_policy_baseIT_EET0_SV_T1_SP_T3_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %7, %"struct.thrust::pair.487"* %18, %"struct.thrust::pair.487"* %19, i32* %20, %"struct.thrust::pair.487"* %21, i48 %24) %coerce.dive42 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %retval, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive42, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive44, i32 0, i32 0 store %"struct.thrust::pair.487"* %call, %"struct.thrust::pair.487"** %coerce.dive45, align 8 %25 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %op to i8* call void @llvm.lifetime.end(i64 6, i8* %25) #5 %coerce.dive46 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %retval, i32 0, i32 0 %coerce.dive47 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive46, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive48, i32 0, i32 0 %26 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive49, align 8 ret %"struct.thrust::pair.487"* %26 } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEES8_EC2ES6_S8_(%"struct.thrust::system::detail::generic::detail::new_value_if.642"* %this, i32 %nv.coerce) unnamed_addr #1 comdat align 2 { entry: %p = alloca %"struct.thrust::negate", align 1 %nv = alloca %"struct.thrust::pair.487", align 2 %this.addr = alloca %"struct.thrust::system::detail::generic::detail::new_value_if.642"*, align 8 %0 = bitcast %"struct.thrust::pair.487"* %nv to i32* store i32 %nv.coerce, i32* %0, align 2 store %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %this, %"struct.thrust::system::detail::generic::detail::new_value_if.642"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::detail::generic::detail::new_value_if.642"*, %"struct.thrust::system::detail::generic::detail::new_value_if.642"** %this.addr, align 8 %pred = getelementptr inbounds %"struct.thrust::system::detail::generic::detail::new_value_if.642", %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %this1, i32 0, i32 0 %new_value = getelementptr inbounds %"struct.thrust::system::detail::generic::detail::new_value_if.642", %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %this1, i32 0, i32 1 %1 = bitcast %"struct.thrust::pair.487"* %new_value to i8* %2 = bitcast %"struct.thrust::pair.487"* %nv to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 4, i32 2, i1 false), !tbaa.struct !345 ret void } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust9transformINS_6system4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS6_INS_7pointerIjS4_NS_11use_defaultESD_EEEENS6_INSC_IS9_S4_SD_SD_EEEENS1_6detail7generic6detail12new_value_ifINS_6negateIjEES9_S9_EEEET2_RKNS5_21execution_policy_baseIT_EET0_SV_T1_SP_T3_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first1.coerce, %"struct.thrust::pair.487"* %last1.coerce, i32* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce, i48 %op.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.596", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %result = alloca %"class.thrust::detail::normal_iterator.596", align 8 %op = alloca %"struct.thrust::system::detail::generic::detail::new_value_if.642", align 2 %tmp = alloca i48, align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp19 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %agg.tmp20 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %agg.tmp21 = alloca %"class.thrust::detail::normal_iterator.596", align 8 %agg.tmp22 = alloca %"struct.thrust::system::detail::generic::detail::new_value_if.642", align 2 %tmp41 = alloca i48, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair.487"* %first1.coerce, %"struct.thrust::pair.487"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair.487"* %last1.coerce, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive12, i32 0, i32 0 store i32* %first2.coerce, i32** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %result, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive16, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive17, align 8 store i48 %op.coerce, i48* %tmp, align 8 %0 = bitcast i48* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %2 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2) %call18 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call18 to %"struct.thrust::execution_policy.120"* %4 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp to i8* %5 = bitcast %"class.thrust::detail::normal_iterator.505"* %first1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 8, i32 8, i1 false) %6 = bitcast %"class.thrust::detail::normal_iterator.505"* %agg.tmp19 to i8* %7 = bitcast %"class.thrust::detail::normal_iterator.505"* %last1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 8, i32 8, i1 false) %8 = bitcast %"class.thrust::detail::normal_iterator.199"* %agg.tmp20 to i8* %9 = bitcast %"class.thrust::detail::normal_iterator.199"* %first2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 8, i32 8, i1 false) %10 = bitcast %"class.thrust::detail::normal_iterator.596"* %agg.tmp21 to i8* %11 = bitcast %"class.thrust::detail::normal_iterator.596"* %result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 8, i32 8, i1 false) %12 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %agg.tmp22 to i8* %13 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %13, i64 6, i32 2, i1 false), !tbaa.struct !418 %coerce.dive23 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp, i32 0, i32 0 %coerce.dive24 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive23, i32 0, i32 0 %coerce.dive25 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive24, i32 0, i32 0 %coerce.dive26 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive25, i32 0, i32 0 %coerce.dive27 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive26, i32 0, i32 0 %14 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive27, align 8 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %agg.tmp19, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive30, i32 0, i32 0 %coerce.dive32 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive31, i32 0, i32 0 %15 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive32, align 8 %coerce.dive33 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %agg.tmp20, i32 0, i32 0 %coerce.dive34 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive33, i32 0, i32 0 %coerce.dive35 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive34, i32 0, i32 0 %coerce.dive36 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive35, i32 0, i32 0 %16 = load i32*, i32** %coerce.dive36, align 8 %coerce.dive37 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %agg.tmp21, i32 0, i32 0 %coerce.dive38 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive37, i32 0, i32 0 %coerce.dive39 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive38, i32 0, i32 0 %coerce.dive40 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive39, i32 0, i32 0 %17 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive40, align 8 %18 = bitcast i48* %tmp41 to i8* %19 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %agg.tmp22 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %18, i8* %19, i64 6, i32 2, i1 false) %20 = load i48, i48* %tmp41, align 8 %call42 = call %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS2_6detail12new_value_ifINS_6negateIjEESB_SB_EEEET2_RNS_16execution_policyIT_EET0_SU_T1_SP_T3_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %3, %"struct.thrust::pair.487"* %14, %"struct.thrust::pair.487"* %15, i32* %16, %"struct.thrust::pair.487"* %17, i48 %20) %coerce.dive43 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %retval, i32 0, i32 0 %coerce.dive44 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive43, i32 0, i32 0 %coerce.dive45 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive44, i32 0, i32 0 %coerce.dive46 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive45, i32 0, i32 0 store %"struct.thrust::pair.487"* %call42, %"struct.thrust::pair.487"** %coerce.dive46, align 8 %coerce.dive47 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %retval, i32 0, i32 0 %coerce.dive48 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive47, i32 0, i32 0 %coerce.dive49 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive48, i32 0, i32 0 %coerce.dive50 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive49, i32 0, i32 0 %21 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive50, align 8 ret %"struct.thrust::pair.487"* %21 } ; Function Attrs: uwtable define linkonce_odr %"struct.thrust::pair.487"* @_ZN6thrust6system6detail7generic9transformINS0_4cuda6detail3tagENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS6_NS_11use_defaultESF_EEEENS8_INSE_ISB_S6_SF_SF_EEEENS2_6detail12new_value_ifINS_6negateIjEESB_SB_EEEET2_RNS_16execution_policyIT_EET0_SU_T1_SP_T3_(%"struct.thrust::execution_policy.120"* dereferenceable(1) %exec, %"struct.thrust::pair.487"* %first1.coerce, %"struct.thrust::pair.487"* %last1.coerce, i32* %first2.coerce, %"struct.thrust::pair.487"* %result.coerce, i48 %op.coerce) #0 comdat { entry: %retval = alloca %"class.thrust::detail::normal_iterator.596", align 8 %first1 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %last1 = alloca %"class.thrust::detail::normal_iterator.505", align 8 %first2 = alloca %"class.thrust::detail::normal_iterator.199", align 8 %result = alloca %"class.thrust::detail::normal_iterator.596", align 8 %op = alloca %"struct.thrust::system::detail::generic::detail::new_value_if.642", align 2 %tmp = alloca i48, align 8 %exec.addr = alloca %"struct.thrust::execution_policy.120"*, align 8 %zipped_result = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp19 = alloca %"class.thrust::tuple.645", align 8 %agg.tmp20 = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp21 = alloca %"class.thrust::tuple.645", align 8 %agg.tmp22 = alloca %"struct.thrust::detail::binary_transform_functor.649", align 2 %agg.tmp23 = alloca %"struct.thrust::system::detail::generic::detail::new_value_if.642", align 2 %tmp24 = alloca i48, align 8 %tmp26 = alloca i48, align 8 %coerce.dive = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %first1, i32 0, i32 0 %coerce.dive1 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive1, i32 0, i32 0 %coerce.dive3 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive2, i32 0, i32 0 %coerce.dive4 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive3, i32 0, i32 0 store %"struct.thrust::pair.487"* %first1.coerce, %"struct.thrust::pair.487"** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.thrust::detail::normal_iterator.505", %"class.thrust::detail::normal_iterator.505"* %last1, i32 0, i32 0 %coerce.dive6 = getelementptr inbounds %"class.thrust::iterator_adaptor.506", %"class.thrust::iterator_adaptor.506"* %coerce.dive5, i32 0, i32 0 %coerce.dive7 = getelementptr inbounds %"class.thrust::device_ptr.508", %"class.thrust::device_ptr.508"* %coerce.dive6, i32 0, i32 0 %coerce.dive8 = getelementptr inbounds %"class.thrust::pointer.509", %"class.thrust::pointer.509"* %coerce.dive7, i32 0, i32 0 %coerce.dive9 = getelementptr inbounds %"class.thrust::iterator_adaptor.510", %"class.thrust::iterator_adaptor.510"* %coerce.dive8, i32 0, i32 0 store %"struct.thrust::pair.487"* %last1.coerce, %"struct.thrust::pair.487"** %coerce.dive9, align 8 %coerce.dive10 = getelementptr inbounds %"class.thrust::detail::normal_iterator.199", %"class.thrust::detail::normal_iterator.199"* %first2, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"class.thrust::iterator_adaptor.200", %"class.thrust::iterator_adaptor.200"* %coerce.dive10, i32 0, i32 0 %coerce.dive12 = getelementptr inbounds %"class.thrust::pointer.202", %"class.thrust::pointer.202"* %coerce.dive11, i32 0, i32 0 %coerce.dive13 = getelementptr inbounds %"class.thrust::iterator_adaptor.203", %"class.thrust::iterator_adaptor.203"* %coerce.dive12, i32 0, i32 0 store i32* %first2.coerce, i32** %coerce.dive13, align 8 %coerce.dive14 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %result, i32 0, i32 0 %coerce.dive15 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive14, i32 0, i32 0 %coerce.dive16 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive15, i32 0, i32 0 %coerce.dive17 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive16, i32 0, i32 0 store %"struct.thrust::pair.487"* %result.coerce, %"struct.thrust::pair.487"** %coerce.dive17, align 8 store i48 %op.coerce, i48* %tmp, align 8 %0 = bitcast i48* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store %"struct.thrust::execution_policy.120"* %exec, %"struct.thrust::execution_policy.120"** %exec.addr, align 8, !tbaa !7 %2 = bitcast %"class.thrust::zip_iterator.643"* %zipped_result to i8* call void @llvm.lifetime.start(i64 24, i8* %2) #5 %3 = load %"struct.thrust::execution_policy.120"*, %"struct.thrust::execution_policy.120"** %exec.addr, align 8 %4 = bitcast %"struct.thrust::execution_policy.120"* %3 to %"struct.thrust::detail::execution_policy_base.121"* call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESM_SM_SM_SM_SM_SM_E4typeERKSJ_RKSK_RKSL_(%"class.thrust::tuple.645"* sret %agg.tmp19, %"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %first1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.596"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_(%"class.thrust::zip_iterator.643"* sret %agg.tmp, %"class.thrust::tuple.645"* byval align 8 %agg.tmp19) call void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESM_SM_SM_SM_SM_SM_E4typeERKSJ_RKSK_RKSL_(%"class.thrust::tuple.645"* sret %agg.tmp21, %"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %last1, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %first2, %"class.thrust::detail::normal_iterator.596"* dereferenceable(8) %result) call void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_(%"class.thrust::zip_iterator.643"* sret %agg.tmp20, %"class.thrust::tuple.645"* byval align 8 %agg.tmp21) %5 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %agg.tmp23 to i8* %6 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %op to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 6, i32 2, i1 false), !tbaa.struct !418 %7 = bitcast i48* %tmp24 to i8* %8 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %agg.tmp23 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 6, i32 2, i1 false) %9 = load i48, i48* %tmp24, align 8 call void @_ZN6thrust6detail24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESA_EEEC2ESB_(%"struct.thrust::detail::binary_transform_functor.649"* %agg.tmp22, i48 %9) %coerce.dive25 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %agg.tmp22, i32 0, i32 0 %10 = bitcast i48* %tmp26 to i8* %11 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive25 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 6, i32 2, i1 false) %12 = load i48, i48* %tmp26, align 8 call void @_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESW_SW_T1_(%"class.thrust::zip_iterator.643"* sret %zipped_result, %"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %4, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp20, i48 %12) %call = call dereferenceable(24) %"class.thrust::tuple.645"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.643"* %zipped_result) %13 = bitcast %"class.thrust::tuple.645"* %call to %"struct.thrust::detail::cons.646"* %call27 = call dereferenceable(8) %"class.thrust::detail::normal_iterator.596"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_(%"struct.thrust::detail::cons.646"* dereferenceable(24) %13) %14 = bitcast %"class.thrust::detail::normal_iterator.596"* %retval to i8* %15 = bitcast %"class.thrust::detail::normal_iterator.596"* %call27 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* %15, i64 8, i32 8, i1 false) %16 = bitcast %"class.thrust::zip_iterator.643"* %zipped_result to i8* call void @llvm.lifetime.end(i64 24, i8* %16) #5 %coerce.dive28 = getelementptr inbounds %"class.thrust::detail::normal_iterator.596", %"class.thrust::detail::normal_iterator.596"* %retval, i32 0, i32 0 %coerce.dive29 = getelementptr inbounds %"class.thrust::iterator_adaptor.597", %"class.thrust::iterator_adaptor.597"* %coerce.dive28, i32 0, i32 0 %coerce.dive30 = getelementptr inbounds %"class.thrust::pointer.562", %"class.thrust::pointer.562"* %coerce.dive29, i32 0, i32 0 %coerce.dive31 = getelementptr inbounds %"class.thrust::iterator_adaptor.563", %"class.thrust::iterator_adaptor.563"* %coerce.dive30, i32 0, i32 0 %17 = load %"struct.thrust::pair.487"*, %"struct.thrust::pair.487"** %coerce.dive31, align 8 ret %"struct.thrust::pair.487"* %17 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust8for_eachINS_6system4cuda6detail3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RKNS7_21execution_policy_baseIT_EESW_SW_T1_(%"class.thrust::zip_iterator.643"* noalias sret %agg.result, %"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.643"* byval align 8 %first, %"class.thrust::zip_iterator.643"* byval align 8 %last, i48 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.649", align 2 %tmp = alloca i48, align 8 %exec.addr = alloca %"struct.thrust::detail::execution_policy_base.121"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor.649", align 2 %tmp5 = alloca i48, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %f, i32 0, i32 0 store i48 %f.coerce, i48* %tmp, align 8 %0 = bitcast i48* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store %"struct.thrust::detail::execution_policy_base.121"* %exec, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8, !tbaa !7 %2 = load %"struct.thrust::detail::execution_policy_base.121"*, %"struct.thrust::detail::execution_policy_base.121"** %exec.addr, align 8 %call = call dereferenceable(1) %"struct.thrust::detail::execution_policy_base.121"* @_ZN6thrust6detail11strip_constINS_6system4cuda6detail3tagEEERNS0_21execution_policy_baseIT_EERKS8_(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %2) %call1 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %call) %3 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call1 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %4 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp to i8* %5 = bitcast %"class.thrust::zip_iterator.643"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 24, i32 8, i1 false) %6 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp2 to i8* %7 = bitcast %"class.thrust::zip_iterator.643"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 24, i32 8, i1 false) %8 = bitcast %"struct.thrust::detail::binary_transform_functor.649"* %agg.tmp3 to i8* %9 = bitcast %"struct.thrust::detail::binary_transform_functor.649"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 6, i32 2, i1 false), !tbaa.struct !418 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %agg.tmp3, i32 0, i32 0 %10 = bitcast i48* %tmp5 to i8* %11 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 6, i32 2, i1 false) %12 = load i48, i48* %tmp5, align 8 call void @_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_SW_T1_(%"class.thrust::zip_iterator.643"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %3, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp2, i48 %12) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust17make_zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEENS_12zip_iteratorIT_EESM_(%"class.thrust::zip_iterator.643"* noalias sret %agg.result, %"class.thrust::tuple.645"* byval align 8 %t) #0 comdat { entry: %agg.tmp = alloca %"class.thrust::tuple.645", align 8 %0 = bitcast %"class.thrust::tuple.645"* %agg.tmp to i8* %1 = bitcast %"class.thrust::tuple.645"* %t to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) call void @_ZN6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEEC2ESK_(%"class.thrust::zip_iterator.643"* %agg.result, %"class.thrust::tuple.645"* byval align 8 %agg.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEEEENS1_17make_tuple_mapperIT_T0_T1_NS_9null_typeESM_SM_SM_SM_SM_SM_E4typeERKSJ_RKSK_RKSL_(%"class.thrust::tuple.645"* noalias sret %agg.result, %"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %t0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %t1, %"class.thrust::detail::normal_iterator.596"* dereferenceable(8) %t2) #8 comdat { entry: %t0.addr = alloca %"class.thrust::detail::normal_iterator.505"*, align 8 %t1.addr = alloca %"class.thrust::detail::normal_iterator.199"*, align 8 %t2.addr = alloca %"class.thrust::detail::normal_iterator.596"*, align 8 store %"class.thrust::detail::normal_iterator.505"* %t0, %"class.thrust::detail::normal_iterator.505"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.199"* %t1, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::detail::normal_iterator.596"* %t2, %"class.thrust::detail::normal_iterator.596"** %t2.addr, align 8, !tbaa !7 %0 = load %"class.thrust::detail::normal_iterator.505"*, %"class.thrust::detail::normal_iterator.505"** %t0.addr, align 8 %1 = load %"class.thrust::detail::normal_iterator.199"*, %"class.thrust::detail::normal_iterator.199"** %t1.addr, align 8 %2 = load %"class.thrust::detail::normal_iterator.596"*, %"class.thrust::detail::normal_iterator.596"** %t2.addr, align 8 call void @_ZN6thrust5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESD_EEEENS2_INS8_IS5_SC_SD_SD_EEEENS_9null_typeESI_SI_SI_SI_SI_SI_EC2ERKS7_RKSF_RKSH_(%"class.thrust::tuple.645"* %agg.result, %"class.thrust::detail::normal_iterator.505"* dereferenceable(8) %0, %"class.thrust::detail::normal_iterator.199"* dereferenceable(8) %1, %"class.thrust::detail::normal_iterator.596"* dereferenceable(8) %2) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6detail24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESA_EEEC2ESB_(%"struct.thrust::detail::binary_transform_functor.649"* %this, i48 %f.coerce) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::detail::generic::detail::new_value_if.642", align 2 %tmp = alloca i48, align 8 %this.addr = alloca %"struct.thrust::detail::binary_transform_functor.649"*, align 8 store i48 %f.coerce, i48* %tmp, align 8 %0 = bitcast i48* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store %"struct.thrust::detail::binary_transform_functor.649"* %this, %"struct.thrust::detail::binary_transform_functor.649"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::detail::binary_transform_functor.649"*, %"struct.thrust::detail::binary_transform_functor.649"** %this.addr, align 8 %f2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %this1, i32 0, i32 0 %2 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %f2 to i8* %3 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 6, i32 2, i1 false), !tbaa.struct !418 ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr dereferenceable(8) %"class.thrust::detail::normal_iterator.596"* @_ZN6thrust3getILi2ENS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS1_4consINS2_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS8_INS2_INS9_IS5_SD_SE_SE_EEEENS_9null_typeEEEEEEENS_13access_traitsINS_13tuple_elementIXT_ENS8_IT0_T1_EEE4typeEE10const_typeERKSQ_(%"struct.thrust::detail::cons.646"* dereferenceable(24) %c) #8 comdat { entry: %c.addr = alloca %"struct.thrust::detail::cons.646"*, align 8 store %"struct.thrust::detail::cons.646"* %c, %"struct.thrust::detail::cons.646"** %c.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::detail::cons.646"*, %"struct.thrust::detail::cons.646"** %c.addr, align 8 %call = call dereferenceable(8) %"class.thrust::detail::normal_iterator.596"* @_ZN6thrust6detail9get_classILi2EE3getIRKNS0_15normal_iteratorINS_7pointerINS_4pairIssEENS_6system4cuda6detail3tagENS_11use_defaultESC_EEEENS4_INS_10device_ptrIS7_EEEENS0_4consINS4_INS5_IjSB_SC_SC_EEEENSK_ISE_NS_9null_typeEEEEEEET_RKNSK_IT0_T1_EE(%"struct.thrust::detail::cons.646"* dereferenceable(24) %0) ret %"class.thrust::detail::normal_iterator.596"* %call } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr dereferenceable(24) %"class.thrust::tuple.645"* @_ZNK6thrust12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS3_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESE_EEEENS3_INS9_IS6_SD_SE_SE_EEEENS_9null_typeESJ_SJ_SJ_SJ_SJ_SJ_EEE18get_iterator_tupleEv(%"class.thrust::zip_iterator.643"* %this) #9 comdat align 2 { entry: %this.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 store %"class.thrust::zip_iterator.643"* %this, %"class.thrust::zip_iterator.643"** %this.addr, align 8, !tbaa !1 %this1 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %this.addr, align 8 %m_iterator_tuple = getelementptr inbounds %"class.thrust::zip_iterator.643", %"class.thrust::zip_iterator.643"* %this1, i32 0, i32 0 ret %"class.thrust::tuple.645"* %m_iterator_tuple } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail8for_eachINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_SW_T1_(%"class.thrust::zip_iterator.643"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.643"* byval align 8 %first, %"class.thrust::zip_iterator.643"* byval align 8 %last, i48 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.649", align 2 %tmp = alloca i48, align 8 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp2 = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp3 = alloca %"struct.thrust::detail::binary_transform_functor.649", align 2 %tmp5 = alloca i48, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %f, i32 0, i32 0 store i48 %f.coerce, i48* %tmp, align 8 %0 = bitcast i48* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 %2 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.643"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false) %5 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp1 to i8* %6 = bitcast %"class.thrust::zip_iterator.643"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 8, i1 false) %7 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp2 to i8* %8 = bitcast %"class.thrust::zip_iterator.643"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEEEENS_15iterator_traitsIT_E15difference_typeESO_SO_(%"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp1, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp2) %9 = bitcast %"struct.thrust::detail::binary_transform_functor.649"* %agg.tmp3 to i8* %10 = bitcast %"struct.thrust::detail::binary_transform_functor.649"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %10, i64 6, i32 2, i1 false), !tbaa.struct !418 %coerce.dive4 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %agg.tmp3, i32 0, i32 0 %11 = bitcast i48* %tmp5 to i8* %12 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %12, i64 6, i32 2, i1 false) %13 = load i48, i48* %tmp5, align 8 call void @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_(%"class.thrust::zip_iterator.643"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %2, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp, i64 %call, i48 %13) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_(%"class.thrust::zip_iterator.643"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.643"* byval align 8 %first, i64 %n, i48 %f.coerce) #0 comdat { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.649", align 2 %tmp = alloca i48, align 8 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp1 = alloca %"struct.thrust::detail::binary_transform_functor.649", align 2 %tmp3 = alloca i48, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %f, i32 0, i32 0 store i48 %f.coerce, i48* %tmp, align 8 %0 = bitcast i48* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %2 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %3 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.643"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false) %5 = load i64, i64* %n.addr, align 8, !tbaa !13 %6 = bitcast %"struct.thrust::detail::binary_transform_functor.649"* %agg.tmp1 to i8* %7 = bitcast %"struct.thrust::detail::binary_transform_functor.649"* %f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %7, i64 6, i32 2, i1 false), !tbaa.struct !418 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %agg.tmp1, i32 0, i32 0 %8 = bitcast i48* %tmp3 to i8* %9 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %9, i64 6, i32 2, i1 false) %10 = load i48, i48* %tmp3, align 8 call void @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_EN10workaround13parallel_pathERNSX_IS4_EESM_lSV_(%"class.thrust::zip_iterator.643"* sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %2, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp, i64 %5, i48 %10) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr i64 @_ZN6thrust8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEEEENS_15iterator_traitsIT_E15difference_typeESO_SO_(%"class.thrust::zip_iterator.643"* byval align 8 %first, %"class.thrust::zip_iterator.643"* byval align 8 %last) #8 comdat { entry: %agg.tmp = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp1 = alloca %"class.thrust::zip_iterator.643", align 8 %0 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp to i8* %1 = bitcast %"class.thrust::zip_iterator.643"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* %1, i64 24, i32 8, i1 false) %2 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp1 to i8* %3 = bitcast %"class.thrust::zip_iterator.643"* %last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 8, i1 false) %call = call i64 @_ZN6thrust6system6detail7generic8distanceINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS7_INS_7pointerIjNS0_4cuda6detail3tagENS_11use_defaultESH_EEEENS7_INSD_ISA_SG_SH_SH_EEEENS_9null_typeESM_SM_SM_SM_SM_SM_EEEEEENS_15iterator_traitsIT_E15difference_typeESQ_SQ_(%"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp1) ret i64 %call } ; Function Attrs: uwtable define linkonce_odr void @_ZZN6thrust6system4cuda6detail10for_each_nINS2_3tagENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS8_INS_7pointerIjS4_NS_11use_defaultESF_EEEENS8_INSE_ISB_S4_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEElNS7_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESB_SB_EEEEEET0_RNS2_16execution_policyIT_EESW_T1_T2_EN10workaround13parallel_pathERNSX_IS4_EESM_lSV_(%"class.thrust::zip_iterator.643"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %exec, %"class.thrust::zip_iterator.643"* byval align 8 %first, i64 %n, i48 %f.coerce) #0 comdat align 2 { entry: %f = alloca %"struct.thrust::detail::binary_transform_functor.649", align 2 %tmp = alloca i48, align 8 %exec.addr = alloca %"struct.thrust::system::cuda::detail::execution_policy.119"*, align 8 %n.addr = alloca i64, align 8 %wrapped_f = alloca %"struct.thrust::detail::wrapped_function.650", align 2 %narrow_n = alloca i32, align 4 %narrow_num_groups = alloca i32, align 4 %narrow_group_size = alloca i32, align 4 %coerce = alloca %"class.thrust::tuple.147", align 8 %ref.tmp = alloca %"struct.thrust::pair.82", align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp6 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp7 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp8 = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp9 = alloca %"struct.thrust::detail::wrapped_function.650", align 2 %tmp12 = alloca i48, align 8 %num_groups = alloca i64, align 8 %group_size = alloca i64, align 8 %coerce19 = alloca %"class.thrust::tuple.152", align 8 %ref.tmp21 = alloca %"struct.thrust::pair.82", align 4 %agg.tmp22 = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp23 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp24 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp25 = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp26 = alloca %"struct.thrust::detail::wrapped_function.650", align 2 %tmp29 = alloca i48, align 8 %ref.tmp32 = alloca i64, align 8 %agg.tmp.ensured = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp35 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp38 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp39 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp40 = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp41 = alloca %"struct.thrust::detail::wrapped_function.650", align 2 %tmp44 = alloca i48, align 8 %ref.tmp45 = alloca i32, align 4 %agg.tmp.ensured48 = alloca %"class.thrust::system::cuda::detail::bulk_::future", align 8 %agg.tmp49 = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp54 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %agg.tmp55 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %agg.tmp56 = alloca %"class.thrust::zip_iterator.643", align 8 %agg.tmp57 = alloca %"struct.thrust::detail::wrapped_function.650", align 2 %tmp60 = alloca i48, align 8 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %f, i32 0, i32 0 store i48 %f.coerce, i48* %tmp, align 8 %0 = bitcast i48* %tmp to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store %"struct.thrust::system::cuda::detail::execution_policy.119"* %exec, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %2 = bitcast %"struct.thrust::detail::wrapped_function.650"* %wrapped_f to i8* call void @llvm.lifetime.start(i64 6, i8* %2) #5 call void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESB_EEEEvEC2ERKSD_(%"struct.thrust::detail::wrapped_function.650"* %wrapped_f, %"struct.thrust::detail::binary_transform_functor.649"* dereferenceable(6) %f) %3 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i64, i64* %n.addr, align 8, !tbaa !13 %conv = trunc i64 %4 to i32 store i32 %conv, i32* %narrow_n, align 4, !tbaa !11 %5 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %5) #5 store i32 0, i32* %narrow_num_groups, align 4, !tbaa !11 %6 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %6) #5 store i32 0, i32* %narrow_group_size, align 4, !tbaa !11 %call = call { i32*, i32* } @_ZN6thrust3tieIjjEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %narrow_group_size) %coerce.dive5 = getelementptr inbounds %"class.thrust::tuple.147", %"class.thrust::tuple.147"* %coerce, i32 0, i32 0 %7 = bitcast %"struct.thrust::detail::cons.148"* %coerce.dive5 to { i32*, i32* }* %8 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %7, i32 0, i32 0 %9 = extractvalue { i32*, i32* } %call, 0 store i32* %9, i32** %8, align 8 %10 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %7, i32 0, i32 1 %11 = extractvalue { i32*, i32* } %call, 1 store i32* %11, i32** %10, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp, i64 2147483647, i64 2147483647, i64 2147483647) %12 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %13 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp8 to i8* %14 = bitcast %"class.thrust::zip_iterator.643"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 24, i32 8, i1 false) %15 = bitcast %"struct.thrust::detail::wrapped_function.650"* %agg.tmp9 to i8* %16 = bitcast %"struct.thrust::detail::wrapped_function.650"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %16, i64 6, i32 2, i1 false), !tbaa.struct !418 %17 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive10 = getelementptr inbounds %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::wrapped_function.650"* %agg.tmp9, i32 0, i32 0 %coerce.dive11 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %coerce.dive10, i32 0, i32 0 %18 = bitcast i48* %tmp12 to i8* %19 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive11 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %18, i8* %19, i64 6, i32 2, i1 false) %20 = load i48, i48* %tmp12, align 8 %call13 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp8, i48 %20, i32 %17) %21 = bitcast %"struct.thrust::pair.82"* %ref.tmp to i64* store i64 %call13, i64* %21, align 4 %call14 = call dereferenceable(16) %"class.thrust::tuple.147"* @_ZN6thrust5tupleIRjS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.147"* %coerce, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp) %22 = load i64, i64* %n.addr, align 8, !tbaa !13 %23 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %24 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %mul = mul i32 %23, %24 %call15 = call zeroext i1 @_ZN6thrust6system4cuda6detail17for_each_n_detail16use_wide_counterIlEEbT_j(i64 %22, i32 %mul) br i1 %call15, label %if.then, label %if.else if.then: ; preds = %entry %25 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.start(i64 8, i8* %25) #5 store i64 0, i64* %num_groups, align 8, !tbaa !13 %26 = bitcast i64* %group_size to i8* call void @llvm.lifetime.start(i64 8, i8* %26) #5 store i64 0, i64* %group_size, align 8, !tbaa !13 %call18 = call { i64*, i64* } @_ZN6thrust3tieIllEENS_5tupleIRT_RT0_NS_9null_typeES6_S6_S6_S6_S6_S6_S6_EES3_S5_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %group_size) %coerce.dive20 = getelementptr inbounds %"class.thrust::tuple.152", %"class.thrust::tuple.152"* %coerce19, i32 0, i32 0 %27 = bitcast %"struct.thrust::detail::cons.153"* %coerce.dive20 to { i64*, i64* }* %28 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %27, i32 0, i32 0 %29 = extractvalue { i64*, i64* } %call18, 0 store i64* %29, i64** %28, align 8 %30 = getelementptr inbounds { i64*, i64* }, { i64*, i64* }* %27, i32 0, i32 1 %31 = extractvalue { i64*, i64* } %call18, 1 store i64* %31, i64** %30, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmm(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* sret %agg.tmp22, i64 2147483647, i64 2147483647, i64 2147483647) %32 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp24 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %32, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %33 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp25 to i8* %34 = bitcast %"class.thrust::zip_iterator.643"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %34, i64 24, i32 8, i1 false) %35 = bitcast %"struct.thrust::detail::wrapped_function.650"* %agg.tmp26 to i8* %36 = bitcast %"struct.thrust::detail::wrapped_function.650"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %35, i8* %36, i64 6, i32 2, i1 false), !tbaa.struct !418 %37 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive27 = getelementptr inbounds %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::wrapped_function.650"* %agg.tmp26, i32 0, i32 0 %coerce.dive28 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %coerce.dive27, i32 0, i32 0 %38 = bitcast i48* %tmp29 to i8* %39 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive28 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %38, i8* %39, i64 6, i32 2, i1 false) %40 = load i48, i48* %tmp29, align 8 %call30 = call i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp22, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp25, i48 %40, i64 %37) %41 = bitcast %"struct.thrust::pair.82"* %ref.tmp21 to i64* store i64 %call30, i64* %41, align 4 %call31 = call dereferenceable(16) %"class.thrust::tuple.152"* @_ZN6thrust5tupleIRlS1_NS_9null_typeES2_S2_S2_S2_S2_S2_S2_EaSIiiEERS3_RKNS_4pairIT_T0_EE(%"class.thrust::tuple.152"* %coerce19, %"struct.thrust::pair.82"* dereferenceable(8) %ref.tmp21) %42 = load i64, i64* %n.addr, align 8, !tbaa !13 %43 = load i64, i64* %group_size, align 8, !tbaa !13 %call33 = call i64 @_ZN6thrust6detail4util9divide_riIllEET_S3_T0_(i64 %42, i64 %43) store i64 %call33, i64* %ref.tmp32, align 8, !tbaa !13 %call34 = call i64 @_ZN6thrust3minIlEET_RKS1_S3_(i64* dereferenceable(8) %num_groups, i64* dereferenceable(8) %ref.tmp32) store i64 %call34, i64* %num_groups, align 8, !tbaa !13 %44 = load i64, i64* %num_groups, align 8, !tbaa !13 %45 = load i64, i64* %group_size, align 8, !tbaa !13 %46 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %47 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %46 to %"struct.thrust::detail::execution_policy_base.121"* %call36 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %47) %48 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call36 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call37 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %48) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp35, i64 %44, i64 %45, i64 0, %struct.CUstream_st* %call37) %49 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp39 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %49, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %50 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp40 to i8* %51 = bitcast %"class.thrust::zip_iterator.643"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %50, i8* %51, i64 24, i32 8, i1 false) %52 = bitcast %"struct.thrust::detail::wrapped_function.650"* %agg.tmp41 to i8* %53 = bitcast %"struct.thrust::detail::wrapped_function.650"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %52, i8* %53, i64 6, i32 2, i1 false), !tbaa.struct !418 %54 = load i64, i64* %n.addr, align 8, !tbaa !13 %coerce.dive42 = getelementptr inbounds %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::wrapped_function.650"* %agg.tmp41, i32 0, i32 0 %coerce.dive43 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %coerce.dive42, i32 0, i32 0 %55 = bitcast i48* %tmp44 to i8* %56 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive43 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %55, i8* %56, i64 6, i32 2, i1 false) %57 = load i48, i48* %tmp44, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp35, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp40, i48 %57, i64 %54) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured) #5 %58 = bitcast i64* %group_size to i8* call void @llvm.lifetime.end(i64 8, i8* %58) #5 %59 = bitcast i64* %num_groups to i8* call void @llvm.lifetime.end(i64 8, i8* %59) #5 br label %if.end if.else: ; preds = %entry %60 = load i32, i32* %narrow_n, align 4, !tbaa !11 %61 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %call46 = call i32 @_ZN6thrust6detail4util9divide_riIjjEET_S3_T0_(i32 %60, i32 %61) store i32 %call46, i32* %ref.tmp45, align 4, !tbaa !11 %call47 = call i32 @_ZN6thrust3minIjEET_RKS1_S3_(i32* dereferenceable(4) %narrow_num_groups, i32* dereferenceable(4) %ref.tmp45) store i32 %call47, i32* %narrow_num_groups, align 4, !tbaa !11 %62 = load i32, i32* %narrow_num_groups, align 4, !tbaa !11 %conv50 = zext i32 %62 to i64 %63 = load i32, i32* %narrow_group_size, align 4, !tbaa !11 %conv51 = zext i32 %63 to i64 %64 = load %"struct.thrust::system::cuda::detail::execution_policy.119"*, %"struct.thrust::system::cuda::detail::execution_policy.119"** %exec.addr, align 8 %65 = bitcast %"struct.thrust::system::cuda::detail::execution_policy.119"* %64 to %"struct.thrust::detail::execution_policy_base.121"* %call52 = call dereferenceable(1) %"struct.thrust::system::cuda::detail::tag"* @_ZN6thrust6detail12derived_castINS_6system4cuda6detail3tagEEERT_RNS0_21execution_policy_baseIS6_EE(%"struct.thrust::detail::execution_policy_base.121"* dereferenceable(1) %65) %66 = bitcast %"struct.thrust::system::cuda::detail::tag"* %call52 to %"struct.thrust::system::cuda::detail::execution_policy.119"* %call53 = call %struct.CUstream_st* @_ZN6thrust6system4cuda6detail6streamINS2_3tagEEEP11CUstream_stRKNS2_16execution_policyIT_EE(%"struct.thrust::system::cuda::detail::execution_policy.119"* dereferenceable(1) %66) call void @_ZN6thrust6system4cuda6detail5bulk_4gridEmmmP11CUstream_st(%"class.thrust::system::cuda::detail::bulk_::async_launch"* sret %agg.tmp49, i64 %conv50, i64 %conv51, i64 0, %struct.CUstream_st* %call53) %67 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %agg.tmp55 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %67, i8* getelementptr inbounds (%"struct.thrust::system::cuda::detail::bulk_::detail::cursor", %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* @_ZN6thrust6system4cuda6detail5bulk_L4rootE, i32 0, i32 0, i32 0, i32 0, i32 0), i64 1, i32 1, i1 false), !tbaa.struct !41 %68 = bitcast %"class.thrust::zip_iterator.643"* %agg.tmp56 to i8* %69 = bitcast %"class.thrust::zip_iterator.643"* %first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %68, i8* %69, i64 24, i32 8, i1 false) %70 = bitcast %"struct.thrust::detail::wrapped_function.650"* %agg.tmp57 to i8* %71 = bitcast %"struct.thrust::detail::wrapped_function.650"* %wrapped_f to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %70, i8* %71, i64 6, i32 2, i1 false), !tbaa.struct !418 %72 = load i32, i32* %narrow_n, align 4, !tbaa !11 %coerce.dive58 = getelementptr inbounds %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::wrapped_function.650"* %agg.tmp57, i32 0, i32 0 %coerce.dive59 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %coerce.dive58, i32 0, i32 0 %73 = bitcast i48* %tmp60 to i8* %74 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive59 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %73, i8* %74, i64 6, i32 2, i1 false) %75 = load i48, i48* %tmp60, align 8 call void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.tmp.ensured48, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp49, %"class.thrust::zip_iterator.643"* byval align 8 %agg.tmp56, i48 %75, i32 %72) call void @_ZN6thrust6system4cuda6detail5bulk_6futureIvED2Ev(%"class.thrust::system::cuda::detail::bulk_::future"* %agg.tmp.ensured48) #5 br label %if.end if.end: ; preds = %if.else, %if.then %76 = bitcast %"class.thrust::zip_iterator.643"* %first to %"class.thrust::iterator_facade.644"* %77 = load i64, i64* %n.addr, align 8, !tbaa !13 call void @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEET_RKNS_15iterator_facadeISW_T0_T1_T2_T3_T4_EENSW_15difference_typeE(%"class.thrust::zip_iterator.643"* sret %agg.result, %"class.thrust::iterator_facade.644"* dereferenceable(1) %76, i64 %77) %78 = bitcast i32* %narrow_group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %78) #5 %79 = bitcast i32* %narrow_num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %79) #5 %80 = bitcast i32* %narrow_n to i8* call void @llvm.lifetime.end(i64 4, i8* %80) #5 %81 = bitcast %"struct.thrust::detail::wrapped_function.650"* %wrapped_f to i8* call void @llvm.lifetime.end(i64 6, i8* %81) #5 ret void } ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr void @_ZN6thrust6detail16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESB_EEEEvEC2ERKSD_(%"struct.thrust::detail::wrapped_function.650"* %this, %"struct.thrust::detail::binary_transform_functor.649"* dereferenceable(6) %f) unnamed_addr #9 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %f.addr = alloca %"struct.thrust::detail::binary_transform_functor.649"*, align 8 store %"struct.thrust::detail::wrapped_function.650"* %this, %"struct.thrust::detail::wrapped_function.650"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::binary_transform_functor.649"* %f, %"struct.thrust::detail::binary_transform_functor.649"** %f.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %this.addr, align 8 %m_f = getelementptr inbounds %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::wrapped_function.650"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::binary_transform_functor.649"*, %"struct.thrust::detail::binary_transform_functor.649"** %f.addr, align 8 %1 = bitcast %"struct.thrust::detail::binary_transform_functor.649"* %m_f to i8* %2 = bitcast %"struct.thrust::detail::binary_transform_functor.649"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 6, i32 2, i1 false), !tbaa.struct !418 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::zip_iterator.643"* byval align 8 %arg2, i48 %arg3.coerce, i32 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.650", align 2 %tmp3 = alloca i48, align 8 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.651", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::wrapped_function.650"* %arg3, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %coerce.dive, i32 0, i32 0 store i48 %arg3.coerce, i48* %tmp3, align 8 %0 = bitcast i48* %tmp3 to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %arg3, i32* dereferenceable(4) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEEjSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* byval align 8 %agg.tmp4) %4 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %4, align 4 %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* %6 = load i64, i64* %5, align 4 ret i64 %6 } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_12choose_sizesINS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENSF_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_T0_T1_T2_T3_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::zip_iterator.643"* byval align 8 %arg2, i48 %arg3.coerce, i64 %arg4) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.650", align 2 %tmp3 = alloca i48, align 8 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::parallel_group", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.664", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::wrapped_function.650"* %arg3, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %coerce.dive, i32 0, i32 0 store i48 %arg3.coerce, i48* %tmp3, align 8 %0 = bitcast i48* %tmp3 to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 24, i32 4, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %arg3, i64* dereferenceable(8) %arg4.addr) %call = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEElSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* byval align 8 %agg.tmp4) %4 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call, i64* %4, align 4 %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* %6 = load i64, i64* %5, align 4 ret i64 %6 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::zip_iterator.643"* byval align 8 %arg2, i48 %arg3.coerce, i64 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.650", align 2 %tmp3 = alloca i48, align 8 %arg4.addr = alloca i64, align 8 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.664", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::wrapped_function.650"* %arg3, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %coerce.dive, i32 0, i32 0 store i48 %arg3.coerce, i48* %tmp3, align 8 %0 = bitcast i48* %tmp3 to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store i64 %arg4, i64* %arg4.addr, align 8, !tbaa !13 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %arg3, i64* dereferenceable(8) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* byval align 8 %agg.tmp4) ret void } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_5asyncINS3_12async_launchINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEEEENS2_17for_each_n_detail15for_each_kernelENS3_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjEENS3_6futureIvEET_T0_T1_T2_T3_T4_(%"class.thrust::system::cuda::detail::bulk_::future"* noalias sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %g, %"class.thrust::zip_iterator.643"* byval align 8 %arg2, i48 %arg3.coerce, i32 %arg4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %arg1 = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor", align 1 %arg3 = alloca %"struct.thrust::detail::wrapped_function.650", align 2 %tmp3 = alloca i48, align 8 %arg4.addr = alloca i32, align 4 %agg.tmp = alloca %"class.thrust::system::cuda::detail::bulk_::async_launch", align 8 %agg.tmp4 = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.651", align 8 %agg.tmp5 = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %coerce.dive = getelementptr inbounds %"struct.thrust::detail::wrapped_function.650", %"struct.thrust::detail::wrapped_function.650"* %arg3, i32 0, i32 0 %coerce.dive2 = getelementptr inbounds %"struct.thrust::detail::binary_transform_functor.649", %"struct.thrust::detail::binary_transform_functor.649"* %coerce.dive, i32 0, i32 0 store i48 %arg3.coerce, i48* %tmp3, align 8 %0 = bitcast i48* %tmp3 to i8* %1 = bitcast %"struct.thrust::system::detail::generic::detail::new_value_if.642"* %coerce.dive2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %0, i64 6, i32 2, i1 false) store i32 %arg4, i32* %arg4.addr, align 4, !tbaa !11 %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %agg.tmp to i8* %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::async_launch"* %g to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 48, i32 8, i1 false) call void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* sret %agg.tmp4, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %arg1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %arg2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %arg3, i32* dereferenceable(4) %arg4.addr) call void @_ZN6thrust6system4cuda6detail5bulk_6detail5asyncINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEENS3_6futureIvEENS3_12async_launchIT_EET0_(%"class.thrust::system::cuda::detail::bulk_::future"* sret %agg.result, %"class.thrust::system::cuda::detail::bulk_::async_launch"* byval align 8 %agg.tmp, %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* byval align 8 %agg.tmp4) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrustplINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEET_RKNS_15iterator_facadeISW_T0_T1_T2_T3_T4_EENSW_15difference_typeE(%"class.thrust::zip_iterator.643"* noalias sret %agg.result, %"class.thrust::iterator_facade.644"* dereferenceable(1) %i, i64 %n) #8 comdat { entry: %i.addr = alloca %"class.thrust::iterator_facade.644"*, align 8 %n.addr = alloca i64, align 8 %tmp = alloca %"class.thrust::zip_iterator.643", align 8 store %"class.thrust::iterator_facade.644"* %i, %"class.thrust::iterator_facade.644"** %i.addr, align 8, !tbaa !7 store i64 %n, i64* %n.addr, align 8, !tbaa !13 %0 = bitcast %"class.thrust::zip_iterator.643"* %tmp to i8* call void @llvm.lifetime.start(i64 24, i8* %0) #5 %1 = load %"class.thrust::iterator_facade.644"*, %"class.thrust::iterator_facade.644"** %i.addr, align 8 %2 = bitcast %"class.thrust::iterator_facade.644"* %1 to %"class.thrust::zip_iterator.643"* %3 = bitcast %"class.thrust::zip_iterator.643"* %tmp to i8* %4 = bitcast %"class.thrust::zip_iterator.643"* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 1, i1 false) %5 = bitcast %"class.thrust::zip_iterator.643"* %tmp to %"class.thrust::iterator_facade.644"* %6 = load i64, i64* %n.addr, align 8, !tbaa !13 %call = call dereferenceable(24) %"class.thrust::zip_iterator.643"* @_ZN6thrust15iterator_facadeINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS2_IS7_jS7_SK_SK_SK_SK_SK_SK_SK_EESE_NS_27random_access_traversal_tagENS3_28tuple_of_iterator_referencesINS_16device_referenceIS7_EENS_9referenceIjSG_SF_EENSS_IS7_SI_SF_EESK_SK_SK_SK_SK_SK_SK_EElEpLEl(%"class.thrust::iterator_facade.644"* %5, i64 %6) %7 = bitcast %"class.thrust::zip_iterator.643"* %agg.result to i8* %8 = bitcast %"class.thrust::zip_iterator.643"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 24, i32 8, i1 false) %9 = bitcast %"class.thrust::zip_iterator.643"* %tmp to i8* call void @llvm.lifetime.end(i64 24, i8* %9) #5 ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEEjSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %a2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %a3, i32* dereferenceable(4) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %a4.addr = alloca i32*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.652", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.643"* %a2, %"class.thrust::zip_iterator.643"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.650"* %a3, %"struct.thrust::detail::wrapped_function.650"** %a3.addr, align 8, !tbaa !7 store i32* %a4, i32** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %a3.addr, align 8 %3 = load i32*, i32** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_(%"class.thrust::tuple.652"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.643"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %2, i32* dereferenceable(4) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* %agg.result, %"class.thrust::tuple.652"* dereferenceable(48) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.657"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.659"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEEjSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.658"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEEjSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.661"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEEjEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_(%"class.thrust::tuple.652"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.643"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %t2, i32* dereferenceable(4) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %t3.addr = alloca i32*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.643"* %t1, %"class.thrust::zip_iterator.643"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.650"* %t2, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8 %3 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEEjSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKj(%"class.thrust::tuple.652"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.643"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %2, i32* dereferenceable(4) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEEjSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* %this, %"class.thrust::tuple.652"* dereferenceable(48) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"*, align 8 %args.addr = alloca %"class.thrust::tuple.652"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.652"* %args, %"class.thrust::tuple.652"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.651", %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.651", %"class.thrust::system::cuda::detail::bulk_::detail::closure.651"* %this1, i32 0, i32 2 %0 = load %"class.thrust::tuple.652"*, %"class.thrust::tuple.652"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.652"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.652"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 48, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEEjSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKj(%"class.thrust::tuple.652"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.643"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %t2, i32* dereferenceable(4) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.652"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %t3.addr = alloca i32*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.652"* %this, %"class.thrust::tuple.652"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.643"* %t1, %"class.thrust::zip_iterator.643"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.650"* %t2, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.652"*, %"class.thrust::tuple.652"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.652"* %this1 to %"struct.thrust::detail::cons.653"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IjSO_EEEEEEEC2IKS8_KSQ_KS11_KjKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.653"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IjSO_EEEEEEEC2IKS8_KSQ_KS11_KjKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.653"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %t2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %t3, i32* dereferenceable(4) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.653"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %t4.addr = alloca i32*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.653"* %this, %"struct.thrust::detail::cons.653"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.643"* %t2, %"class.thrust::zip_iterator.643"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.650"* %t3, %"struct.thrust::detail::wrapped_function.650"** %t3.addr, align 8, !tbaa !7 store i32* %t4, i32** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.653"*, %"struct.thrust::detail::cons.653"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.653", %"struct.thrust::detail::cons.653"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.653", %"struct.thrust::detail::cons.653"* %this1, i32 0, i32 2 %3 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %t3.addr, align 8 %5 = load i32*, i32** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IjSK_EEEEEC2IKSM_KSX_KjKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.654"* %tail, %"class.thrust::zip_iterator.643"* dereferenceable(24) %3, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %4, i32* dereferenceable(4) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IjSK_EEEEEC2IKSM_KSX_KjKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.654"* %this, %"class.thrust::zip_iterator.643"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %t2, i32* dereferenceable(4) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.654"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %t3.addr = alloca i32*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.654"* %this, %"struct.thrust::detail::cons.654"** %this.addr, align 8, !tbaa !1 store %"class.thrust::zip_iterator.643"* %t1, %"class.thrust::zip_iterator.643"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.650"* %t2, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8, !tbaa !7 store i32* %t3, i32** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.654"*, %"struct.thrust::detail::cons.654"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.654", %"struct.thrust::detail::cons.654"* %this1, i32 0, i32 0 %0 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %t1.addr, align 8 %1 = bitcast %"class.thrust::zip_iterator.643"* %head to i8* %2 = bitcast %"class.thrust::zip_iterator.643"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 24, i32 8, i1 false) %tail = getelementptr inbounds %"struct.thrust::detail::cons.654", %"struct.thrust::detail::cons.654"* %this1, i32 0, i32 1 %3 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8 %4 = load i32*, i32** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESC_EEEEvEENS1_IjNS_9null_typeEEEEC2IKSF_KjKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.655"* %tail, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %3, i32* dereferenceable(4) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS0_16wrapped_functionINS0_24binary_transform_functorINS_6system6detail7generic6detail12new_value_ifINS_6negateIjEENS_4pairIssEESC_EEEEvEENS1_IjNS_9null_typeEEEEC2IKSF_KjKSG_SM_SM_SM_SM_SM_SM_SM_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.655"* %this, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %t1, i32* dereferenceable(4) %t2, %"struct.thrust::null_type"* dereferenceable(1) %t3, %"struct.thrust::null_type"* dereferenceable(1) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.655"*, align 8 %t1.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %t2.addr = alloca i32*, align 8 %t3.addr = alloca %"struct.thrust::null_type"*, align 8 %t4.addr = alloca %"struct.thrust::null_type"*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.655"* %this, %"struct.thrust::detail::cons.655"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::detail::wrapped_function.650"* %t1, %"struct.thrust::detail::wrapped_function.650"** %t1.addr, align 8, !tbaa !7 store i32* %t2, i32** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t3, %"struct.thrust::null_type"** %t3.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t4, %"struct.thrust::null_type"** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.655"*, %"struct.thrust::detail::cons.655"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.655", %"struct.thrust::detail::cons.655"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::detail::wrapped_function.650"* %head to i8* %2 = bitcast %"struct.thrust::detail::wrapped_function.650"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 6, i32 2, i1 false), !tbaa.struct !418 %tail = getelementptr inbounds %"struct.thrust::detail::cons.655", %"struct.thrust::detail::cons.655"* %this1, i32 0, i32 1 %3 = load i32*, i32** %t2.addr, align 8 %4 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t3.addr, align 8 %5 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consIjNS_9null_typeEEC2IKjEERT_RKS2_S9_S9_S9_S9_S9_S9_S9_S9_(%"struct.thrust::detail::cons.159"* %tail, i32* dereferenceable(4) %3, %"struct.thrust::null_type"* dereferenceable(1) %4, %"struct.thrust::null_type"* dereferenceable(1) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail12choose_sizesINS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS9_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSE_INS_7pointerIjNS2_3tagENS_11use_defaultESM_EEEENSE_INSK_ISH_SL_SM_SM_EEEENS_9null_typeESR_SR_SR_SR_SR_SR_EEEENSD_16wrapped_functionINSD_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESH_SH_EEEEvEElSR_SR_SR_SR_SR_SR_EEEEEENSG_IiiEENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEET_(%"class.thrust::system::cuda::detail::bulk_::parallel_group"* byval align 8 %g, %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* byval align 8) #0 comdat { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %launcher = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669", align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %launcher to i8* call void @llvm.lifetime.start(i64 56, i8* %1) #5 call void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %launcher) %2 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %call = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %2) %3 = bitcast %"class.thrust::system::cuda::detail::bulk_::parallel_group"* %g to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %this_exec = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base", %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base"* %3, i32 0, i32 0 %4 = bitcast %"class.thrust::system::cuda::detail::bulk_::concurrent_group"* %this_exec to %"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %call1 = call i32 @_ZNK6thrust6system4cuda6detail5bulk_6detail12group_detail10group_baseINS3_5agentILm1EEELm0EE4sizeEv(%"class.thrust::system::cuda::detail::bulk_::detail::group_detail::group_base.151"* %4) %call2 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %launcher, i32 %call, i32 %call1) %5 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call2, i64* %5, align 4 %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %launcher to i8* call void @llvm.lifetime.end(i64 56, i8* %6) #5 %7 = bitcast %"struct.thrust::pair.82"* %retval to i64* %8 = load i64, i64* %7, align 4 ret i64 %8 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail12make_closureINS2_17for_each_n_detail15for_each_kernelENS4_6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElEENS4_7closureIT_NSB_IT0_T1_T2_T3_SQ_SQ_SQ_SQ_SQ_SQ_EEEES15_RKS16_RKS17_RKS18_RKS19_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %a1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %a2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %a3, i64* dereferenceable(8) %a4) #0 comdat { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %a1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %a2.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 %a3.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %a4.addr = alloca i64*, align 8 %agg.tmp = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %ref.tmp = alloca %"class.thrust::tuple.665", align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %a1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.643"* %a2, %"class.thrust::zip_iterator.643"** %a2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.650"* %a3, %"struct.thrust::detail::wrapped_function.650"** %a3.addr, align 8, !tbaa !7 store i64* %a4, i64** %a4.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %a1.addr, align 8 %1 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %a2.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %a3.addr, align 8 %3 = load i64*, i64** %a4.addr, align 8 call void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_(%"class.thrust::tuple.665"* sret %ref.tmp, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.643"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %2, i64* dereferenceable(8) %3) call void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* %agg.result, %"class.thrust::tuple.665"* dereferenceable(48) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %this) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* call void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %0) ret void } ; Function Attrs: uwtable define linkonce_odr i64 @_ZN6thrust6system4cuda6detail5bulk_6detail13cuda_launcherINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE12choose_sizesEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %this, i32 %requested_num_groups, i32 %requested_group_size) #0 comdat align 2 { entry: %retval = alloca %"struct.thrust::pair.82", align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %requested_group_size.addr = alloca i32, align 4 %group_size = alloca i32, align 4 %num_groups = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %requested_group_size, i32* %requested_group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"** %this.addr, align 8 %0 = bitcast i32* %group_size to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 store i32 0, i32* %group_size, align 4, !tbaa !11 %1 = load i32, i32* %group_size, align 4, !tbaa !11 %cmp = icmp eq i32 %1, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %3 = load i32, i32* %requested_group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %2, i32 %3) store i32 %call, i32* %group_size, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.then, %entry %4 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %num_groups, align 4, !tbaa !11 %5 = load i32, i32* %num_groups, align 4, !tbaa !11 %cmp2 = icmp eq i32 %5, 0 br i1 %cmp2, label %if.then3, label %if.end5 if.then3: ; preds = %if.end %6 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher.669"* %this1 to %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %7 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 %8 = load i32, i32* %group_size, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %6, i32 %7, i32 %8) store i32 %call4, i32* %num_groups, align 4, !tbaa !11 br label %if.end5 if.end5: ; preds = %if.then3, %if.end %9 = load i32, i32* %num_groups, align 4, !tbaa !11 %10 = load i32, i32* %group_size, align 4, !tbaa !11 %call6 = call i64 @_ZN6thrust9make_pairIiiEENS_4pairIT_T0_EES2_S3_(i32 %9, i32 %10) %11 = bitcast %"struct.thrust::pair.82"* %retval to i64* store i64 %call6, i64* %11, align 4 %12 = bitcast i32* %num_groups to i8* call void @llvm.lifetime.end(i64 4, i8* %12) #5 %13 = bitcast i32* %group_size to i8* call void @llvm.lifetime.end(i64 4, i8* %13) #5 %14 = bitcast %"struct.thrust::pair.82"* %retval to i64* %15 = load i64, i64* %14, align 4 ret i64 %15 } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEEC2Ev(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8 %0 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this1 to %"class.thrust::system::cuda::detail::bulk_::detail::triple_chevron_launcher.671"* %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this1, i32 0, i32 0 call void @_ZN6thrust6system4cuda6detail5bulk_6detail17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* sret %m_device_properties) ret void } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_group_sizeEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this, i32 %requested_size) #0 comdat align 2 { entry: %retval = alloca i32, align 4 %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, align 8 %requested_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %attr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %cleanup.dest.slot = alloca i32 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8, !tbaa !1 store i32 %requested_size, i32* %requested_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_size.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.start(i64 40, i8* %3) #5 %call = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %attr, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* %call) %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this1) %call3 = call i64 @_ZN6thrust6system4cuda6detail5bulk_6detail43block_size_with_maximum_potential_occupancyERKNS4_21function_attributes_tERKNS4_19device_properties_tE(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* dereferenceable(40) %attr, %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* dereferenceable(56) %call2) %conv = trunc i64 %call3 to i32 store i32 %conv, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 %4 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %attr to i8* call void @llvm.lifetime.end(i64 40, i8* %4) #5 br label %cleanup if.end: ; preds = %entry %5 = load i32, i32* %result, align 4, !tbaa !11 store i32 %5, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %if.end, %if.then %6 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = load i32, i32* %retval, align 4 ret i32 %7 } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17choose_num_groupsEii(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this, i32 %requested_num_groups, i32 %group_size) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, align 8 %requested_num_groups.addr = alloca i32, align 4 %group_size.addr = alloca i32, align 4 %result = alloca i32, align 4 %subscription = alloca i32, align 4 %ref.tmp = alloca i32, align 4 %ref.tmp3 = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8, !tbaa !1 store i32 %requested_num_groups, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %group_size, i32* %group_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8 %0 = bitcast i32* %result to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %1 = load i32, i32* %requested_num_groups.addr, align 4, !tbaa !11 store i32 %1, i32* %result, align 4, !tbaa !11 %2 = load i32, i32* %result, align 4, !tbaa !11 %cmp = icmp eq i32 %2, 2147483647 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %3 = bitcast i32* %subscription to i8* call void @llvm.lifetime.start(i64 4, i8* %3) #5 %4 = load i32, i32* %group_size.addr, align 4, !tbaa !11 %call = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this1, i32 %4) store i32 %call, i32* %subscription, align 4, !tbaa !11 %5 = load i32, i32* %subscription, align 4, !tbaa !11 %call2 = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this1) %multiProcessorCount = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call2, i32 0, i32 5 %6 = load i32, i32* %multiProcessorCount, align 4, !tbaa !126 %mul = mul nsw i32 %5, %6 store i32 %mul, i32* %ref.tmp, align 4, !tbaa !11 %call4 = call i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this1) store i32 %call4, i32* %ref.tmp3, align 4, !tbaa !11 %call5 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %ref.tmp, i32* dereferenceable(4) %ref.tmp3) store i32 %call5, i32* %result, align 4, !tbaa !11 %7 = bitcast i32* %subscription to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i32, i32* %result, align 4, !tbaa !11 %9 = bitcast i32* %result to i8* call void @llvm.lifetime.end(i64 4, i8* %9) #5 ret i32 %8 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* noalias sret %agg.result, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* %kernel) #8 comdat { entry: %kernel.addr = alloca void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)*, align 8 %fun_ptr = alloca void ()*, align 8 %attributes = alloca %struct.cudaFuncAttributes, align 8 store void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* %kernel, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)** %kernel.addr, align 8, !tbaa !1 %0 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.start(i64 8, i8* %0) #5 %1 = load void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)*, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)** %kernel.addr, align 8, !tbaa !1 %2 = bitcast void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* %1 to void ()* store void ()* %2, void ()** %fun_ptr, align 8, !tbaa !1 %3 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.start(i64 48, i8* %3) #5 %4 = load void ()*, void ()** %fun_ptr, align 8, !tbaa !1 %call = call i32 @_ZL21cudaFuncGetAttributesIFvvEE9cudaErrorP18cudaFuncAttributesPT_(%struct.cudaFuncAttributes* %attributes, void ()* %4) call void @_ZN6thrust6system4cuda6detail5bulk_6detail14throw_on_errorE9cudaErrorPKc(i32 %call, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.34, i32 0, i32 0)) %constSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 0 %constSizeBytes1 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 1 %5 = load i64, i64* %constSizeBytes1, align 8, !tbaa !127 store i64 %5, i64* %constSizeBytes, align 8, !tbaa !129 %localSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 1 %localSizeBytes2 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 2 %6 = load i64, i64* %localSizeBytes2, align 8, !tbaa !131 store i64 %6, i64* %localSizeBytes, align 8, !tbaa !132 %maxThreadsPerBlock = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 2 %maxThreadsPerBlock3 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 3 %7 = load i32, i32* %maxThreadsPerBlock3, align 8, !tbaa !133 store i32 %7, i32* %maxThreadsPerBlock, align 8, !tbaa !134 %numRegs = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 3 %numRegs4 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 4 %8 = load i32, i32* %numRegs4, align 4, !tbaa !135 store i32 %8, i32* %numRegs, align 4, !tbaa !136 %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 4 %ptxVersion5 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 5 %9 = load i32, i32* %ptxVersion5, align 8, !tbaa !137 store i32 %9, i32* %ptxVersion, align 8, !tbaa !138 %sharedSizeBytes = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %agg.result, i32 0, i32 5 %sharedSizeBytes6 = getelementptr inbounds %struct.cudaFuncAttributes, %struct.cudaFuncAttributes* %attributes, i32 0, i32 0 %10 = load i64, i64* %sharedSizeBytes6, align 8, !tbaa !139 store i64 %10, i64* %sharedSizeBytes, align 8, !tbaa !140 %11 = bitcast %struct.cudaFuncAttributes* %attributes to i8* call void @llvm.lifetime.end(i64 48, i8* %11) #5 %12 = bitcast void ()** %fun_ptr to i8* call void @llvm.lifetime.end(i64 8, i8* %12) #5 ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() #1 comdat align 2 { entry: ret void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ } ; Function Attrs: nounwind uwtable define linkonce_odr dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8 %m_device_properties = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670", %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this1, i32 0, i32 0 ret %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %m_device_properties } ; Function Attrs: uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_(%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"* byval align 8 %f) #0 comdat { entry: %0 = bitcast %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"* %f to i8* %1 = call i32 @cudaSetupArgument(i8* %0, i64 ptrtoint (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"* getelementptr (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673", %"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"* null, i32 1) to i64), i64 0) %2 = icmp eq i32 %1, 0 br i1 %2, label %setup.next, label %setup.end setup.next: ; preds = %entry %3 = call i32 @cudaLaunch(i8* bitcast (void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEvT0_ to i8*)) br label %setup.end setup.end: ; preds = %setup.next, %entry ret void } ; Function Attrs: nounwind uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE19choose_subscriptionEi(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this, i32 %block_size) #1 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, align 8 %block_size.addr = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8, !tbaa !1 store i32 %block_size, i32* %block_size.addr, align 4, !tbaa !11 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8 %0 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this1) %maxThreadsPerMultiProcessor = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 3 %1 = load i32, i32* %maxThreadsPerMultiProcessor, align 4, !tbaa !141 %2 = load i32, i32* %block_size.addr, align 4, !tbaa !11 %div = sdiv i32 %1, %2 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %div, %cond.true ], [ 0, %cond.false ] ret i32 %cond } ; Function Attrs: uwtable define linkonce_odr i32 @_ZN6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE22max_physical_grid_sizeEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, align 8 %actual_limit = alloca i32, align 4 %ptx_version = alloca i32, align 4 %tmp = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", align 8 %ptx_limit = alloca i32, align 4 store %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8, !tbaa !1 %this1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"** %this.addr, align 8 %0 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %0) #5 %call = call dereferenceable(56) %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* @_ZNK6thrust6system4cuda6detail5bulk_6detail18cuda_launcher_baseILj0ENS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSF_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSK_INS_7pointerIjNS2_3tagENS_11use_defaultESS_EEEENSK_INSQ_ISN_SR_SS_SS_EEEENS_9null_typeESX_SX_SX_SX_SX_SX_EEEENSJ_16wrapped_functionINSJ_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESN_SN_EEEEvEElSX_SX_SX_SX_SX_SX_EEEEE17device_propertiesEv(%"struct.thrust::system::cuda::detail::bulk_::detail::cuda_launcher_base.670"* %this1) %maxGridSize = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t", %"struct.thrust::system::cuda::detail::bulk_::detail::device_properties_t"* %call, i32 0, i32 1 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %1 = load i32, i32* %arrayidx, align 4, !tbaa !11 store i32 %1, i32* %actual_limit, align 4, !tbaa !11 %2 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.start(i64 4, i8* %2) #5 %call2 = call void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* @_ZN6thrust6system4cuda6detail5bulk_6detail28triple_chevron_launcher_baseILj0ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEELb1EE23global_function_pointerEv() call void @_ZN6thrust6system4cuda6detail5bulk_6detail19function_attributesIPFvNS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm1EEELm0EEELm0EEENS4_7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINSG_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSL_INS_7pointerIjNS2_3tagENS_11use_defaultEST_EEEENSL_INSR_ISO_SS_ST_ST_EEEENS_9null_typeESY_SY_SY_SY_SY_SY_EEEENSK_16wrapped_functionINSK_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESO_SO_EEEEvEElSY_SY_SY_SY_SY_SY_EEEEEEEEENS4_21function_attributes_tET_(%"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* sret %tmp, void (%"class.thrust::system::cuda::detail::bulk_::detail::cuda_task.673"*)* %call2) %ptxVersion = getelementptr inbounds %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t", %"struct.thrust::system::cuda::detail::bulk_::detail::function_attributes_t"* %tmp, i32 0, i32 4 %3 = load i32, i32* %ptxVersion, align 8, !tbaa !138 store i32 %3, i32* %ptx_version, align 4, !tbaa !11 %4 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.start(i64 4, i8* %4) #5 store i32 0, i32* %ptx_limit, align 4, !tbaa !11 %5 = load i32, i32* %ptx_version, align 4, !tbaa !11 %cmp = icmp slt i32 %5, 30 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry store i32 65535, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.else: ; preds = %entry store i32 2147483647, i32* %ptx_limit, align 4, !tbaa !11 br label %if.end if.end: ; preds = %if.else, %if.then %call4 = call i32 @_ZN6thrust3minIiEET_RKS1_S3_(i32* dereferenceable(4) %actual_limit, i32* dereferenceable(4) %ptx_limit) %6 = bitcast i32* %ptx_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %6) #5 %7 = bitcast i32* %ptx_version to i8* call void @llvm.lifetime.end(i64 4, i8* %7) #5 %8 = bitcast i32* %actual_limit to i8* call void @llvm.lifetime.end(i64 4, i8* %8) #5 ret i32 %call4 } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust10make_tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS3_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENSA_16wrapped_functionINSA_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEElEENSA_17make_tuple_mapperIT_T0_T1_T2_SO_SO_SO_SO_SO_SO_E4typeERKS13_RKS14_RKS15_RKS16_(%"class.thrust::tuple.665"* noalias sret %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.643"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %t2, i64* dereferenceable(8) %t3) #8 comdat { entry: %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %t3.addr = alloca i64*, align 8 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.643"* %t1, %"class.thrust::zip_iterator.643"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.650"* %t2, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %1 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %t1.addr, align 8 %2 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8 %3 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEElSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKl(%"class.thrust::tuple.665"* %agg.result, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %0, %"class.thrust::zip_iterator.643"* dereferenceable(24) %1, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %2, i64* dereferenceable(8) %3) ret void } ; Function Attrs: nounwind uwtable define linkonce_odr void @_ZN6thrust6system4cuda6detail5bulk_6detail7closureINS2_17for_each_n_detail15for_each_kernelENS_5tupleINS4_6cursorILj0EEENS_12zip_iteratorINS8_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSD_INS_7pointerIjNS2_3tagENS_11use_defaultESL_EEEENSD_INSJ_ISG_SK_SL_SL_EEEENS_9null_typeESQ_SQ_SQ_SQ_SQ_SQ_EEEENSC_16wrapped_functionINSC_24binary_transform_functorINS0_6detail7generic6detail12new_value_ifINS_6negateIjEESG_SG_EEEEvEElSQ_SQ_SQ_SQ_SQ_SQ_EEEC2ES7_RKS14_(%"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* %this, %"class.thrust::tuple.665"* dereferenceable(48) %args) unnamed_addr #1 comdat align 2 { entry: %f = alloca %"struct.thrust::system::cuda::detail::for_each_n_detail::for_each_kernel", align 1 %this.addr = alloca %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"*, align 8 %args.addr = alloca %"class.thrust::tuple.665"*, align 8 store %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* %this, %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"** %this.addr, align 8, !tbaa !1 store %"class.thrust::tuple.665"* %args, %"class.thrust::tuple.665"** %args.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"*, %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"** %this.addr, align 8 %f2 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.664", %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* %this1, i32 0, i32 0 %args3 = getelementptr inbounds %"class.thrust::system::cuda::detail::bulk_::detail::closure.664", %"class.thrust::system::cuda::detail::bulk_::detail::closure.664"* %this1, i32 0, i32 1 %0 = load %"class.thrust::tuple.665"*, %"class.thrust::tuple.665"** %args.addr, align 8 %1 = bitcast %"class.thrust::tuple.665"* %args3 to i8* %2 = bitcast %"class.thrust::tuple.665"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 48, i32 8, i1 false) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust5tupleINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS_12zip_iteratorINS0_INS_6detail15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSA_INS_7pointerIjNS3_3tagENS_11use_defaultESI_EEEENSA_INSG_ISD_SH_SI_SI_EEEENS_9null_typeESN_SN_SN_SN_SN_SN_EEEENS9_16wrapped_functionINS9_24binary_transform_functorINS1_6detail7generic6detail12new_value_ifINS_6negateIjEESD_SD_EEEEvEElSN_SN_SN_SN_SN_SN_EC2ERKS7_RKSP_RKS10_RKl(%"class.thrust::tuple.665"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t0, %"class.thrust::zip_iterator.643"* dereferenceable(24) %t1, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %t2, i64* dereferenceable(8) %t3) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"class.thrust::tuple.665"*, align 8 %t0.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t1.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 %t2.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %t3.addr = alloca i64*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 %ref.tmp2 = alloca %"struct.thrust::null_type", align 1 %ref.tmp3 = alloca %"struct.thrust::null_type", align 1 %ref.tmp4 = alloca %"struct.thrust::null_type", align 1 %ref.tmp5 = alloca %"struct.thrust::null_type", align 1 %ref.tmp6 = alloca %"struct.thrust::null_type", align 1 store %"class.thrust::tuple.665"* %this, %"class.thrust::tuple.665"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.643"* %t1, %"class.thrust::zip_iterator.643"** %t1.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.650"* %t2, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8, !tbaa !7 store i64* %t3, i64** %t3.addr, align 8, !tbaa !7 %this1 = load %"class.thrust::tuple.665"*, %"class.thrust::tuple.665"** %this.addr, align 8 %0 = bitcast %"class.thrust::tuple.665"* %this1 to %"struct.thrust::detail::cons.666"* %1 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t0.addr, align 8 %2 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %t1.addr, align 8 %3 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %t2.addr, align 8 %4 = load i64*, i64** %t3.addr, align 8 call void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IlSO_EEEEEEEC2IKS8_KSQ_KS11_KlKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.666"* %0, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %3, i64* dereferenceable(8) %4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp2, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp3, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp4, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp5, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp6) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_6system4cuda6detail5bulk_6detail6cursorILj0EEENS1_INS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENSB_INS_7pointerIjNS4_3tagENS_11use_defaultESJ_EEEENSB_INSH_ISE_SI_SJ_SJ_EEEENS_9null_typeESO_SO_SO_SO_SO_SO_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINS2_6detail7generic6detail12new_value_ifINS_6negateIjEESE_SE_EEEEvEENS1_IlSO_EEEEEEEC2IKS8_KSQ_KS11_KlKSO_S1B_S1B_S1B_S1B_S1B_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.666"* %this, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* dereferenceable(1) %t1, %"class.thrust::zip_iterator.643"* dereferenceable(24) %t2, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %t3, i64* dereferenceable(8) %t4, %"struct.thrust::null_type"* dereferenceable(1) %t5, %"struct.thrust::null_type"* dereferenceable(1) %t6, %"struct.thrust::null_type"* dereferenceable(1) %t7, %"struct.thrust::null_type"* dereferenceable(1) %t8, %"struct.thrust::null_type"* dereferenceable(1) %t9, %"struct.thrust::null_type"* dereferenceable(1) %t10) unnamed_addr #8 comdat align 2 { entry: %this.addr = alloca %"struct.thrust::detail::cons.666"*, align 8 %t1.addr = alloca %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, align 8 %t2.addr = alloca %"class.thrust::zip_iterator.643"*, align 8 %t3.addr = alloca %"struct.thrust::detail::wrapped_function.650"*, align 8 %t4.addr = alloca i64*, align 8 %t5.addr = alloca %"struct.thrust::null_type"*, align 8 %t6.addr = alloca %"struct.thrust::null_type"*, align 8 %t7.addr = alloca %"struct.thrust::null_type"*, align 8 %t8.addr = alloca %"struct.thrust::null_type"*, align 8 %t9.addr = alloca %"struct.thrust::null_type"*, align 8 %t10.addr = alloca %"struct.thrust::null_type"*, align 8 %ref.tmp = alloca %"struct.thrust::null_type", align 1 store %"struct.thrust::detail::cons.666"* %this, %"struct.thrust::detail::cons.666"** %this.addr, align 8, !tbaa !1 store %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %t1, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8, !tbaa !7 store %"class.thrust::zip_iterator.643"* %t2, %"class.thrust::zip_iterator.643"** %t2.addr, align 8, !tbaa !7 store %"struct.thrust::detail::wrapped_function.650"* %t3, %"struct.thrust::detail::wrapped_function.650"** %t3.addr, align 8, !tbaa !7 store i64* %t4, i64** %t4.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t5, %"struct.thrust::null_type"** %t5.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t6, %"struct.thrust::null_type"** %t6.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t7, %"struct.thrust::null_type"** %t7.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t8, %"struct.thrust::null_type"** %t8.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t9, %"struct.thrust::null_type"** %t9.addr, align 8, !tbaa !7 store %"struct.thrust::null_type"* %t10, %"struct.thrust::null_type"** %t10.addr, align 8, !tbaa !7 %this1 = load %"struct.thrust::detail::cons.666"*, %"struct.thrust::detail::cons.666"** %this.addr, align 8 %head = getelementptr inbounds %"struct.thrust::detail::cons.666", %"struct.thrust::detail::cons.666"* %this1, i32 0, i32 0 %0 = load %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"*, %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"** %t1.addr, align 8 %1 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %head to i8* %2 = bitcast %"struct.thrust::system::cuda::detail::bulk_::detail::cursor"* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 1, i32 1, i1 false), !tbaa.struct !41 %tail = getelementptr inbounds %"struct.thrust::detail::cons.666", %"struct.thrust::detail::cons.666"* %this1, i32 0, i32 1 %3 = load %"class.thrust::zip_iterator.643"*, %"class.thrust::zip_iterator.643"** %t2.addr, align 8 %4 = load %"struct.thrust::detail::wrapped_function.650"*, %"struct.thrust::detail::wrapped_function.650"** %t3.addr, align 8 %5 = load i64*, i64** %t4.addr, align 8 %6 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t5.addr, align 8 %7 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t6.addr, align 8 %8 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t7.addr, align 8 %9 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t8.addr, align 8 %10 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t9.addr, align 8 %11 = load %"struct.thrust::null_type"*, %"struct.thrust::null_type"** %t10.addr, align 8 call void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5tupleINS0_15normal_iteratorINS_10device_ptrINS_4pairIssEEEEEENS4_INS_7pointerIjNS_6system4cuda6detail3tagENS_11use_defaultESF_EEEENS4_INSA_IS7_SE_SF_SF_EEEENS_9null_typeESK_SK_SK_SK_SK_SK_EEEENS1_INS0_16wrapped_functionINS0_24binary_transform_functorINSB_6detail7generic6detail12new_value_ifINS_6negateIjEES7_S7_EEEEvEENS1_IlSK_EEEEEC2IKSM_KSX_KlKSK_S15_S15_S15_S15_S15_S15_EERT_RT0_RT1_RT2_RT3_RT4_RT5_RT6_RT7_RT8_(%"struct.thrust::detail::cons.667"* %tail, %"class.thrust::zip_iterator.643"* dereferenceable(24) %3, %"struct.thrust::detail::wrapped_function.650"* dereferenceable(6) %4, i64* dereferenceable(8) %5, %"struct.thrust::null_type"* dereferenceable(1) %6, %"struct.thrust::null_type"* dereferenceable(1) %7, %"struct.thrust::null_type"* dereferenceable(1) %8, %"struct.thrust::null_type"* dereferenceable(1) %9, %"struct.thrust::null_type"* dereferenceable(1) %10, %"struct.thrust::null_type"* dereferenceable(1) %11, %"struct.thrust::null_type"* dereferenceable(1) %ref.tmp) ret void } ; Function Attrs: inlinehint uwtable define linkonce_odr void @_ZN6thrust6detail4consINS_12zip_iteratorINS_5